GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Cepat Meminimalkan Semua Windows Untuk Satu Aplikasi?

Saya tahu cara meminimalkan/menyembunyikan semua jendela di Cosmic Cuttlefish/GNOME Shell menggunakan SUPER +D , tetapi saya ingin dapat dengan cepat meminimalkan hanya semua jendela untuk satu aplikasi (katakanlah yang saat ini memiliki fokus kursor). Misalnya, saya ingin meminimalkan semua dokumen LibreOffice, atau semua jendela Terminal.

Saya tidak cukup melihat atau mengenali cara untuk melakukan ini di Pengaturan> Perangkat> Papan Ketik. Apakah ini mungkin?

Jawaban yang Diterima:

Oke, hanya yang singkat untuk bersenang-senang

Minimalkan jendela aplikasi yang sedang aktif

Anda dapat menggunakan versi skrip ini yang telah dilucuti/diedit, yang disertakan dengan instalasi default Ubuntu Budgie.
Sementara skrip asli mengaktifkan desktop, skrip yang diedit di bawah meminimalkan semua jendela, di ruang kerja saat ini, dari saat ini WM_CLASS aktif .

Script, cara menggunakan

  • Pastikan Anda memiliki keduanya xdotool dan wmctrl terpasang:

    sudo apt install wmctrl xdotool
    
  • Copy script di bawah ini ke dalam file kosong, simpan sebagai minimize_current.py
  • Buat pintasan keyboard untuk menjalankan skrip dan selesai :). Gunakan perintah:

    python3 /path/to/minimize_current.py
    

Skrip

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

Catatan

Perhatikan bahwa xdotool atau wmctrl , seperti yang digunakan dalam skrip ini, akan berfungsi di Wayland.


Ubuntu
  1. Cara Membuat gambar Windows untuk OpenStack

  2. Bagaimana Cara Mengetik Kata Sandi Untuk Banyak Windows?

  3. Bagaimana Cara Menghapus Semua Pengaturan Untuk Deja Dup?

  1. Bagaimana Saya Harus Glob Untuk Semua File Tersembunyi?

  2. Bagaimana Cara Menonaktifkan Ctrl+q Untuk Semua Aplikasi (Sistem Lebar)?

  3. Bagaimana Menyembunyikan Semua Windows Dan Menampilkan Desktop Dengan Cepat?

  1. Bagaimana Cara Membuat Partisi Ext4 Untuk Semua Pengguna?

  2. Bagaimana Cara Menjalankan Aplikasi Untuk Waktu yang Ditetapkan Di Shell?

  3. Bagaimana Cara Melihat Daftar Semua Windows yang Terbuka Di Panel Di Unity?