Як я можу знайти розташування (на робочому столі) вікна в командному рядку?


19

Я намагаюся написати невеликий сценарій, щоб допомогти керувати своїми вікнами за допомогою комбінацій клавіш.

Для того, щоб робити те, що я хочу, мені потрібно вміти знайти поточне розташування та розмір "активного" (зосередженого) вікна. Під розташуванням я маю на увазі координати X, Y вікна на робочому столі, а за розміром - висоту та ширину вікна.

Чи є утиліта командного рядка, яка може отримати цю інформацію?

Відповіді:


22

Ви можете отримати всю інформацію про поточне активне вікно, скориставшись цією командою:

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

або

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

Просто розберіть висновок для потрібних вам координат. Ось кілька корисних команд при взаємодії з Windows:

  • xwininfo надасть вам відносну та абсолютну геометрію.
  • xprop повідомить вам багато інформації, зокрема, якщо вікно активне, але це не геометрія
  • xdpyinfo також отримає вам ідентифікатор активного вікна, але додаткової інформації немає.
  • wmctrl отримає вам список інформації про Windows та дозволить вибрати активне вікно для модифікації, але не інформацію.

Наприклад, щоб змінити назву активного вікна на "Нове ім'я":

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

Або змінити положення активного вікна:

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

Поміркуйте, wmctrlчи потрібно просто змінити щось просте, наприклад геометрію вікна. Спробуйте використовувати інші згадані вище сценарії, лише якщо ви хочете робити інші складніші речі.


1
Я просто хотів би зазначити, що я отримую різні результати при виконанні другої команди. Перший працює так, як я очікував.
ТМ.

1
Я використовую Arch, але це може допомогти комусь тут у майбутньому. Перший для мене не працював, другий не надав правильних розмірів, можливо, завдяки WM. Але поєднання двох працювало. 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
nealmcb

8

За допомогою "xdotool" ви можете легко взаємодіяти з Windows за допомогою подій клавіатури чи миші.

Приклад надсилання CtrlCпослідовності в активне вікно:

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

Якщо вам справді потрібне положення вікна:

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

Щоб отримати додаткові дії / варіанти, перегляньте основну сторінку .


Цікаво, але я просто отримую Error: Invalid key sequence 'ctrl-c'.
l0b0
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.