GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak rychle minimalizovat všechna Windows pro jednu aplikaci?

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 a wmctrl 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.


Ubuntu
  1. Jak vytvořit bitovou kopii Windows pro OpenStack

  2. Jak zakázat Ctrl+q pro všechny aplikace (v celém systému)?

  3. Jak smazat všechna nastavení pro Deja Dup?

  1. Jak bych měl globálně hledat všechny skryté soubory?

  2. Jak zobrazit seznam všech otevřených oken v panelu v Unity?

  3. Jak rychle zakázat jednu úlohu v crontab

  1. Jak rychle skrýt všechna okna a zobrazit plochu?

  2. Jak vytvořit oddíl Ext4 pro všechny uživatele?

  3. Jak spustit aplikaci po nastavenou dobu v prostředí Shell?