Як отримати ідентифікатор вікна з xdotool Window Stack


12

Мені потрібен ідентифікатор вікна, яке активне або зосереджене. Я намагаюся використовувати xdotoolкоманду. Є команда:

xdotool getactivewindow

результат зберігається у вікні стека. Я хочу отримати ідентифікатор widnow з цього стека вікон. Командування

xdotool getactivewindow getwindowpid

мене не задовольняє. Я не хочу отримувати ідентифікатор вікна за id процесу.

Відповіді:


11

Я думаю xdotool getactivewindow, що ти хочеш - ти спробував?

Він друкує ідентифікатор вікна (з стека вікон), якщо в командному рядку немає додаткових підкоманд xdotool.

В xdotool getactivewindow getwindowpid, наприклад, getactivewindowпоміщає ідентифікатор в стеці вікна, і getwindowpidвикористовує цей ідентифікатор для запиту PID. Зауважте, що запуск цієї команди в терміналі завжди повертає ідентифікатор вікна терміналу, оскільки він активний. Для того, щоб отримати ідентифікатор з іншого вікна, спробуйте sleep 2s && xdotool getactivewindowвиберіть цікаве вікно протягом двох секунд.


Під час використання xdotoolінших інструментів для обробки вікон є ускладнення :

Хоча для xdotoolвиводу використовуються десяткові числа для вітрових ідентифікаторів, більшість інших інструментів використовують шістнадцяткові числа для виведення (вони зазвичай підтримують обидва для введення).

Наприклад, якщо ви знайдете вікно з xdotool getactivewindow, ви не знайдете результату у висновку xwininfo -root -tree, який перераховує всі вікна. Його потрібно перетворити спочатку в шістнадцяткове число:

$ xdotool getactivewindow                              
69206716
$ printf 0x%x 69206716                  
0x42002bc
$ xwininfo -root -tree | grep 0x42002bc
           0x42002bc (has no name): ("konsole" "Konsole")  1154x781+0+0  +1289+498


Перетворення десяткової у шістнадцяткову:

printf 0x%x 69206716

Перетворення шістнадцяткової у десяткову:

printf %i 0x42002bc

Я спробував xdotool getactivewindowкоманду і проблема полягає в тому, що він не друкує результат в терміналі. Це збереже результат у стеку вікон. Ця команда друкує деяку кількість, але це не ідентифікатор вікна (напр., 35651588)
Маріуш

Чому ви вважаєте, що 35651588 не є ідентифікатором вікна?
Волкер Зігель

Так, я думаю, що 35651588 не є ідентифікатором вікна. Ви можете побачити ідентифікатор windows за допомогою команди xwininfo, наприклад xwininfo -root -tree- ця команда друкує всі вікна та вікна, які мають інші типи нумерації.
Маріуш

1
xwininfoпоказує id вікна як шістнадцяткові числа, а xdotool показує десяткові числа, але це точно так само.
Volker Siegel

ти правий. 35651588 = 0x2200004. xwininfo -root -tree | grep 2200004 0x2200004 "user@host:~": ("gnome-terminal" "Gnome-terminal") 1680x974+0+26 +0+51
Маріуш

1

Ця команда працює для мене

xdotool key --window "$(xdotool getactivewindow)" F5

версія xdotool 3.20160805.1


xdotool getactivewindow key F5має дати такий самий результат
user3804598
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.