Как я могу найти расположение (на рабочем столе) окна в командной строке?
19
Я пытаюсь написать небольшой скрипт, который поможет управлять моими окнами с помощью сочетаний клавиш.
Для того, чтобы делать то, что я хочу, мне нужно найти текущее местоположение и размер «активного» (сфокусированного) окна. Под местоположением я подразумеваю координаты X, Y окна на рабочем столе, а под размером - высоту и ширину окна.
Есть ли утилита командной строки, которая может получить эту информацию?
Просто проанализируйте выходные данные для нужных вам координат. Вот некоторые полезные команды при взаимодействии с окнами:
xwininfo предоставит вам относительную и абсолютную геометрию.
xprop расскажет вам много информации, в том числе, если окно активно, но не его геометрия
xdpyinfo также даст вам идентификатор активного окна, но без дополнительной информации.
wmctrl выдаст вам список информации об окнах и позволит вам выбрать активное окно для модификации, но не информацию.
Например, чтобы изменить заголовок активного окна на «Новое имя»:
wmctrl -r :ACTIVE:-N "New Name"
Или изменить положение активного окна:
wmctrl -r :ACTIVE:-e 0,20,20,200,400
Подумайте wmctrl, нужно ли вам просто что-то изменить, например, геометрию окна. Попробуйте использовать другие скрипты, упомянутые выше, только если вы хотите делать другие более сложные вещи.
Я просто хотел бы отметить, что я получаю разные результаты при запуске второй команды. Первый работает так, как я ожидал.
ТМ.
1
Я использую Arch, но это может помочь кому-то здесь в будущем. 1-й не работал для меня, 2-й не предоставил правильные размеры, возможно, из-за WM. Но комбинация двух сработала. xwininfo -id $(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | grep -Eo "0x[0-9a-f]{2,}")
Sev
Благодарность! Но я согласен с первыми двумя комментариями. Вторая команда, xwininfo -id $(xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+)показывает мне дочернее окно (не имеет имени) моего терминала. Когда я просто xdpyinfo | grep focusполучаю focus: window 0x435b877, revert to Parent, 0x435b877 - это идентификатор окна, возвращаемого первой командой (которая работает для меня). Это на Trusty 14.04.1 LTS
nealmcb
8
С "xdotool" вы можете легко взаимодействовать с окнами, используя события клавиатуры или мыши.
Пример отправки CtrlCпоследовательности в активное окно:
xdotool getwindowfocus key ctrl+c # Sends CTRL+C to the current window.
xwininfo -id $(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | grep -Eo "0x[0-9a-f]{2,}")
xwininfo -id $(xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+)
показывает мне дочернее окно (не имеет имени) моего терминала. Когда я простоxdpyinfo | grep focus
получаюfocus: window 0x435b877, revert to Parent
, 0x435b877 - это идентификатор окна, возвращаемого первой командой (которая работает для меня). Это на Trusty 14.04.1 LTSС "xdotool" вы можете легко взаимодействовать с окнами, используя события клавиатуры или мыши.
Пример отправки CtrlCпоследовательности в активное окно:
Если вам действительно нужна позиция окна:
Для дополнительных действий / опций проверьте страницу справочника .
источник
Error: Invalid key sequence 'ctrl-c'
.