有沒有辦法強制gtk.Window對象忽略窗口管理器的show/hide命令,如「iconify」和「show desktop?」。PyGTK中的持久化窗口
我試圖創建一個持久化窗口,堅持桌面,當桌面暴露時不會消失與所有其他窗口。
編輯:我想我特別想知道是,是否有可能重現應用,如碼頭,桌面小工具,系統托盤等使用PyGTK的發現行爲?
有沒有辦法強制gtk.Window對象忽略窗口管理器的show/hide命令,如「iconify」和「show desktop?」。PyGTK中的持久化窗口
我試圖創建一個持久化窗口,堅持桌面,當桌面暴露時不會消失與所有其他窗口。
編輯:我想我特別想知道是,是否有可能重現應用,如碼頭,桌面小工具,系統托盤等使用PyGTK的發現行爲?
你已經倒退了;窗口管理員通過發送命令告訴窗口最小化,這不是窗口管理器。窗口管理器擁有這個窗口,如果它想停止映射一個窗口,它只會這樣做,而不要求窗口允許。
所以我會認爲答案是「不」。
然後我想我的問題是,更一般地說,使用PyGTK創建桌面小部件的最佳實踐方法是什麼? – Evan 2009-04-21 17:40:03
試穿GtkWindow
設置GdkWindowTypeHint
:
gtk_window_set_type_hint(the_window, GDK_WINDOW_TYPE_HINT_UTILITY);
還有不有你的窗口,尋呼機或任務欄列出,並把它顯示出來的所有桌面上的各種方法。請記住,所有這些行爲都取決於窗口管理器的支持。除非你使用的東西很古老,但這不應該成爲一個問題。
沒有收到一個「這是如何做到這一點」的答案並且成就了一點更多的研究,我可以說 - 據我所知 - 有沒有簡單的方法來實現這種功能與PyGTK的。最好的選擇是設置窗口管理器的提示,並讓它留給WM來做你想做的(希望)。
我認爲gtk_window_set_type_hint(window, GDK_WINDOW_TYPE_HINT_SPLASHSCREEN)
是你想要的。它也是GDK_WINDOW_TYPE_HINT_DOCK
,但是窗口仍然留在最重要的位置,並且無法將其發回。
從list of window type hints,只有當您單擊顯示桌面按鈕兩個仍顯示:
這兩導致您的窗口失去裝飾(即沒有邊框或標題欄),所以移動/調整大小取決於您的應用程序。 DESKTOP使窗口始終位於其他窗口的後面。 DOCK使它總是在前面。
選擇SPLASHSCREEN會爲您提供未點擊的窗口,當您單擊顯示桌面時仍然隱藏窗口。
如果你想要一個無國界的,固定的窗口,仍然顯示當用戶點擊「顯示桌面」使用:
window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK)
打電話之前window.show()。一旦窗口已顯示,你不能改變它的類型。
你爲什麼要這樣做?忽略隱藏所有窗口的用戶請求似乎是非常糟糕的做法。 – 2009-04-20 21:49:37
在建立一個類似於桌面組件,其中一個窗口管理器的「顯示桌面」功能,可以向其提供易於訪問的希望。也許嘗試爲此使用Window對象是個錯誤;我接受其他建議。 – Evan 2009-04-21 17:38:08