
Как получить идентификатор окна, находящегося в фокусе (активного), в шестнадцатеричном формате?
решение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' {}