找出鼠标下的应用程序

我经常遇到一个应用程序弹出一个问题,我想知道这个窗口属于哪个确切的应用程序,因为如果我在启动器中查看当前没有焦点的应用程序(图标右侧没有白色三角形)当我关注消息窗口时)

有没有办法找出开窗的归属?

使用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中的PID图像

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)") 

资料来源:

https://unix.stackexchange.com/q/38867/29245

http://www.linuxquestions.org/questions/debian-26/how-to-find-the-process-associated-with-a-top-level-x-window-907125/

https://superuser.com/q/632979/170160

您可以使用以下命令创建键盘快捷键:

 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" 

我试图为这最后一个命令创建一个键盘快捷键 (如果你需要它正常),但由于某种原因,这不起作用。