X 창이 매핑되었는지(표시되는지) 확인하는 방법은 무엇입니까?

X 창이 매핑되었는지(표시되는지) 확인하는 방법은 무엇입니까?

저는 xdotool을 사용하여 도크와 같은 창 세트를 매핑/매핑 해제합니다. 이제 xdotool에는 전환(맵/맵 해제) 명령이 제공되지 않으며 동시에 여러 창에서 동일한 작업을 수행하는 기능도 제공되지 않습니다. 그래서 스틱 전환을 수행하기 위해 스크립트를 사용해 보았습니다. 가장 최근 작업이 맵인지 아니면 매핑 해제인지 확인하는 방법이 필요합니다.

답변1

어떤 면에서 파일은 어디에서나 볼 수 있는 전역 변수를 저장하는 간단한 방법으로 생각할 수 있습니다. 따라서 상태(매핑됨/매핑 해제됨)를 파일에 문자열로 저장할 수 있습니다.

가장 우아한 것은 아니지만 이 스크립트(xctl이라는 이름)가 이제 이를 수행해야 합니다.

#!/usr/bin/env zsh

# This file serves as a global variable value holder showing if the windows are mapped or not.
state=/tmp/state

for process in ${@:1}; do
    case $1 in
        (show) xdotool search --class $process windowmap %@ windowraise %@;;
        (hide) xdotool search --onlyvisible --class $process windowunmap %@;;
        (*) break;;
    esac
done

[[ $1 == toggle ]] && {
    [[ -f $state ]] && [[ `cat $state` == show ]] && xctl hide ${@:1} || xctl show ${@:1}
} || echo $1 > $state

여러 창 사이를 전환하려면 를 실행하세요 xctl toggle window1 window2 ....

스크립트는 셸 경로에 있어야 합니다.

관련 정보