获取窗口后面的进程名称

获取窗口后面的进程名称

我正在尝试编写一个脚本来检查 Spotify 是否已关闭。我尝试了以下方法来打印打开的 Spotify 窗口的数量,但不起作用。

wmctrl -l | grep "Spotify" | wc -l

原因是当 Spotify 播放音乐时,窗口标题会更改为正在播放的歌曲的名称,并且不包含“Spotify”。

我想我可以做类似以下的事情来打印打开的 Spotify 窗口的数量:

wmctrl -l | awk '{print $1}' | xargs -I id ... | wc -l

但是我不确定我可以使用什么命令来检查运行窗口的进程的名称,给定从 wmctrl 返回的窗口 ID(格式为 0x06200001)

答案1

wmctrl -l | awk '{print $1}' | xargs -i xprop -id {} | grep WM_CLASS\(STRING\)\ =\ \"spotify\" | wc -l

我使用 xargs 在每个打开的窗口上运行xprop -id <window-id>,对于每个 Spotify 窗口,输出xprop都会显示(以及许多其他内容)如下一行:

WM_CLASS(STRING) = "spotify", "Spotify"

因此我将 xprop 插入到 中grep WM_CLASS(STRING) = "spotify",显然避开了空格、引号和括号。

相关内容