Window-Manager
除了視窗管理器之外,如何計算打開的活動視窗的數量?
除了我正在使用的視窗管理器之外,我想計算打開的活動視窗的數量。我知道wmctrl可以做到這一點,但是,當我執行以下操作時:
wmctrl -l
在我使用 unity 作為視窗管理器的 Ubuntu 14.04 64 位桌面上,我得到的輸出是:
0x03c00002 0 stepup XdndCollectionWindowImp 0x03c00005 0 stepup unity-launcher 0x03c00008 0 stepup unity-panel 0x03c0000b 0 stepup unity-dash 0x03c0000c 0 stepup Hud 0x02c0000a 0 stepup Desktop 0x02e000b3 0 stepup How to count the number of active windows open irrespective of window manager? - Unix & Linux Stack Exchange - Mozilla Firefox 0x0340000c 0 stepup Terminal
但是,我想忽略 unity/gnome/KDE 等使用的視窗,只計算使用者自己打開的視窗。我該怎麼做?
沒有屬於視窗管理器或“自行打開”的視窗的正式定義。從技術上講,視窗管理器角色不需要任何視窗:它是桌面環境的其他部分(通常稱為小元件)具有視窗。視窗或應用程序上沒有屬性表明“這是桌面環境的一部分”。
您可以通過他們的班級執行
wmctrl -lx
並辨識您不關心的視窗。各種常見的桌面環境都用了哪些類我還沒查,根據需要填寫列表。wmctrl -lx | awk '$3 !~ /^(Unity-.*|Kwin|Boringstuff)$/'
或者,也許檢測非粘性視窗將符合您的要求。粘性視窗是顯示在所有工作區上的視窗。我不知道這是否適用於所有視窗管理器。
for w in $(wmctrl -l | awk '{print $1}'); do if ! xprop -id $w _NET_WM_STATE | grep -q _NET_WM_STATE_STICKY; then wmctrl -l -i $w fi done