Vím, jak minimalizovat/skrýt všechna okna v Cosmic Cuttlefish/GNOME Shell pomocí SUPER +D , ale chtěl bych mít možnost rychle minimalizovat pouze všechna okna pro jednu aplikaci (řekněme tu, která má aktuálně kurzor). Chtěl bych například minimalizovat všechny dokumenty LibreOffice nebo všechna okna terminálu.
Nevidím ani nerozpoznávám způsob, jak to udělat v Nastavení> Zařízení> Klávesnice. Je to možné?
Přijatá odpověď:
OK, jen rychlovka pro pobavení 🙂
Minimalizujte okna aktuálně aktivní aplikace
Můžete použít oříznutou/upravenou verzi tohoto skriptu, která je dodávána s výchozí instalací Ubuntu Budgie.
Zatímco původní skript přepíná plochu, upravený níže minimalizuje všechna okna aktuálního pracovního prostoru aktivní WM_CLASS
.
Skript, jak používat
-
Ujistěte se, že máte oba
xdotool
awmctrl
nainstalováno:sudo apt install wmctrl xdotool
- Zkopírujte níže uvedený skript do prázdného souboru a uložte jej jako
minimize_current.py
-
Vytvořte klávesovou zkratku pro spuštění skriptu a máte hotovo :). Použijte příkaz:
python3 /path/to/minimize_current.py
Skript
#!/usr/bin/env python3
import subprocess
ignore = [
"= _NET_WM_WINDOW_TYPE_DOCK",
"= _NET_WM_WINDOW_TYPE_DESKTOP",
]
def get(cmd):
return subprocess.check_output(cmd).decode("utf-8").strip()
def get_currws():
return [l.split()[0] for l in get(
["wmctrl", "-d"]).splitlines() if "*" in l][0]
def get_valid(w_id):
# see if the window is a valid one (type)
w_data = get(["xprop", "-id", w_id])
if w_data:
return True if not any([t in w_data for t in ignore]) else False
else:
return False
def get_wmclass(w_id):
return get(["xprop", "-id", w_id, "WM_CLASS"])
def get_state(w_id):
return "window state: Iconic" in get(["xprop", "-id", w_id, "WM_STATE"])
currws = get_currws()
allwinsdata = [w.split() for w in get(["wmctrl", "-l"]).splitlines()]
winsoncurr = [w[0] for w in allwinsdata if w[1] == currws]
active_w = get(["xdotool", "getactivewindow"])
activeclass = get_wmclass(active_w)
relevant = [w for w in winsoncurr if get_valid(w)]
# windows on current workspace, normal state
tominimize = [
w for w in relevant if all(
[not get_state(w), get_wmclass(w) == activeclass]
)
]
for w in tominimize:
subprocess.Popen(["xdotool", "windowminimize", w])
Poznámka
Všimněte si, že xdotool
ani wmctrl
, jak je použito v tomto skriptu, bude fungovat na Wayland.