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
应该在官方存储库中可用:
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)
当然你也可以结合上面pstree
的xdotool
选项(感谢@rubo77 指出这一点!):
sleep 2; pstree -spaul $(xdotool getwindowpid "$(xdotool getwindowfocus)")
Run Code Online (Sandbox Code Playgroud)
资料来源:
https://unix.stackexchange.com/q/38867/29245
https://superuser.com/q/632979/170160