关闭除所选窗口之外的所有窗口

关闭除所选窗口之外的所有窗口

我想关闭除选定窗口之外的所有 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

只需将类直接替换为其名称,然后删除xprop行即可。

--class nemo

编辑:试试这个,我已经用两个测试过时钟windows,也可以使用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

相关内容