GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Wie kann man schnell alle Fenster für eine einzige Anwendung minimieren?

Ich weiß, wie man alle Fenster in Cosmic Cuttlefish/GNOME Shell mit SUPER minimiert/versteckt +D , aber ich möchte in der Lage sein, schnell nur alle Fenster für eine einzelne Anwendung zu minimieren (z. B. diejenige, die derzeit den Cursorfokus hat). Ich möchte zum Beispiel alle LibreOffice-Dokumente oder alle Terminal-Fenster minimieren.

Ich sehe oder erkenne keine Möglichkeit, dies unter Einstellungen> Geräte> Tastatur zu tun. Ist das möglich?

Akzeptierte Antwort:

OK, nur kurz zum Spaß 🙂

Fenster der aktuell aktiven Anwendung minimieren

Sie könnten eine abgespeckte/bearbeitete Version dieses Skripts verwenden, das mit einer standardmäßigen Ubuntu Budgie-Installation geliefert wird.
Während das ursprüngliche Skript den Desktop umschaltet, minimiert das bearbeitete unten alle Fenster im aktuellen Arbeitsbereich des aktuellen aktive WM_CLASS .

Das Skript, wie man es benutzt

  • Stellen Sie sicher, dass Sie beide xdotool haben und wmctrl installiert:

    sudo apt install wmctrl xdotool
    
  • Kopieren Sie das folgende Skript in eine leere Datei und speichern Sie es als minimize_current.py
  • Erstellen Sie eine Tastenkombination, um das Skript auszuführen, und Sie sind fertig :). Verwenden Sie den Befehl:

    python3 /path/to/minimize_current.py
    

Das 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])

Hinweis

Beachten Sie, dass xdotool noch wmctrl , wie in diesem Skript verwendet, funktioniert auf Wayland.


Ubuntu
  1. Wie gebe ich ein Passwort für mehrere Windows ein?

  2. Wie deaktiviere ich Strg+q für alle Anwendungen (systemweit)?

  3. Wie lösche ich alle Einstellungen für Deja Dup?

  4. Wie verstecke ich alle Fenster und zeige den Desktop schnell an?

  5. Wie erstelle ich eine Ext4-Partition für alle Benutzer?

So installieren Sie WSL (Windows-Subsystem für Linux) mit einem einzigen Befehl | Installieren Sie Linux unter Windows mit WSL

So installieren Sie WSL2 (Windows-Subsystem für Linux 2) unter Windows 10

So installieren Sie WSL (Windows-Subsystem für Linux) unter Windows 11

So installieren Sie das Windows-Subsystem für Linux

Linux – Verknüpfung zum Minimieren aller Windows?

So installieren Sie Anwendungsserver auf Windows Server 2012