GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come ridurre rapidamente a icona tutte le finestre per una singola applicazione?

So come minimizzare/nascondere tutte le finestre in Cosmic Cuttlefish/GNOME Shell usando SUPER +D , ma vorrei essere in grado di ridurre rapidamente a icona solo tutte le finestre per una singola applicazione (ad esempio quella che attualmente ha lo stato attivo del cursore). Ad esempio, vorrei ridurre a icona tutti i documenti di LibreOffice o tutte le finestre di Terminale.

Non vedo o riconosco un modo per farlo in Impostazioni> Dispositivi> Tastiera. È possibile?

Risposta accettata:

OK, solo una veloce per divertimento 🙂

Riduci a icona le finestre dell'applicazione attualmente attiva

È possibile utilizzare una versione ridotta/modificata di questo script, che viene fornita con un'installazione predefinita di Ubuntu Budgie.
Mentre lo script originale attiva o disattiva il desktop, quello modificato di seguito riduce a icona tutte le finestre, nell'area di lavoro corrente, dell'attuale attivo WM_CLASS .

Lo script, come usarlo

  • Assicurati di avere entrambi xdotool e wmctrl installato:

    sudo apt install wmctrl xdotool
    
  • Copia lo script qui sotto in un file vuoto, salvalo come minimize_current.py
  • Crea una scorciatoia da tastiera per eseguire lo script e il gioco è fatto :). Usa il comando:

    python3 /path/to/minimize_current.py
    

Il copione

#!/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])

Nota

Nota che xdotoolwmctrl , come utilizzato in questo script, funzionerà su Wayland.


Ubuntu
  1. Come creare un'immagine Windows per OpenStack

  2. Come dovrei glob per tutti i file nascosti?

  3. Come disabilitare Ctrl+q per tutte le applicazioni (a livello di sistema)?

  4. Come utilizzare un tema GTK 3 diverso per usi specifici

  5. Come disabilitare rapidamente un singolo lavoro in crontab

Come installare WSL (sottosistema Windows per Linux) in un unico comando | Installa Linux su Windows usando WSL

Come installare WSL2 (sottosistema Windows per Linux 2) su Windows 10

Come installare WSL (sottosistema Windows per Linux) su Windows 11

Come installare il sottosistema Windows per Linux

Linux:scorciatoia per ridurre al minimo tutte le finestre?

Come installare Application Server su Windows Server 2012