wmctrlを使用してWM_ICON_NAME(STRING)が存在するかどうかを確認するには?

wmctrlを使用してWM_ICON_NAME(STRING)が存在するかどうかを確認するには?

私は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"

関連情報