我想检测由窗口管理器管理的特定应用程序的实例数量.目前,我有这个:
#!/bin/bash
# wmctrl required
pids=$(pidof $1)
IFS=' ' read -a pid_arr <<< "$pids"
matches=0
for pid in "${pid_arr[@]}"
do
matching_lines=$(wmctrl -l -p | egrep -c "^.+\b.+\b$pid\b")
matches=$((matches + $matching_lines))
done
echo $matches
Run Code Online (Sandbox Code Playgroud)
假设我有三次打开firefox并且firefox作为参数传递,如果没有打开"子窗口"(例如首选项窗口),该函数将只返回正确的数字.否则,该函数也将计算这些窗口.
我想获得没有"子窗口"的窗口数量.
PS:做了一些改变.要计算没有对话窗口的窗口数,这是我目前的解决方案:
#!/bin/bash
pids=$(pidof $1)
IFS=' ' read -r -a pid_arr <<< "$pids"
matches=0
for pid in "${pid_arr[@]}"
do
ids=$(wmctrl -l -p | awk '$3=='$pid'{printf $1" "}')
IFS=' ' read -r -a id_arr <<< "$ids"
for id in "${id_arr[@]}"
do
if ! xprop -id …Run Code Online (Sandbox Code Playgroud)