如何知道活动(焦点)窗口的 pid?
我想编写一个脚本,其中需要知道用户是否正在使用某个程序 [使用 Firefox 等浏览器浏览互联网] 或执行其他操作 [使用 gedit 等浏览器编写文本]
就我而言,我想下载大文件,但又不想影响浏览速度。所以当我浏览时,活动窗口是 Firefox,我想停止下载。当我阅读 pdf 时,活动窗口是 pdf 阅读器,我想恢复下载。就是这样。
答案1
最后我设法用 xdotool 获取了当前焦点窗口的 PID
xprop -id `xdotool getwindowfocus` | grep '_NET_WM_PID' | grep -oE '[[:digit:]]*$'
答案2
使用 xdotool 的窗口堆栈:
xdotool getactivewindow getwindowpid
重击:
#!/bin/bash
set -e
WINDOW_PID=$(xdotool getactivewindow getwindowpid)
...
答案3
xdpyinfo
在其大量的输出中隐藏着具有焦点的窗口的窗口 ID(参见:哪一个窗口具有当前焦点?)。这样,您就可以使用它xprop
来获取关联的PID。
xprop -id `xdpyinfo | grep -Eo 'window 0x[^,]+' | cut -d" " -f2` | grep PID
答案4
以下适用于 Gnome 43:
- 安装https://extensions.gnome.org/extension/4974/window-calls-extended/
- 运行
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell/Extensions/WindowsExt --method org.gnome.Shell.Extensions.WindowsExt.FocusPID | sed -E "s/\\('(.*)',\\)/\\1/g"
以获取焦点窗口的 PID 或使用其他方法。