2009-04-20 42 views
1

有没有办法强制gtk.Window对象忽略窗口管理器的show/hide命令,如“iconify”和“show desktop?”。PyGTK中的持久化窗口

我试图创建一个持久化窗口,坚持桌面,当桌面暴露时不会消失与所有其他窗口。

编辑:我想我特别想知道是,是否有可能重现应用,如码头,桌面小工具,系统托盘等使用PyGTK的发现行为?

+1

你为什么要这样做?忽略隐藏所有窗口的用户请求似乎是非常糟糕的做法。 – 2009-04-20 21:49:37

+0

在建立一个类似于桌面组件,其中一个窗口管理器的“显示桌面”功能,可以向其提供易于访问的希望。也许尝试为此使用Window对象是个错误;我接受其他建议。 – Evan 2009-04-21 17:38:08

回答

2

你已经倒退了;窗口管理员通过发送命令告诉窗口最小化,这不是窗口管理器。窗口管理器拥有这个窗口,如果它想停止映射一个窗口,它只会这样做,而不要求窗口允许。

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

+0

然后我想我的问题是,更一般地说,使用PyGTK创建桌面小部件的最佳实践方法是什么? – Evan 2009-04-21 17:40:03

1

试穿GtkWindow设置GdkWindowTypeHint

gtk_window_set_type_hint(the_window, GDK_WINDOW_TYPE_HINT_UTILITY); 

还有不有你的窗口,寻呼机或任务栏列出,并把它显示出来的所有桌面上的各种方法。请记住,所有这些行为都取决于窗口管理器的支持。除非你使用的东西很古老,但这不应该成为一个问题。

0

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

0

我认为gtk_window_set_type_hint(window, GDK_WINDOW_TYPE_HINT_SPLASHSCREEN)是你想要的。它也是GDK_WINDOW_TYPE_HINT_DOCK,但是窗口仍然留在最重要的位置,并且无法将其发回。

1

list of window type hints,只有当您单击显示桌面按钮两个仍显示:

  • 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()。一旦窗口已显示,你不能改变它的类型。