2010-03-12 124 views
3

我想在屏幕上打印Linux下頂層窗口的信息。X Window系統上的頂層窗口

我使用xlib函數。我成功地從根窗口輸出,以打印顯示所有元素的所有信息。

但我只需要頂層窗口。我沒有找到任何好的方法來過濾。

維基百科:

頂層窗口是完全根窗口的 直接子窗口。

有了這個定義,我有一些窗口如:gnome-session,seahorse-daemon,notify-osd或者圖標,我不想要它們。

我還發現一個功能:XmuClientWindow,但我不明白它的目標。

+0

那麼問題是什麼? XmuClientWindow的功能是什麼?還有別的嗎? – kazanaki 2010-03-16 10:36:15

+0

您正在獲取頂層窗口的列表。你需要確切地說明你想要的是哪一個。也許只有不屬於WM/DE的可見窗口。你可能想要分析它們的屬性。請參閱http://standards.freedesktop.org/wm-spec/1.4/ar01s05.html – 2015-10-21 05:35:04

回答

4

讓我們看看我是否正確理解你想要的東西。頂層窗口是根窗口的直接子窗口,或者是一些虛擬根窗口的窗口管理器 - 請參閱Root Window (Wikipedia),您似乎已經發現它。該文章還告訴你如何找到虛擬根窗口列表。您可以在根或虛擬根上使用XQueryTree來查找子窗口列表。

一旦你有一個清單,你可能需要應用大量的討厭的啓發,找到你感興趣的窗口。 XmuClientWindow會告訴你哪個應用程序窗口(如果有的話)與你的頂層窗口相關聯。應用程序創建窗口,窗口管理器reparent它們是頂級窗口的子窗口,它們創建窗口裝飾和事物(最大化按鈕,關閉按鈕,調整大小手柄)。從客戶端/應用程序窗口中讀取extended window manager hints可以告訴您是否正在處理特殊窗口(dock,panel等)。您可能還想查看應用程序窗口上的窗口管理器提示(XGetWMHints(3),XGetWMNormalHints(3),XGetWMSizeHints(3))以決定它是否令您感興趣 - 窗口管理器會創建大量瞬態窗口大概不關心。

對於通過頂層窗戶往外看一個例子見VirtualBox的客戶添置的seamless code

0
wmctrl -l 

這個簡單的命令將列出根目錄下的所有頂層窗口。