是否可以在 Gnome 中检索活动窗口进程/标题?

是否可以在 Gnome 中检索活动窗口进程/标题?

我需要一个解决方案来获取 Gnome 2 桌面上当前活动(聚焦)窗口信息。我最感兴趣的是运行该窗口的进程和窗口标题。

是否可以?

解决方案:

获取窗口标题:

xwininfo -root -children | grep $(printf '%x\n' $(xdotool getwindowfocus)) | grep -oEi '"[^"]+"' | head -1

获取进程名称:

ps -e | grep $(xdotool getwindowpid $(xdotool getwindowfocus)) | grep -v grep | awk '{print $4}'

或者:

cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm

答案1

就这么简单:

xdotool getactivewindow getwindowname

祝你好运,希望它对你有用!

答案2

您可以使用xdo工具,一个多功能的 X 窗口自动化工具。

focused_window_id=$(xdotool getwindowfocus)
active_window_id=$(xdotool getactivewindow)
active_window_pid=$(xdotool getwindowpid "$active_window_id")

(我不知道专注和主动之间有什么区别。)

(我想控制面板可以做到这一点,但显然不能。)

答案3

比OP的解决方案更简单(IMO)(即没有ps,grepawk),获取进程名称:

cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm

或者如果你想要行尾:

echo $(cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm)

答案4

尝试 xwininfo 命令,http://www.xfree86.org/4.2.0/xwininfo.1.html,它肯定会返回窗口标题,就进程而言,嗯......

X 为其分配了一个 ID,并成为窗口的父 PID,并且默认情况下也会隐藏它,因此,假设 Gnome 支持 NET_WM_PID,正如 2001 年的补丁所示,http://mail.gnome.org/archives/gtk-devel-list/2001-October/msg00238.html,然后我们可以回顾这篇文章,http://www.mail-archive.com/[电子邮件受保护]/msg05809.html,作者编写了一个简短的 C 程序来将 Window ID 转换为 PID,瞧。

相关内容