Jawaban:
wmctrl -lG
Akan memberi Anda sesuatu seperti:
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: ~
Dengan ini, Anda dapat grep
dan cut
turun pada ini sehingga Anda dibiarkan dengan nilai-nilai geometri (kolom 3-6).
Mengutip halaman manual sehingga Anda mengerti persis apa kolomnya:
-l
Daftar jendela yang dikelola oleh manajer jendela. Satu baris adalah output untuk setiap jendela, dengan garis dipecah menjadi kolom-kolom yang dipisahkan ruang. Kolom pertama selalu berisi identitas jendela sebagai bilangan bulat heksadesimal, dan kolom kedua selalu berisi nomor desktop (-1 digunakan untuk mengidentifikasi jendela lengket). Jika opsi -p ditentukan, kolom berikutnya akan berisi PID untuk jendela sebagai bilangan bulat desimal. Jika opsi -G ditentukan maka empat kolom bilangan bulat akan mengikuti: x-offset, y-offset, lebar dan tinggi. Kolom berikutnya selalu berisi nama mesin klien. Sisa baris berisi judul jendela (mungkin dengan beberapa spasi di judul).
I belive wmctrl tidak memiliki opsi untuk menemukan id jendela aktif secara langsung.
Jika seseorang tahu bagaimana melakukannya, saya tertarik untuk tahu ..
Yang mengatakan, berikut adalah beberapa skrip yang mencetak ukuran jendela aktif.
Ini adalah: wmctrl + xdotool ... (tidak menggunakan 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
Ini adalah: xwininfo + xdotool + sed
xwininfo
bagian dari 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"
Gunakan xprop
atau xwininfo
. Keduanya datang secara default, tidak perlu menginstal
Kedua perintah mengubah kursor menjadi kuadrat / silang untuk memungkinkan memilih jendela tertentu.
$ xprop _NET_WM_OPAQUE_REGION
_NET_WM_OPAQUE_REGION(CARDINAL) = 0, 0, 984, 377
$ xwininfo | awk -F ':' '/Width/ || /Height/{print $2}'
984
377
Atau, seseorang dapat menentukan jendela pada baris perintah dalam bentuk 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
Secara khusus,, xwininfo
telah digunakan secara aktif oleh saya untuk skrip, seperti pada pertanyaan AskUbuntu ini:
Script shell tidak tahu atau tidak peduli tentang windows. Paling-paling mereka berjalan di terminal (yang mungkin atau mungkin tidak ditampilkan di jendela). Jika Anda ingin mendapatkan lebar dan tinggi terminal dalam karakter, gunakan utilitas stty.
Saya menemukan tput cols
bekerja dengan sangat baik!
wmctrl
, kita tidak berbicara tentang konsol tetapi windows environment grafis.