2013-02-03 131 views
5

我在寫桌面。我已經通過Python瞭解了Qt和GTK +的基礎知識,但我不明白如何顯示完成的桌面。你如何使它成爲窗口管理器的根窗口,或者是否有一種顯示我不熟悉的桌面的方法?創建桌面窗口的桌面?

+0

看看這個命令:'wmctrl -k on'。它會顯示「桌面」,如果WM支持這樣的話。所以,如果你追蹤命令(可能進入WM),你會發現如何定義桌面的答案。 –

+0

你可以看看黑盒子的代碼(http://sourceforge.net/projects/blackboxwm/),它是一個非常簡單的Windows管理器。 –

回答

1

你不會讓它成爲根窗口。 X有一個你不能改變的根窗口。有許多方法可以做到你想要什麼

  • X根窗口

舊的方式是在桌面只是標準的X根窗口。圖標只是單獨的無邊界窗口。

  • 桌面窗口

現在大多數系統打開一個大窗口,並將其標記爲桌面窗口。然後,大多數窗口經理都知道永遠不要把它提升到任何其他窗口。 X根窗口仍然在後面,但它隱藏起來。這意味着你可以在這個窗口上做任何你想做的事,繪製它,包括圖標或者小工具,或者你的工具包可以做的任何事情。

如果您使用的是Gtk +,則可在GdkWindowTypeHint enum中找到相關信息,特別是GDK_WINDOW_TYPE_HINT_DESKTOP。該文件可以在這裏找到:GdkWindow

  • 排字

然而,有一個像桌面GNOME3或統一使用,這就是所謂的合成器重疊視窗更新的方式。當合成器運行時,覆蓋窗口將覆蓋系統上的所有窗口。然後由合成器在這個覆蓋圖上繪製窗口的實際內容。但是,覆蓋圖可以在此覆蓋窗口上繪製任何想要的內容。例如,在Gnome3中,當你進入窗口選擇器並且窗口排列成一個網格時,窗口並沒有真正的移動和縮小,合成器決定以這種方式繪製它們。實際上,窗戶仍處於他們以前的相同位置,但隱藏在這個覆蓋層下面。

這是一種非常先進的做事方式,當然不適合新手開發者。你可能想要專注於第二種方法。

+0

是否有基於Qt的解決方案? – Christopher

+0

我想象得如此。你需要問問他們 – iain