(如果这个问题太模糊,请提前致歉)
我正在尝试修改 KWin 的Alt+Tab任务切换器的行为。一种常见的情况是:我正在使用一个同时打开多个窗口的应用程序。当我使用任务切换器切换应用程序时,只有最新的窗口才会显示出来;为了让其他窗口可见,我需要手动逐个循环显示它们,将每个窗口都放在最前面。
我想改变这一点,以便任务切换器自动提升所有应用程序的窗口。我当前的解决方案是将Alt+映射Tab到以下脚本:
#!/usr/bin/bash
oldactive=$(xdotool getactivewindow)
qdbus \
org.kde.kglobalaccel \
/component/kwin \
org.kde.kglobalaccel.Component.invokeShortcut "Walk Through Windows"
while true; do
currentactive=$(xdotool getactivewindow)
if [[ "$oldactive" != "$currentactive" ]]; then
qdbus org.kde.KWin /Scripting org.kde.kwin.Scripting.loadScript "/home/user/kwinscript"
qdbus org.kde.KWin /Scripting org.kde.kwin.Scripting.start
break
fi
done
其中kwinscript
包含以下内容:
var allClients = workspace.clientList();
var activeClient = workspace.activeClient;
for (i=0; i<allClients.length; i++) {
if (allClients[i].resourceClass == activeClient.resourceClass) {
workspace.activeClient = allClients[i];
}
}
workspace.activeClient = activeClient; //make sure last-used client still ends up on top
简而言之,我用 调用任务切换器qdbus
,等待它激活一个新窗口,然后调用我的脚本来调出其他窗口。我已将任务切换器本身的实际快捷键重新映射到Ctrl+ Alt+ Tab,因此它仍然使用 Tab 循环切换应用程序并在释放 Alt 时退出。
我的问题基本上是:有一个更好的方法吗?
我的解决方案(大部分情况下)效果还不错,但感觉有点不太好用,而且似乎好像应该有一个更简单的方法。任务切换器退出和其他窗口重新出现之间也存在轻微的延迟(可能四分之一到半秒),所以如果我能找到一个运行更顺畅的解决方案就好了。
系统信息:Ubuntu 19.10(不是Kubuntu)、KDE Plasma 5.17.5