我正在尝试构建一个窗口管理器(作为爱好项目)。我将基本任务栏实现为位于屏幕底部的窗口。不过,我可以在其上方升起其他窗户。理想情况下,任务栏无论如何都会保持在顶部。我认为每次它不在顶部时简单地提高它就可以了,但我读到它可能会导致两个窗口试图争夺顶部位置的问题。
是否有首选的 xlib 方法来确保任务栏保持在最上面的位置(并且所有窗口在被拖动时都位于其后面)?
答案1
为了解决这个问题,我决定禁止其他窗口尝试提升自己。当他们这样做时,我确保它们被提升并且任务栏随后立即被提升,如果他们发送重复的请求(试图保持在顶部)我只是忽略这些请求。
为了处理最大化和其他内容,我使用 display_width 和 display_height 变量来表示可用显示器的宽度和高度。以前是屏幕,现在是可用的显示器。可用显示器通过从显示器高度中减去任务栏高度来补偿底部的任务栏。