Menentukan geometri X windows dalam koordinat yang diperoleh dari wmctrl

9

Dalam dokumentasi X saya membaca bahwa Width, Height, Xpositiondan Ypositionkoordinat harus ditentukan dalam karakter terminal saat menggunakan:

gnome-terminal --geometry=WidthxHeight+Xposition+Yposition

Jika saya menggunakan input koordinat yang saya dapatkan dari wmctrl -lGoutput (tidak yakin apakah wmctrlmenggunakan piksel, karakter terminal atau sesuatu yang berbeda sebagai unit geometris), saya tidak mendapatkan hasil yang diharapkan. Yakni koordinat geometri yang dihasilkan oleh wmctrl -lGdan yang dapat ditentukan pengguna dengan gnome-terminal --geometryternyata berbeda.

Adakah yang saya lakukan salah? Adakah pikiran?

Terima kasih

Amelio Vazquez-Reina
sumber

Jawaban:

17

The --geometrypilihan untuk gnome-terminalbenar-benar diukur dalam karakter, bukan piksel. Misalnya, untuk mendapatkan terminal 80 kolom yang tingginya hanya 10 baris, Anda dapat meluncurkan gnome-terminalseperti ini:

gnome-terminal --geometry 80x10

Terminal akan mengubah ukuran dengan penambahan ukuran karakter font, yang dikomunikasikan ke Xserver menggunakan WM_NORMAL_HINTS. Anda dapat memeriksa ini menggunakan xpropperintah. Sebagai contoh, di sini saya menemukan id jendela Terminal, dan bertanya xprop tentang hal itu:

$ wmctrl -lG | tail -n1
0x06400021  0 592  314  580  338  myhostname kees@myhostname: ~
$ xprop -id 0x6400021
...
WM_NORMAL_HINTS(WM_SIZE_HINTS):
        program specified minimum size: 48 by 16
        program specified resize increment: 7 by 14
        program specified base size: 20 by 2
        window gravity: NorthWest
...

Dalam kasus di atas, ukuran font adalah 7 kali 14 piksel. Jadi, jika saya menginginkan Terminal 70 x 140 piksel, saya bisa menjalankannya gnome-terminal --geometry 10x10(walaupun itu akan menjadi 20 x 2 piksel lebih besar dari itu berdasarkan pada dekorasi window manager, dll, seperti yang terlihat dalam "ukuran dasar spesifik" di atas).

Kees Cook
sumber