Как получить точную информацию об окне (размеры и т. Д.) В Linux (X)?

22

Как я могу получить точную информацию об окнах в Linux? Я знаю, что могу использовать wmctrl, чтобы получить размер окна, но фактический размер окна может варьироваться в зависимости от оформления окна. Мне нужна следующая информация и методы:

* 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

Каков был бы лучший способ сделать это?

Заранее спасибо!

mellort
источник
Если вас больше интересует Python, мы можем перенести это на наш родственный сайт о программировании StackOverflow.com. Просто дайте нам знать.
Gnoupi
@Gnoupi: спасибо, но на самом деле это кросс-пост от SO, так как пользователь предположил, что я мог бы получить лучший ответ здесь. Оригинальный вопрос находится по адресу stackoverflow.com/questions/3233660/… .
Меллорт
да я вижу. В этом случае, я думаю, что Python часть вашего вопроса может быть отредактирована. Ответы на SU, скорее всего, будут использовать другие команды, а не программирование. Вопрос о SO, вероятно, должен сосредоточиться на том, чтобы спросить, как это сделать на python.
Gnoupi
Получите размер окна с украшениями: unix.stackexchange.com/questions/14159/…
Сиро Сантилли 事件 '中心 法轮功 六四 事件

Ответы:

26

Есть несколько программ командной строки, которые могут помочь:

  • xwininfo: Он получает размер окна, исключая оформление и абсолютную позицию (для экрана) и относительную (для области для окон)
  • xdpyinfo: Это дает гораздо больше информации о вашем экранном устройстве, чем вы когда-либо хотели бы знать. Но он имеет где-то на выходе что-то вроде screen: #0следующего dimension: 1024x768.
Antwortgenossenschaft
источник
Есть ли способ получить информацию, включая украшения?
Виктор
6

> точные размеры окна

Следующий пример (будет работать по крайней мере в sh, bash и zsh) будет печатать геометрию окна с рамкой и без рамки для всех окон с "KWrite" где-то в заголовке.

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

> точное доступное пространство экрана (за исключением панелей типа gnome-panel)

xrandr

Например:

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

Вывод в моем случае:

4400 x 2560

Не знаете, как исключить панели - если у вас более одного монитора, они могут быть даже в середине виртуального экрана, поэтому геометрия экрана без панелей может быть более сложной, чем «доступное пространство экрана».

> возможность установить окно определенного размера, в том числе декорации

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

Прочитайте wmiface README для еще большего количества возможных команд.

Лиссанро Райен
источник
2
wmiface не поставляется со всеми (любыми?) дистрибутивами. Мне удалось установить на Mint с помощью пакета ubuntu отсюда: kde-apps.org/content/show.php?content=40425 Упомянутый README можно найти здесь: gitorious.org/wmiface/wmiface/source/…
slinkp
Смотрите вторую часть этого комментария unix.stackexchange.com/a/156349/84607 для другого способа получить полную геометрию, включая украшения, используя комбинацию xwininfo, xdotool и xprop.
slinkp