2013-02-03 133 views
5

我在写桌面。我已经通过Python了解了Qt和GTK +的基础知识,但我不明白如何显示完成的桌面。你如何使它成为窗口管理器的根窗口,或者是否有一种显示我不熟悉的桌面的方法?创建桌面窗口的桌面?

+0

看看这个命令:'wmctrl -k on'。它会显示“桌面”,如果WM支持这样的话。所以,如果你追踪命令(可能进入WM),你会发现如何定义桌面的答案。 –

+0

你可以看看黑盒子的代码(http://sourceforge.net/projects/blackboxwm/),它是一个非常简单的Windows管理器。 –

回答

1

你不会让它成为根窗口。 X有一个你不能改变的根窗口。有许多方法可以做到你想要什么

  • X根窗口

旧的方式是在桌面只是标准的X根窗口。图标只是单独的无边界窗口。

  • 桌面窗口

现在大多数系统打开一个大窗口,并将其标记为桌面窗口。然后,大多数窗口经理都知道永远不要把它提升到任何其他窗口。 X根窗口仍然在后面,但它隐藏起来。这意味着你可以在这个窗口上做任何你想做的事,绘制它,包括图标或者小工具,或者你的工具包可以做的任何事情。

如果您使用的是Gtk +,则可在GdkWindowTypeHint enum中找到相关信息,特别是GDK_WINDOW_TYPE_HINT_DESKTOP。该文件可以在这里找到:GdkWindow

  • 排字

然而,有一个像桌面GNOME3或统一使用,这就是所谓的合成器重叠视窗更新的方式。当合成器运行时,覆盖窗口将覆盖系统上的所有窗口。然后由合成器在这个覆盖图上绘制窗口的实际内容。但是,覆盖图可以在此覆盖窗口上绘制任何想要的内容。例如,在Gnome3中,当你进入窗口选择器并且窗口排列成一个网格时,窗口并没有真正的移动和缩小,合成器决定以这种方式绘制它们。实际上,窗户仍处于他们以前的相同位置,但隐藏在这个覆盖层下面。

这是一种非常先进的做事方式,当然不适合新手开发者。你可能想要专注于第二种方法。

+0

是否有基于Qt的解决方案? – Christopher

+0

我想象得如此。你需要问问他们 – iain