Неверный размер и перемещение wmctrl - зависит от приложения

При изменении размера и перемещении с wmctrlрезультат неверен и зависит от приложения.

Пример: на момент написания статьи у меня были запущены emacs, chromium, spotify и gnome-терминал

ws=$(wmctrl -d | grep "*" | awk '{print $1}')
n=$(wmctrl -l | awk '{print $2 ";" $1}' | grep ^$ws | wc -l)
windows=$(wmctrl -l | awk '{print $2 ";" $1}' | grep ^$ws | cut -d ";" -f 2)

window1=$(echo $windows | cut -d " " -f 1)
window2=$(echo $windows | cut -d " " -f 2)
window3=$(echo $windows | cut -d " " -f 3)
window4=$(echo $windows | cut -d " " -f 4)

for i in ${windows[@]} ; do
    wmctrl -ir $i -b remove,maximized_horz,maximized_vert
done

wmctrl -ir $window1 -e 1,0,0,960,540
wmctrl -ir $window2 -e 1,0,540,960,540
wmctrl -ir $window3 -e 1,960,0,960,540
wmctrl -ir $window4 -e 1,960,540,960,540

Сейчас, wmctrl -lG приводит к следующему (ненужная информация удалена):

width  height
952    540   emacs
960    540   chromium
954    529   gnome-terminal
960    540   Spotify

Запуск точно такого же кода для 4 окон терминала дает:

width  height
954    529   gnome-terminal
954    529   gnome-terminal
954    529   gnome-terminal
954    529   gnome-terminal

Все размеры неверны, но также разные приложения имеют разные размеры, в то время как все окна одного и того же приложения имеют одинаковый размер.

Ожидаемое:

960    540   emacs
960    540   chromium
960    540   gnome-terminal
960    540   Spotify

Я не могу найти какие-либо сообщения, обсуждающие именно эту проблему.

Вся помощь очень ценится!

1 ответ

Каждое окно имеет украшения (т.е. границы). Окно вашего gnome-терминала имеет границу шириной 6 пикселей слева и высоту 11 пикселей сверху (возможно, заголовок). Когда вы перемещаете окно, оно перемещает положение окна, исключая размер границы, но wmctrl -G Вывод показывает геометрию, включая размеры границ. Смотрите эту тему. Вы можете получить размер границы, используя магию xwininfo, как здесь.

Другие вопросы по тегам