답변:
wmctrl -lG
당신에게 다음과 같은 것을 줄 것입니다 :
oli@bert:~$ wmctrl -lG
0x0384c0d5 -1 1590 1030 330 170 bert N/A
0x01200023 -1 0 0 3840 1200 bert x-nautilus-desktop
0x01000003 -1 3840 2352 1920 24 bert Bottom Expanded Edge Panel
0x01000028 -1 0 2352 1920 24 bert Bottom Expanded Edge Panel
0x0500003e 0 676 252 1404 1015 bert Chromium
0x02e00021 0 3860 160 1361 1084 bert Liferea
0x02000047 0 6650 940 506 683 bert Social broadcast messages
0x04600004 0 4546 460 1263 833 bert oli@bert: ~
이와 함께 할 수 있습니다 grep
그리고 cut
당신은 지오메트리 값 (열 3-6)로 남아 있습니다 그래서이 아래로.
맨 페이지 를 인용하여 열이 무엇인지 정확히 이해 하십시오 .
-엘
창 관리자가 관리하는 창을 나열하십시오. 각 창에 대해 한 줄이 출력되며, 줄은 공백으로 구분 된 열로 나뉩니다. 첫 번째 열은 항상 창 ID를 16 진 정수로 포함하고 두 번째 열은 항상 데스크탑 번호를 포함합니다 (-1은 고정 창을 식별하는 데 사용됨). -p 옵션을 지정하면 다음 열에 창의 PID가 10 진 정수로 포함됩니다. -G 옵션이 지정 되면 x-offset, y-offset, width 및 height와 같은 4 개의 정수 열이 따라 옵니다 . 다음 열에는 항상 클라이언트 시스템 이름이 포함됩니다. 줄의 나머지 부분에는 창 제목이 포함되어 있습니다 (제목에 공백이 여러 개있을 수 있음).
wmctrl에는 활성 창 ID를 직접 찾을 수있는 옵션 이 없습니다 .
누군가가 그것을하는 방법을 알고 있다면 알고 싶습니다..
즉, 활성 창의 크기를 인쇄하는 몇 가지 스크립트가 있습니다.
wmctrl + xdotool ... (sed를 사용하지 않음)입니다.
id=$(xdotool getactivewindow)
wmctrl -lpG | while read -a a; do w=${a[0]}; if (($((16#${w:2}))==id)) ; then echo -n "${a[5]} ${a[6]}"; break; fi; done
xwininfo + xdotool + sed입니다.
xwininfo
의 일부입니다 x11-utils
set $(xwininfo -id $(xdotool getactivewindow) \
|sed -n -e "s/^ \+Width: \([0-9]\+\).*/\1/p" \
-e "s/^ \+Height: \([0-9]\+\).*/\1/p")
echo -n "$1 $2"
xprop
또는을 사용하십시오 xwininfo
. 둘 다 기본적으로 제공되며 설치가 필요하지 않습니다.
두 명령 모두 특정 창을 선택할 수 있도록 커서를 사각형 / 십자로 바꿉니다.
$ xprop _NET_WM_OPAQUE_REGION
_NET_WM_OPAQUE_REGION(CARDINAL) = 0, 0, 984, 377
$ xwininfo | awk -F ':' '/Width/ || /Height/{print $2}'
984
377
또는 XID 형식으로 명령 줄에서 창을 지정할 수 있습니다
$ xprop _NET_WM_OPAQUE_REGION -id 83886090
_NET_WM_OPAQUE_REGION(CARDINAL) = 0, 0, 984, 377
$ xwininfo -id 83886090 | awk -F ':' '/Width/ || /Height/{print $2}'
984
377
특히 xwininfo
AskUbuntu 질문과 같이 scrips에 대해 적극적으로 사용되었습니다.
쉘 스크립트는 창을 알거나 신경 쓰지 않습니다. 기껏해야 터미널에서 실행됩니다 (이는 창에 표시되거나 표시되지 않을 수 있음). 문자의 터미널 너비와 높이를 얻으려면 stty 유틸리티를 사용하십시오.