選択したウィンドウを除くすべてのウィンドウを閉じます。

選択したウィンドウを除くすべてのウィンドウを閉じます。

選択したウィンドウを除くすべての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

しかし、いくつかの問題があります。 2回(xdotoolそれぞれ1つずつ)クリックする必要がありますが、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"

その後、2 つの 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

関連情報