您没有将其设为根窗口。X 有一个您无法更改的根窗口。有很多种方法可以做你想做的事
旧的方法是桌面只是标准的 X 根窗口。图标只是单独的无边框窗口。
现在大多数系统都会打开一个大窗口,并将其标记为桌面窗口。大多数窗口管理器都知道永远不要将其提升到任何其他窗口之上。X 根窗口仍在其后面,但已隐藏。这意味着您可以在此窗口上做任何您想做的事情,绘制它,包括图标或小部件或您的工具包可以做的任何其他事情。
如果您使用 Gtk+,则可以在GdkWindowTypeHint枚举中找到相关信息,特别是GDK_WINDOW_TYPE_HINT_DESKTOP. 该文档可以在这里找到:GdkWindow
然而,Gnome3 或 Unity 等桌面使用了一种更新的方式,称为合成器覆盖窗口。当合成器运行时,会有一个覆盖窗口覆盖系统上的所有窗口。然后由合成器在该覆盖层上绘制窗口的实际内容。然而,覆盖层可以在此覆盖层窗口上绘制任何它想要的内容。例如,在 Gnome3 中,当您输入窗口选择器并且窗口将自己排列成网格时,窗口并没有真正移动和缩小,合成器只是决定以这种方式绘制它们。实际上,窗口仍处于原来的位置,但隐藏在该覆盖层之下。
这是一种非常先进的做事方式,当然不适合新手开发人员。您可能想重点关注第二种方法。