2013-03-26 40 views
5

聲明:我知道在這個主題上有一個非常相似的questionLinux:如何獲取所有可見窗口的列表

我想得到完全一樣的結果,NoozNooz42描述here。但mdma答案不符合我的需要,因爲我有興趣在Linux上做同樣的事情。最好用gnome,如果它很重要的話。因此,使用JNA和user32庫不是這裏的選項(或者是)。

任何建議都會很棒,我幾乎找不到任何關於該主題的內容。

P.S. 我發現的唯一的事情是wmctrl命令(我最終可以在java中調用並解析它)列出窗口,但不會提供任何關於z順序的信息。

更新: 這將是完美的,如果我可以得到通知/回調時,Z順序的變化。

回答

6

使用xprop,它顯示窗口屬性。在Z順序窗口的列表是在根窗口的屬性_NET_CLIENT_LIST_STACKING

xprop -root | grep '_NET_CLIENT_LIST_STACKING(WINDOW)' 

輸出應該是這樣的:

_NET_CLIENT_LIST_STACKING(WINDOW): window id # 0x2000003, 0x4000004, 
0x1c00004, 0x1c00030, 0x1c00033, 0x2e00004 

之後,你可以獲取特定的Windows更多信息:

xprop -id <id> 

xwininfo -id <id> 
+0

非常好的答案,謝謝! +1爲此,但我仍然希望純java解決方案 – 2013-03-26 14:46:45

+0

請看我對這個問題的更新。你知道什麼會給我一個關於z-順序變化的通知嗎? – 2013-03-26 14:55:29

+0

'xev -root'將顯示根窗口屬性中的所有更改。只需在_NET_CLIENT_LIST_STACKING之後進行過濾。 – 2013-03-26 15:00:47

相關問題