找出鼠标下的应用程序
我经常遇到一个应用程序弹出一个问题,我想知道这个窗口属于哪个确切的应用程序,因为如果我在启动器中查看当前没有焦点的应用程序(图标右侧没有白色三角形)当我关注消息窗口时)
有没有办法找出开窗的归属?
使用xdotool
首先确保您的系统上有xdotool
:
sudo apt-get install xdotool
以下命令将打印当前焦点窗口的进程名称:
cat "/proc/$(xdotool getwindowpid "$(xdotool getwindowfocus)")/comm"
为了给自己更多时间来关注窗口/点击它,你可以预先设置一个小的睡眠持续时间:
sleep 5 && cat "/proc/$(xdotool getwindowpid "$(xdotool getwindowfocus)")/comm"
应在短时间后显示进程名称。
使用wininfo
Wininfo是一个图形实用程序,它显示有关窗口及其属性的各种信息,包括与窗口关联的PID(进程ID):
wininfo
应该在官方存储库中提供:
sudo apt-get install wininfo
确定窗口的PID后,您可以查找与其关联的进程名称。 有多种方法可以做到这一点,例如通过查看/proc
:
$ cat /proc/17002/comm gnome-terminal
这将是与PID 17002
相关联的进程名称。
一种更优雅的方法,允许检查进程树上下文,如@Rmano所示 :
$ pstree -a -s -l -p -u 17002 init,1 └─lightdm,1900 └─lightdm,3202 --session-child 12 19 └─lxsession,3307,glutanimate -s LXDE -e LXDE └─openbox,3362 --config-file /home/glutanimate/.config/openbox/lxde-rc.xml └─gnome-terminal,17002 ├─bash,1841 ├─bash,2332 ├─bash,2424 │ └─pstree,2484 -a -s -l -p -u 17002 ├─gnome-pty-helpe,1840 ├─{gnome-terminal},1835 ├─{gnome-terminal},1836 ├─{gnome-terminal},1842 └─{gnome-terminal},2269
当然你也可以将pstree
与上面的xdotool
选项结合起来(感谢@ rubo77指出这个!):
sleep 2; pstree -spaul $(xdotool getwindowpid "$(xdotool getwindowfocus)")
资料来源:
您可以使用以下命令创建键盘快捷键:
zenity --info --text $(xprop $win_id WM_CLASS | cut -d" " -f4-)
您可以使用xprop
获取所单击窗口的进程ID:
xprop $win_id _NET_WM_PID
然后用pstree
分析它:
pstree -spaul $(xprop $win_id _NET_WM_PID | cut -d" " -f3-)
您可以将其重定向到文本信息窗口
pstree -spaul $(xprop $win_id _NET_WM_PID | cut -d" " -f3-)|zenity --text-info --title "pstree of clicked Window"
我试图为这最后一个命令创建一个键盘快捷键 (如果你需要它正常),但由于某种原因,这不起作用。