21

Как я могу получить точную информацию об окнах в 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

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

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

2 ответа2

21

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

  • xwininfo: он получает размер окна, исключая оформление и абсолютную позицию (для экрана) и относительную (для области для окон)
  • xdpyinfo: это дает гораздо больше информации о вашем экранном устройстве, чем вы когда-либо хотели бы знать. Но где-то в выводе есть что-то вроде screen: #0 за которым следует dimension: 1024x768 .
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, чтобы узнать больше команд.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .