2009-04-20 70 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()。一旦窗口已顯示,你不能改變它的類型。