Bagaimana cara mendapatkan informasi jendela yang akurat (dimensi, dll.) Di Linux (X)?

22

Bagaimana saya bisa mendapatkan informasi jendela yang akurat di Linux? Saya tahu bahwa saya dapat menggunakan wmctrl untuk mendapatkan ukuran jendela, tetapi ukuran sebenarnya dari jendela dapat bervariasi karena dekorasi jendela. Saya memerlukan informasi dan metode berikut:

* precise window dimensions
* precise available screen space (excluding panels like gnome-panel)
* the ability to set a window to be a certain size, including decorations

apa jalan terbaik melakukan ini?

Terima kasih sebelumnya!

mellort
sumber
Jika Anda lebih tertarik pada sisi python, kami dapat memigrasikannya ke situs saudara kami tentang pemrograman, StackOverflow.com. Beri tahu kami.
Gnoupi
@Gnoupi: terima kasih, tapi ini sebenarnya adalah cross-post dari SO, karena pengguna menyarankan saya mungkin mendapatkan jawaban yang lebih baik di sini. Pertanyaan aslinya ada di stackoverflow.com/questions/3233660/… .
mellort
Ok aku paham. Dalam hal ini, saya pikir bagian python dari pertanyaan Anda dapat diedit. Jawaban pada SU kemungkinan besar akan menggunakan perintah lain, bukan pemrograman. Pertanyaan pada SO mungkin harus fokus pada menanyakan bagaimana melakukannya dengan python.
Gnoupi
Dapatkan dimensi jendela dengan dekorasi: unix.stackexchange.com/questions/14159/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

26

Ada beberapa program baris perintah yang mungkin membantu:

  • xwininfo: Ini memberi Anda ukuran jendela tidak termasuk dekorasi dan posisi absolut (ke layar) dan relatif (ke area untuk windows)
  • xdpyinfo: Ini memberi jauh lebih banyak informasi tentang perangkat layar Anda, daripada yang ingin Anda ketahui. Tetapi memiliki suatu tempat di output sesuatu seperti screen: #0diikuti oleh dimension: 1024x768.
Antwortgenossenschaft
sumber
Apakah ada cara untuk mendapatkan informasi termasuk dekorasi?
Victor
6

> Dimensi jendela yang tepat

Contoh berikut (akan bekerja setidaknya dalam sh, bash dan zsh) akan mencetak geometri jendela dengan dan tanpa bingkai untuk semua jendela dengan "KWrite" di suatu tempat dalam judul.

windows="$(wmiface findNormalWindows "KWrite" "" "" "" "" "")"
for window in $(echo $windows); do
{
  echo $window
  wmiface framePosition $window
  wmiface frameSize $window
  wmiface windowPosition $window
  wmiface windowSize $window
  echo
} done

> ruang layar tepat yang tersedia (tidak termasuk panel seperti gnome-panel)

xrandr

Sebagai contoh:

xrandr | head -n1 | cut -d, -f2 | cut -d" " -f3-5

Output dalam kasus saya:

4400 x 2560

Tidak yakin bagaimana mengecualikan panel - jika Anda memiliki lebih dari satu monitor, mereka bisa berada di tengah layar virtual, jadi geometri layar tanpa panel bisa lebih rumit daripada "ruang layar yang tersedia".

> kemampuan untuk mengatur jendela menjadi ukuran tertentu, termasuk dekorasi

wmiface setFrameGeometry $window $x $y $width $height

Baca wmiface README untuk perintah yang lebih banyak lagi.

Lissanro Rayen
sumber
2
wmiface tidak dikemas dengan semua distro (apa saja?). Saya dapat menginstal di Mint dengan menggunakan paket ubuntu dari sini: kde-apps.org/content/show.php?content=40425 README yang disebutkan dapat ditemukan di sini: gitorious.org/wmiface/wmiface/source/…
slinkp
Lihat bagian kedua dari komentar ini unix.stackexchange.com/a/156349/84607 untuk cara lain mendapatkan geometri lengkap termasuk dekorasi menggunakan kombinasi xwininfo, xdotool, dan xprop.
slinkp