Инструмент для получения размеров окна

Мне нужен инструмент для получения ширины и высоты произвольного окна.

В идеале этот инструмент будет вычитать размер строки меню Ubuntu.

1
задан 18 December 2016 в 06:20

4 ответа

Вы можете использовать wmctrl -lG для получения списка всех открытых окон в таблице с форматом:

<window ID> <desktop ID> <x-coordinate> <y-coordinate> <width> <height> <client machine> <window title>

Пример вывода может выглядеть так:

$ wmctrl -lG
0x02a00002  0 -2020 -1180 1920 1080 MyHostName XdndCollectionWindowImp
0x02a00005  0 0    24   61   1056 MyHostName unity-launcher
0x02a00008  0 0    0    1920 24   MyHostName unity-panel
0x02a0000b  0 -1241 -728 1141 628  MyHostName unity-dash
0x02a0000c  0 -420 -300 320  200  MyHostName Hud
0x03a0000a  0 0    0    1920 1080 MyHostName Desktop
0x0400001d  0 61   24   1859 1056 MyHostName application development - A tool to get window dimensions - Ask Ubuntu - Mozilla Firefox
0x04200084  0 61   52   999  745  MyHostName Untitled Document 1 - gedit
11
ответ дан 23 May 2018 в 03:15

Я нашел xwininfo -all из https://unix.stackexchange.com/questions/14159/how-do-i-find-the-window-dimensions-and-position-accurately-including-decoration.[!d0 ]

Он работает, но я все еще открыт для более удобных решений => инструмент GUI реального времени.

9
ответ дан 23 May 2018 в 03:15
  • 1
    Я отправил ответ, но не заметил, что вы уже нашли xwininfo. Возможно, вам будет интересен сценарий, который я написал - он использует xwininfo, но с всплывающим окном графического интерфейса, см. Ниже. – Sergiy Kolodyazhnyy 18 December 2016 в 16:58

Можно попробовать:

xdotool search --name gnome-panel getwindowgeometry

Предполагая, что gnome-панель - это имя процесса панели инструментов ubuntu, но кто знает.

(может потребоваться sudo apt-get install xdotool)

Для импровизированного графического интерфейса, которое может потребоваться для дальнейшего улучшения, чтобы отображать только основные вещи:

zenity --text-info --filename=<(xprop)

Он изменит указатель на крест xprop, затем вы нажмете на это окно, и оно будет распечатывать информацию xprop в диалоговом окне GTK.

2
ответ дан 23 May 2018 в 03:15

xwininfo и его преимущества

Большая проблема с wmctrl и xdotool заключается в том, что эти инструменты необходимо установить - они по умолчанию не установлены на Ubuntu. Однако Ubuntu отправляется с xwininfo. Это простой инструмент, который предоставляет информацию о выбранном пользователем окне.

Простым использованием было бы ввести xwininfo | awk '/Width/||/Height/' (обратите внимание, что awk используется для фильтрации вывода) в терминале, и когда ваш курсор изменится на x, выберите любое окно графического интерфейса, которое вам нравится, и оно покажет свою информацию. Например:

$ xwininfo | awk '/Width/||/Height/'                
  Width: 602
  Height: 398

Таким образом, преимущества:

, он просто установлен по умолчанию, это просто текст - ничего необычного, и вы можете фильтровать и настраивать его по мере необходимости

Взятие xwininfo еще на один шаг - отображение свойств активного окна

Конечно, если вы открываете терминал 24/7, как и я, xwininfo - это все, что вам нужно. Некоторым пользователям может потребоваться сочетание клавиш. Сценарий ниже (который предназначен для привязки к сочетанию клавиш) позволяет отображать графическое всплывающее окно с информацией о текущем активном окне. Как видно на снимке экрана, он отображает информацию о заголовке окна, ширине и высоте.

Под капотом это не делает ничего особо впечатляющего. Он использует информацию из службы dbus и xwininfo и помещает ее в простое всплывающее окно. Исходный код приведен ниже. Помните, что применяются стандартные правила написания сценариев: убедитесь, что у него есть исполняемые разрешения с chmod +x, а при привязке к сокращению клавиатуры вы даете полный путь к файлу сценария как команду.

#!/bin/bash 

get_active_window()
{
    qdbus org.ayatana.bamf \
          /org/ayatana/bamf/matcher \
          org.ayatana.bamf.matcher.ActiveWindow
}

get_active_name()
{
    qdbus org.ayatana.bamf $1 \
          org.ayatana.bamf.view.Name
}

main()
{
    active_window=$(get_active_window)
    active_xid=$( awk -F '/' '{print $NF}' <<< "$active_window" )
    echo $active_xid
    active_title=$(get_active_name $active_window)
    dimensions=$(xwininfo -id "$active_xid" | awk '/Width/||/Height/')
    text="$active_title\n""$dimensions"
    zenity --info --text "$text" --width=200 --height=200
}

main $@

Используя индикатор верхней панели Unity для информации .

При написании своего ответа я понял, что это будет очень полезная функция для включения в один из моих существующих проектов - индикатор Ayatana. Этот индикатор позволяет отображать весь спектр информации о окнах графического интерфейса пользователя. В настоящее время все еще активно развивается. Информация о геометрии была добавлена ​​в и находится на пути к моему персональному PPA. И, конечно, он использует xwininfo, хотя несколько иначе.

мой персональный PPA

2
ответ дан 23 May 2018 в 03:15

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

Похожие вопросы: