Je sais comment minimiser/masquer toutes les fenêtres dans Cosmic Cuttlefish/GNOME Shell en utilisant SUPER +D , mais j'aimerais pouvoir minimiser rapidement toutes les fenêtres d'une seule application (disons celle qui a actuellement le focus sur le curseur). Par exemple, je voudrais minimiser tous les documents LibreOffice, ou toutes les fenêtres Terminal.
Je ne vois pas ou ne reconnais pas tout à fait un moyen de le faire dans Paramètres> Périphériques> Clavier. Est-ce possible ?
Réponse acceptée :
OK, juste un rapide pour le fun 🙂
Réduire les fenêtres de l'application actuellement active
Vous pouvez utiliser une version simplifiée/modifiée de ce script, qui est fournie avec une installation par défaut d'Ubuntu Budgie.
Tandis que le script original bascule le bureau, celui modifié ci-dessous minimise toutes les fenêtres, sur l'espace de travail actuel, WM_CLASS
actif .
Le script, comment l'utiliser
-
Assurez-vous d'avoir à la fois
xdotool
etwmctrl
installé :sudo apt install wmctrl xdotool
- Copiez le script ci-dessous dans un fichier vide, enregistrez-le sous
minimize_current.py
-
Créez un raccourci clavier pour exécuter le script et vous avez terminé :). Utilisez la commande :
python3 /path/to/minimize_current.py
Le scénario
#!/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])
Remarque
Notez que xdotool
ni wmctrl
, tel qu'utilisé dans ce script, fonctionnera sur Wayland.