找出鼠标下的应用程序

rub*_*o77 11 window-management

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

有没有办法找出一个打开的窗口的归属?

Glu*_*ate 12

使用 xdotool

首先确保xdotool在您的系统上可用:

sudo apt-get install xdotool
Run Code Online (Sandbox Code Playgroud)

以下命令将打印当前处于焦点的窗口的进程名称:

cat "/proc/$(xdotool getwindowpid "$(xdotool getwindowfocus)")/comm"
Run Code Online (Sandbox Code Playgroud)

为了让自己有更多时间聚焦窗口/单击它,您可以预先设置一个小的睡眠时间:

sleep 5 && cat "/proc/$(xdotool getwindowpid "$(xdotool getwindowfocus)")/comm"
Run Code Online (Sandbox Code Playgroud)

应在一小段时间后显示进程名称。


使用 wininfo

Wininfo 是一个图形实用程序,可显示有关窗口及其属性的各种信息,包括与窗口关联的 PID(进程 ID):

wininfo中PID的图像

wininfo 应该在官方存储库中可用:

sudo apt-get install wininfo
Run Code Online (Sandbox Code Playgroud)

确定窗口的 PID 后,您可以查找与之关联的进程名称。有多种方法可以做到这一点,例如通过查看/proc

$ cat /proc/17002/comm
gnome-terminal
Run Code Online (Sandbox Code Playgroud)

这将是与 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
Run Code Online (Sandbox Code Playgroud)

当然你也可以结合上面pstreexdotool选项(感谢@rubo77 指出这一点!):

sleep 2; pstree -spaul $(xdotool getwindowpid "$(xdotool getwindowfocus)")
Run Code Online (Sandbox Code Playgroud)

资料来源:

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

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

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