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