%20%ED%99%95%EC%9D%B8%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
저는 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 ...
.
스크립트는 셸 경로에 있어야 합니다.