선택한 창을 제외한 모든 창을 닫습니다.

선택한 창을 제외한 모든 창을 닫습니다.

선택한 창을 제외한 모든 nemo 파일 브라우저 인스턴스를 닫고 싶습니다.

이를 위해서는 스크립트를 따라야 합니다.

#!/bin/bash

not_to_close=$(xdotool selectwindow)
class_name=$(xprop WM_CLASS | cut -d '"' -f2)

for i in $(xdotool search --desktop 0 --class "$class_name"); do
    if [ "$not_to_close" != "$i" ]; then
        xdotool windowclose "$i"
    fi
done

그러나 약간의 문제가 있습니다. 두 번( xdotool각각 하나씩) 클릭해야 하는데 xprop그렇게 하고 싶지 않습니다.

클릭수를 1회로 줄이려면 어떻게 해야 하나요?

답변1

클래스를 해당 이름으로 직접 바꾸고 xprop해당 줄을 삭제하면 됩니다.

--class nemo

편집: 이것을 시도해 보십시오. 두 가지 모두로 테스트했습니다.시계windowkill 창에서는 대신 사용할 수도 있습니다 windowclose.

xclock & 
xclock &

스크립트를 실행합니다.

#!/bin/bash
not_to_close="$(xdotool selectwindow )"
other_wins="$(xdotool search --class "xclock" | grep -v "$not_to_close")"
while IFS= read -r line
do
    echo "$line"
    if [ "$not_to_close" -ne "$line" ]; then
        xdotool windowkill "$line"
    fi
done <<< "$other_wins"

그런 다음 두 xclock 창 중 하나를 선택하면 닫히고 다른 창은 활성 상태로 유지됩니다.

답변2

OP, 나에게 도움이 된 솔루션은 다음과 같습니다.

#!/bin/bash

SELECTED_WINDOW=$(xdotool getactivewindow)
COPY_WINDOW=$(xdotool search --class "nemo" search --classname "file_progress")

WORKSPACE=$(xdotool get_desktop)

for i in $(xdotool search --desktop $WORKSPACE --class "nemo"); do
    if [ "$SELECTED_WINDOW" != "$i" ] && [ "$COPY_WINDOW" != "$i" ] ; then
        xdotool windowclose "$i"
    fi
done

관련 정보