我正在使用 I3 并使用 WM_ICON_NAME(STRING) 来识别我的窗口。
我正在寻找与此类似的东西,但带有 WM_ICON_NAME(STRING)。有可能实现这一点吗?谢谢。
if test $(wmctrl -l | grep "name of my window" 2>&1 | wc -l) -eq 1; then
echo "the window exists"
fi
答案1
使用的工具并不多,WM_ICON_NAME
因为它通常被假设设置为与 相同WM_NAME
。您可以列出所有窗口 ID 并xprop
在每个窗口上运行以获取一行,例如
WM_ICON_NAME(STRING) = "myname"
然后使用awk
(或类似的)提取其中的引用部分并将其与所需的字符串进行比较。下面是一个 bash 函数,findicon
它使用一个参数来执行此操作:
findicon(){
local myname=${1?}
wmctrl -l |
while read id rest
do xprop -id "$id" WM_ICON_NAME
done |
awk -F'"' -v myname="$myname" '
{if($2==myname)found=1}
END {exit !found}'
}
if findicon 'my icon name'
then echo 'found'
fi
答案2
您可以xdotool
通过类名称和标题来搜索现有窗口。
if xdotool search --name "name of my window" > /dev/null; then
echo "Window found"
else
echo "Window not found"
fi
在上面的代码示例中,如果有一些窗口的标题包含xdotool
,命令将返回退出状态0
和找到的窗口 ID 的列表"name of my window"
。