我正在写一个桌面。我已经通过Python了解了Qt和GTK +的基础知识,但我不明白如何显示完成的桌面。你如何使它成为Window Manager的根窗口,还是有一种方法来显示我不熟悉的桌面?
答案 0 :(得分:1)
你没有把它作为根窗口。 X有一个根窗口,您无法更改。有很多方法可以做你想要的事情
旧的方式是桌面只是标准的X根窗口。图标只是单独的无边框窗口。
现在大多数系统都会打开一个大窗口,并将其标记为桌面窗口。然后,大多数窗口管理器都知道永远不要将它提升到任何其X根窗口仍在其后面,但它是隐藏的。这意味着您可以在此窗口上执行任何操作,绘制它,包含图标或小部件或工具包可以执行的任何其他操作。
如果您使用的是Gtk +,则会在GdkWindowTypeHint
枚举中找到相关信息,特别是GDK_WINDOW_TYPE_HINT_DESKTOP
。可以在此处找到文档:GdkWindow
但是,有一种更新的方式,如Gnome3或Unity使用的桌面,称为Compositor Overlay Window。当合成器运行时,有一个覆盖窗口,覆盖系统上的所有窗口。然后由合成器在此叠加层上绘制窗口的实际内容。但是,叠加层可以在此叠加窗口上绘制任何所需的内容。例如,在Gnome3中,当你进入窗口选择器并且窗口将自己排列成网格时,窗口并没有真正移动和缩小,合成器刚刚决定以这种方式绘制它们。实际上,窗户仍处于以前的位置,但隐藏在此叠加层下。
这是一种非常先进的做事方式,当然也不适合初学者。你可能想要专注于第二种方法。