Как найти местоположение (на рабочем столе) окна в командной строке?

17

Я пытаюсь написать небольшой скрипт, который поможет управлять моими окнами с помощью быстрых клавиш.

Чтобы делать то, что я хочу, мне нужно найти текущее местоположение и размер «активного» (сфокусированного) окна. По местоположению я имею в виду координаты X, Y окна на рабочем столе, а по размеру я имею в виду высоту и ширину окна.

Есть ли утилита командной строки, которая может получить эту информацию?

    
задан TM. 07.01.2011 в 22:59
источник

2 ответа

21

Вы можете получить всю информацию для текущего активного окна, используя следующую команду:

xwininfo -id $(xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}')

или

xwininfo -id $(xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+)

Просто проанализируйте выходные данные для необходимых координат. Вот несколько полезных команд при взаимодействии с окнами:

  • xwininfo предоставит вам относительную и абсолютную геометрию.
  • xprop расскажет вам много информации, в том числе, если окно активно, но не геометрия
  • xdpyinfo также вы получите идентификатор активного окна, но не получите дополнительную информацию.
  • wmctrl предоставит вам список сведений о окнах и позволит вам выбрать активное окно для изменения, но не информацию.

Например, чтобы изменить заголовок активного окна на «Новое имя»:

wmctrl -r :ACTIVE: -N "New Name"

Или изменить положение активного окна:

wmctrl -r :ACTIVE: -e 0,20,20,200,400

Рассмотрим wmctrl , если вам нужно просто изменить что-то простое, например, геометрию окна. Рассмотрите возможность использования других сценариев, упомянутых выше, только если вы хотите делать другие более сложные вещи.

    
ответ дан Martin Owens -doctormo- 07.01.2011 в 23:20
источник
7

С помощью «xdotool» вы можете легко взаимодействовать с окнами, используя события клавиатуры или мыши.

Пример отправки последовательности ctrl-c в активное окно:

xdotool getwindowfocus key ctrl-c # Sends CTRL-C to the current window.

Если вам действительно нужна позиция окна:

eval $(xdotool getmouselocation --shell); echo $X $Y

Для получения дополнительных действий / параметров проверьте справочную страницу .

    
ответ дан João Pinto 07.01.2011 в 23:19