创建桌面窗口的桌面?

5

我正在编写一个桌面应用程序。我已经通过Python了解了Qt和GTK+的基础知识,但我不知道如何显示完成的桌面应用程序。您如何将其设置为窗口管理器的根窗口,或者是否有其他我不熟悉的方法可以显示桌面应用程序?


看看这个命令:wmctrl -k on。如果 WM 支持,它将显示“桌面”。因此,如果您跟踪该命令(可能进入 WM),您将找到有关如何定义桌面的答案。 - Emanuel Berg
你可以查看黑盒子的代码(http://sourceforge.net/projects/blackboxwm/),它是一个非常简单的窗口管理器。 - Frederico Schardong
1个回答

1
你不能将它作为根窗口。X有一个根窗口,你无法更改。有许多方法可以实现你想要的效果。
- X根窗口
旧的方式是桌面只是标准的X根窗口。图标只是单独的无边框窗口。
- 桌面窗口
现在大多数系统会打开一个大窗口,并将其标记为桌面窗口。大多数窗口管理器知道永远不会将其置于其他窗口之上。X根窗口仍然在其后面,但它被隐藏了。这意味着你可以在此窗口上执行任何操作,绘制它,包括图标或小部件或任何其他工具包可以做的事情。
如果你正在使用Gtk+,则相关信息可以在GdkWindowTypeHint枚举中找到,特别是GDK_WINDOW_TYPE_HINT_DESKTOP。文档可以在这里找到:GdkWindow - 合成器
然而,像Gnome3或Unity这样的桌面环境采用了一种新的方式,称为组合器覆盖窗口。当组合器运行时,会有一个覆盖所有系统窗口的覆盖窗口。然后,由组合器在此覆盖上绘制窗口的实际内容。但是,覆盖层可以在此覆盖窗口上绘制任何它想要的东西。例如,在Gnome3中,当您进入窗口选择器并将窗口排列成网格时,窗口并没有真正移动和缩小,组合器只是决定以这种方式绘制它们。实际上,窗口仍然处于以前的位置,但被隐藏在这个覆盖层下面。
这是一种非常先进的方法,肯定不适合初学者开发者。您可能希望专注于第二种方法。

有基于Qt的解决方案吗? - Christopher
我想是这样的。你需要问他们。 - iain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接