Keyboard-Shortcuts

用於最小化所有其他視窗的腳本/鍵盤快捷鍵

  • April 29, 2020

我想要一個全域鍵盤快捷鍵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命令時做錯了,但我不知道是什麼。

我做錯了什麼?

有沒有更優雅的方法來為上述過程定義自定義快捷方式?

我不確定為什麼您的腳本不起作用,可能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

它也可能看起來更好,因為它不會快速最小化和最大化您的活動視窗。

**編輯:**我錯過了居中部分,但這應該不是問題。

引用自:https://unix.stackexchange.com/questions/583083