Получить идентификатор активного окна в шестнадцатеричном, а не десятичном виде

Как получить идентификатор окна фокуса (активного) окна в шестнадцатеричном формате?

3 ответа

Попробуйте это взломать:

wmctrl -lp | grep $(xprop -root | grep _NET_ACTIVE_WINDOW | head -1 | \
    awk '{print $5}' | sed 's/,//' | sed 's/^0x/0x0/')

Например:

$ wmctrl -lp | grep $(xprop -root | grep _NET_ACTIVE_WINDOW | head -1 | \
>     awk '{print $5}' | sed 's/,//' | sed 's/^0x/0x0/')

0x07600006  0 19051  maythuxPC Gnome Terminal

0x07600006 - это шестнадцатеричное активное окно, которое является терминалом в моем случае.

Чтобы быть уверенным, давайте получим это в десятичном виде:

$ xdotool getactivewindow 
123731974

Теперь преобразуйте из десятичного в шестнадцатеричное:

$ printf 0x%x 123731974
0x7600006

Это то же самое.

Дает вам 3 секунды, чтобы изменить фокус окна и
печатает после этого шестнадцатеричный PID:

~$ sleep 3; printf 0x%x $(xdotool getactivewindow getwindowpid)

Используйте printf для преобразования десятичного числа в шестнадцатеричное. Например. чтобы получить идентификатор окна активного окна в шестнадцатеричном формате

      xdotool getactivewindow | xargs -I{} printf '%x\n' {}
Другие вопросы по тегам