我想要一个全局键盘快捷键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
单独执行它们应该执行的操作,所以我最好的猜测是我在将变量传递active
给windowactivate
命令时做错了什么,但我不知道是什么。
我做错了什么?
是否有更优雅的方法来为上述过程定义自定义快捷方式?
答案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
。