Я думаю 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)