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이를 수행하기 위해 하나의 인수를 사용하는 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".

관련 정보