【问题标题】:Desktop creating a desktop window?桌面创建桌面窗口?
【发布时间】:2013-02-03 22:27:03
【问题描述】:

我正在写一个桌面。我已经通过 Python 了解了 Qt 和 GTK+ 的基础知识,但我不明白如何显示完成的桌面。怎么让它成为窗口管理器的根窗口,或者有什么方法可以显示我不熟悉的桌面?

【问题讨论】:

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

标签: desktop gtk qt


【解决方案1】:

你没有让它成为根窗口。 X 有一个您无法更改的根窗口。有很多方法可以做你想做的事

  • X 根窗口

以前的方法是桌面只是标准的 X 根窗口。图标只是单独的无边框窗口。

  • 桌面窗口

现在大多数系统都会打开一个大窗口,并将其标记为桌面窗口。然后,大多数窗口管理器都知道永远不会将其提升到任何其他窗口之上。 X 根窗口仍在其后面,但它是隐藏的。这意味着您可以在此窗口上做任何您想做的事情,在上面绘图,包括图标或小部件或您的工具包可以做的任何其他事情。

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

  • 合成器

不过,有一种更新的方式可供 Gnome3 或 Unity 等桌面使用,称为合成器叠加窗口。当合成器运行时,会有一个覆盖窗口覆盖系统上的所有窗口。然后由合成器在此叠加层上绘制窗口的实际内容。但是,覆盖可以在此覆盖窗口上绘制它想要的任何内容。例如,在 Gnome3 中,当您输入窗口选择器并且窗口将自己排列成网格时,窗口并没有真正移动和缩小,合成器只是决定以这种方式绘制它们。实际上,这些窗口仍处于与之前相同的位置,但隐藏在此叠加层之下。

这是一种非常先进的做事方式,当然不适合新手开发人员。您可能希望专注于第二种方法。

【讨论】:

  • 有基于 Qt 的解决方案吗?
  • 我想是的。你需要问他们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 2010-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多