1

有没有办法强制 gtk.Window 对象忽略窗口管理器的显示/隐藏命令,例如“iconify”和“显示桌面”?

我正在尝试创建一个固定在桌面上的持久窗口,当桌面暴露时,它不会与所有其他窗口一起消失。

编辑:我想我特别想知道的是是否可以使用 PyGTK 重现在应用程序中发现的行为,例如码头、桌面小部件、系统托盘等?

4

5 回答 5

2

你把它弄反了;不是窗口管理器通过发送命令来告诉窗口最小化。窗口管理器拥有该窗口,如果它想停止映射一个窗口,它会执行此操作,而无需请求该窗口的许可。

所以我认为答案是“不”。

于 2009-04-21T07:21:36.747 回答
1

尝试GdkWindowTypeHint设置GtkWindow

gtk_window_set_type_hint(the_window, GDK_WINDOW_TYPE_HINT_UTILITY);

还有多种方法可以让您的窗口不在寻呼机或任务栏中列出,并让它显示在所有桌面上。请记住,所有这些行为都取决于窗口管理器的支持。除非您使用非常旧的东西,否则这不应该造成问题。

于 2009-04-23T22:03:24.740 回答
1

窗口类型提示列表中,当您单击显示桌面按钮时,仍然只显示两个:

  • gtk.gdk.WINDOW_TYPE_HINT_DESKTOP
  • gtk.gdk.WINDOW_TYPE_HINT_DOCK

这两种情况都会导致您的窗口失去装饰(即没有边框或标题栏),因此移动/调整大小取决于您的应用程序。DESKTOP 使窗口始终位于其他窗口之后。DOCK 使它总是在前面。

选择 SPLASHSCREEN 会为您提供一个未装饰的窗口,当您单击显示桌面时该窗口仍然隐藏。

如果您想要一个在用户单击“显示桌面”时仍然显示的无边界、固定窗口,请使用:

window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK)

在调用 window.show() 之前。显示窗口后,您将无法更改其类型。

于 2013-10-08T18:07:54.703 回答
0

没有收到“这是如何做到这一点”的答案并且做了更多的研究,我可以说 - 据我所知 - 没有简单的方法可以使用 PyGTK 实现这种功能。最好的选择是设置窗口管理器提示并将其留给 WM 来做你想做的事情(希望如此)。

于 2009-06-23T02:40:24.667 回答
0

我想gtk_window_set_type_hint(window, GDK_WINDOW_TYPE_HINT_SPLASHSCREEN)这就是你想要的。它也是GDK_WINDOW_TYPE_HINT_DOCK,但随后窗口始终处于最重要的位置,您无法将其发送回去。

于 2011-03-29T14:23:44.253 回答