Я рекомендую приложение под названием XDoTool. Он поддерживает довольно много запросов, элементов управления и даже хуков.
> xdotool getwindowfocus # 29360135
> xdotool getwindowfocus getwindowpid # 12988
> xdotool getwindowfocus getwindowname # tilda
> xdotool getwindowfocus behave '%@' blur getmouselocation
# or focus, mouse-enter, etc.
x:514 y:317 screen:0 window:56623121
x:271 y:26 screen:0 window:56623121
...
Такие команды, как behave
принимают обратный вызов, который может быть встроенным, например getmouselocation
, или внешним, например exec notify-send 'focused window'
, exec zsh myscript.zsh
и т. Д., Однако вы хотите использовать его.
Редактировать - вы можете фокусироваться, используя xdotool windowfocus [options] [window]
, как в xdotool search --class firefox windowfocus
. В моем случае это вызывает ошибки, потому что Firefox отображается в виде пары дюжин «окон», но у всех одинаковый PID; это работает с правильным ID. Надеюсь, это начало.
Редактировать 2 - «идентификатор окна» - это десятичное представление указателя окна, например, от xprop :
> xprop -root _NET_ACTIVE_WINDOW
_NET_ACTIVE_WINDOW(WINDOW): window id # 0x1c00007, 0x0
> xdotool getwindowfocus
29360135
> printf '%d\n' '0x1c00007'
29360135