私は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
抽出し、目的の文字列と比較します。以下は、findicon
これを行うために1つの引数を使用するbash関数です。
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"
。