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

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

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

решение1

Попробуйте этот прием:

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

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

решение2

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

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

решение3

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

xdotool getactivewindow | xargs -I{} printf '%x\n' {}

Связанный контент