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