창 관리자 외에 열려 있는 활성 창 수를 어떻게 계산할 수 있나요?

창 관리자 외에 열려 있는 활성 창 수를 어떻게 계산할 수 있나요?

내가 사용하고 있는 창 관리자 외에 열려 있는 활성 창 수를 계산하고 싶습니다. 알아요제어판하지만 다음과 같은 경우에는 이렇게 할 수 있습니다.

wmctrl -l

Ubuntu 14.04 64비트 데스크탑에서 Unity를 창 관리자로 사용하면 다음과 같은 결과가 나타납니다.

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 등에서 사용하는 창은 무시하고 사용자가 직접 연 창만 계산하고 싶습니다. 나는 무엇을 해야 합니까?

답변1

창 관리자에 속하거나 "자체적으로 열리는" 창에 대한 공식적인 정의는 없습니다. 기술적으로 창 관리자 역할에는 창이 필요하지 않습니다. 데스크톱 환경(종종 위젯이라고 함)의 다른 부분에는 창이 있습니다. "이것은 데스크톱 환경의 일부입니다"라는 속성이 창이나 응용 프로그램에 없습니다.

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

관련 정보