for pid in $(wmctrl -lp | tr -s " "| cut -d ' ' -f3); do
#^--|------|--------------|-----------|------------- for .. in .. loop
# | | | |
# \------|--------------|-----------|------------- name of the variable we'll set
# | | | each iteration
# | | |
# \--------------|-----------|------------- $(command): replaces $(..)
# | | with output of `command`
# | |
# \-----------|------------- translate character " " by -s:
# | "squeeze" multiple consecutive
# | spaces into one
# |
# \-------------- cut at ' ', take the 3rd field
cat "/proc/${pid}/cmdline"
echo ""
done
也很有趣,mabye:
for wm_id in $(wmctrl -l | cut -d ' ' -f1); do
xprop -id "${wm_id}" WM_CLASS
done
哇,今天学到了
wmctrl
。好吧,这已经非常接近了!只需获取这些 PID,并检查它们的命令:
也很有趣,mabye:
如果找到,这将用相应的命令替换 pid
wmctrl -lp
的输出:这显然不适用于显示远程进程的窗口;在某些情况下(例如Flatpak),它还会为对应于沙盒进程的窗口给出奇怪的结果。
AWK脚本读取每一行,提取pid,运行
ps -o comm=
确定对应的命令;如果找到一个,它将用命令替换相应的 pid 字符串。