KWin - 修改任务切换器以调出所有窗口

KWin - 修改任务切换器以调出所有窗口

(如果这个问题太模糊,请提前致歉)

我正在尝试修改 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

相关内容