Saya sudah mencoba mencari tahu ukuran jendela untuk digunakan dalam skrip kecil. Teknik saya saat ini digunakan wmctrl -lG
untuk mengetahui dimensi. Namun, masalahnya adalah ini:
Angka x dan y yang diberikannya adalah untuk bagian kiri atas dekorasi jendela, sedangkan tinggi dan lebar hanya untuk area konten. Ini berarti bahwa jika dekorasi jendela menambahkan 20px tinggi dan lebar 2px, wmctrl akan melaporkan jendela sebagai 640x480, bahkan jika itu membutuhkan 660x482 di layar. Ini masalah karena langkah script saya selanjutnya adalah menggunakan area itu untuk memberitahu ffmpeg untuk merekam layar. Saya ingin menghindari hardcoding dalam ukuran dekorasi jendela dari pengaturan saya saat ini.
Apa yang cocok adalah metode untuk mendapatkan ukuran dekorasi jendela sehingga saya dapat menggunakannya untuk mengetahui posisi area konten 640x480, atau cara untuk mendapatkan posisi area konten secara langsung, bukan pada cara dekorasi jendela. .
sumber
Jawaban:
Skrip berikut akan memberi Anda co-ords layar kiri atas dan ukuran jendela (tanpa hiasan apa pun). . . .
xwininfo -id $(xdotool getactivewindow)
berisi informasi yang cukup untuk Anda.sumber
xdotool getactivewindow
mengembalikan id jendela dari bingkai manajer jendela (yang mencakup dekorasi) daripada jendela klien yang terkandung di dalamnya.xdotool getactivewindow getwindowgeometry
Jawaban yang diterima dapat diperpanjang untuk mendapatkan seluruh jendela:
Meskipun mudah, ternyata tidak bekerja pada Unity di Ubuntu 14.04 karena info Relatif adalah semua 0. Saya bertanya Dapatkan dimensi jendela penuh (termasuk dekorasi) di Unity dan mendapat jawaban yang baik. Inilah cara saya menggunakan jawaban itu:
Metode kedua ini berfungsi baik di Unity dan Xfce, dan harus bekerja di Gnome juga.
sumber
aw=`xdotool getactivewindow`
ditambahkan di bagian atas untuk menghindari panggilan xwininfo. Ini bagus untuk diketahui karena saya mempertimbangkan untuk beralih ke Unity, di mana saya tidak bisa menjalankan wmiface tanpa segfaulting.aw
definisi yang hilang . Saya akan mengedit jawaban sekarang untuk menambahkan baris itu.h
. Tampaknya batang judul sudah termasuk dalam ketinggian yang berasal darixwininfo
.Cara yang lebih sederhana untuk mendapatkan ukuran dan posisi jendela:
sumber
Jawaban yang diterima secara eksplisit tidak termasuk dekorasi jendela. Bagi mereka yang masih mencari cara mendapatkan geometri termasuk semua dekorasi, sesuai dengan judul pertanyaan ini, Anda dapat menggunakan wmiface sesuai pertanyaan lain ini https://superuser.com/questions/164047/how-to-get-accurate-window -information-dimension-etc-in-linux-x . Contoh:
Ini mengembalikan geometri dan posisi relatif ke kiri atas seperti:
wmiface tampaknya tidak datang dengan semua distro linux (saya tidak menemukan paket menyediakannya di Mint atau Ubuntu) tetapi saya dapat menginstalnya dari paket di sini: http://kde-apps.org/content/show .php? content = 40425
Dan ia datang tanpa dokumen atau bahkan
--help
, tetapi README ada di sini:https://gitorious.org/wmiface/wmiface/source/ea941eeb2076124734f6a3d3079326c826b462d7:README
sumber
wmiface activeWindow
570x434 + 870 + 31 $ xdotool getwindowgeometryxdotool getactivewindow
Window 6291772 Posisi: 878,77 (layar: 0) Geometri: 562x407Menggunakan xdotool:
sleep 3s && xdotool getactivewindow
, Anda memiliki 3 detik untuk membuka jendela Andaxdotool getwindowgeometry $WINDOW_ID
xdotool getwindowgeometry -shell $WINDOW_ID
sumber
Menggabungkan jawaban pada halaman ini saya menggunakan ini:
Jalankan one-liner dan kemudian dalam 3 detik klik pada jendela yang Anda inginkan untuk posisi dan geometri.
sumber