用于最小化所有其他窗口的脚本/键盘快捷键

用于最小化所有其他窗口的脚本/键盘快捷键

我想要一个全局键盘快捷键super+down来最小化除活动窗口之外的所有窗口,以便我可以看到该窗口,而背景中只有桌面。一个不错的额外功能是同时将窗口定位到屏幕中心。

我使用的是 Kubuntu 19.10 和 Plasma 5.18.3。

我知道“Shake”KWin 脚本,但我想要一个键盘快捷键。

我的想法是编写一个脚本来最小化所有窗口,然后使用 使最后一个活动窗口重新获得焦点并通过击键将其居中xdotool,然后配置自定义快捷方式来运行此脚本。

我的脚本如下:

#!/bin/bash

active=$(xdotool getactivewindow)  # remember active window
xdotool key super+shift+d          # minimize all windows
xdotool windowactivate $active     # bring back last active window
xdotool key super+c                # center active window

super+ shift+d是我为之前激活的 KWin 脚本“最小化所有”配置的全局快捷方式,super+c也是我安装并激活的“将窗口移至中心”KWin 脚本的快捷方式。单独而言,这些组合键无论是在手动敲击它们时还是在使用 xdotool 模拟它们时都有效。

我的自定义快捷方式实际上启动了脚本;但是,它只会最小化窗口,而不会使最后一个窗口重新获得焦点。

从终端运行脚本并echo在行之间插入语句表明脚本一直运行到最后,只是最后两行似乎没有任何效果,但没有给出任何错误消息。运行命令echo $(xdotool getactivewindow)xdotool windowactivate 150994951单独执行它们应该执行的操作,所以我最好的猜测是我在将变量传递activewindowactivate命令时做错了什么,但我不知道是什么。

我做错了什么?

是否有更优雅的方法来为上述过程定义自定义快捷方式?

答案1

我不确定为什么您的脚本不起作用,也许windowactivate在上一个命令设法最小化所有窗口之前执行?

这是一个可能适合您的 bash 脚本:

#!/bin/bash

active_window_id=$(xdotool getactivewindow)
for window_id in $(xdotool search --onlyvisible ".*")
do
    if [ $window_id != $active_window_id ]
    then
        xdotool windowminimize $window_id
    fi
done

它也可能看起来更好,因为它不会快速最小化和最大化您的活动窗口。

编辑:我错过了居中部分,但这应该不是问题。

答案2

您可能正在寻找wmctrl -k on.它通过一个请求同时最小化所有事情_NET_SHOWING_DESKTOP

相关内容