Как узнать pid активного (сфокусированного) окна?
Я хочу написать скрипт, в котором необходимо знать, активно ли пользователь использует программу [просматривая интернет с чем-то, скажем, firefox] или делать что-то еще [писать текст с чем-то, скажем, gedit]
В моем случае я хочу загружать большие файлы, но не хочу снижать скорость браузера. поэтому, когда я просматриваю активное окно Firefox, и я хочу остановить загрузку. Когда я читаю PDF активное окно имеет PDF Reader, и я хочу возобновить загрузку. Вот и все.
Наконец мне удалось получить PID активно сфокусированного окна с помощью xdotool
xprop -id `xdotool getwindowfocus` | grep '_NET_WM_PID' | grep -oE '[[:digit:]]*
Вы можете установить wmctrl, а затем использовать его для отображения всех окон, wmctrl -l
.
xdpyinfo
имеет скрытый в своем объемном выводе идентификатор окна с фокусом (см .: Какое окно имеет текущий фокус? ). При этом вы можете использовать xprop
для получения соответствующего PID.
xprop -id `xdpyinfo | grep -Eo 'window 0x[^,]+' | cut -d" " -f2` | grep PID
удар
xdotool getwindowpid `xdotool getactivewindow`
рыба
xdotool getwindowpid (xdotool getactivewindow)
Использование стека окон xdotool:
xdotool getactivewindow getwindowpid
Bash:
#!/bin/bash
set -e
WINDOW_PID=$(xdotool getactivewindow getwindowpid)
...