Yanıtlar:
wmctrl -lG
Size şöyle bir şey verecek:
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: ~
Bununla bunları yapabilirsiniz grep
ve cut
aşağı yapabilirsiniz , böylece geometri değerleriyle (sütun 3-6) kalırsınız.
Sütunların tam olarak ne olduğunu anlayabilmeniz için man sayfasını alıntılamak için :
-l
Pencere yöneticisi tarafından yönetilen pencereleri listeleyin. Her pencere için bir satır çıkar ve satır boşlukla ayrılmış sütunlara bölünür. İlk sütun her zaman onaltılık bir tamsayı olarak pencere kimliğini içerir ve ikinci sütun her zaman masaüstü numarasını içerir (yapışkan bir pencereyi tanımlamak için -1 kullanılır). -P seçeneği belirtilirse, bir sonraki sütun ondalık sayı olarak pencere için PID değerini içerir. -G seçeneği belirtilirse, dört tamsayı sütunu izler: x-ofseti, y-ofseti, genişlik ve yükseklik. Sonraki sütun her zaman istemci makine adını içerir. Satırın geri kalan kısmı pencere başlığını içerir (muhtemelen başlıkta birden çok boşluk bulunur).
Wmctrl doğrudan etkin pencere kimliği bulmak için herhangi bir seçenek olmadığına inanıyorum .
Birisi nasıl yapılacağını biliyorsa, bilmek istiyorum ..
Bu, aktif pencerenin boyutunu yazdıran birkaç komut dosyası olduğunu söyledi.
Bu: wmctrl + xdotool ... (sed kullanmıyor).
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
Bu: xwininfo + xdotool + sed
xwininfo
parçası 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
Veya tuşunu kullanın xwininfo
. Her ikisi de varsayılan olarak gelir, kurulum gerekmez
Her iki komut da belirli bir pencerenin seçilmesine izin vermek için imleci kare / çarpıya çevirir.
$ xprop _NET_WM_OPAQUE_REGION
_NET_WM_OPAQUE_REGION(CARDINAL) = 0, 0, 984, 377
$ xwininfo | awk -F ':' '/Width/ || /Height/{print $2}'
984
377
Alternatif olarak, komut satırındaki pencere XID biçiminde belirtilebilir
$ 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
Özellikle, xwininfo
bu AskUbuntu soruları gibi senaryolar için benim tarafımdan aktif olarak kullanıldı:
Kabuk komut dosyaları pencereleri bilmez veya umursamaz. En iyi ihtimalle bir terminalde çalışırlar (bir pencerede görüntülenebilir veya görüntülenmeyebilir). Terminalin genişliğini ve yüksekliğini karakterlerle almak istiyorsanız, stty yardımcı programını kullanın.
tput cols
Oldukça güzel buldum !
wmctrl
, konsoldan değil grafiksel ortam pencerelerinden bahsediyoruz.