GNU/Linux >> Linux の 問題 >  >> Ubuntu

単一のアプリケーションですべてのウィンドウをすばやく最小化するにはどうすればよいですか?

SUPERを使用してCosmicCuttlefish/GNOMEShellのすべてのウィンドウを最小化/非表示にする方法を知っています + D 、ただし、単一のアプリケーション(現在カーソルフォーカスがあるアプリケーションなど)のすべてのウィンドウのみをすばやく最小化できるようにしたいと思います。たとえば、すべてのLibreOfficeドキュメントまたはすべてのターミナルウィンドウを最小化したいと思います。

[設定]>[デバイス]>[キーボード]でこれを行う方法をよく見たり認識したりしていません。これは可能ですか?

承認された回答:

OK、楽しみのための簡単なもの🙂

現在アクティブなアプリケーションのウィンドウを最小化する

このスクリプトの簡略化/編集されたバージョンを使用できます。これには、デフォルトのUbuntu Budgieインストールが付属しています。
元のスクリプトはデスクトップを切り替えますが、以下の編集されたスクリプトは、現在のワークスペース上の現在のすべてのウィンドウを最小化します。アクティブなWM_CLASS

スクリプト、使用方法

  • 両方のxdotoolがあることを確認してください およびwmctrl インストール済み:

    sudo apt install wmctrl xdotool
    
  • 以下のスクリプトを空のファイルにコピーし、minimize_current.pyとして保存します
  • スクリプトを実行するためのキーボードショートカットを作成すれば完了です:)。次のコマンドを使用します:

    python3 /path/to/minimize_current.py
    

スクリプト

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

xdotoolに注意してください また、wmctrl 、このスクリプトで使用されているように、Waylandで機能します。


Ubuntu
  1. すべての非表示ファイルをグロブするにはどうすればよいですか?

  2. すべてのウィンドウを非表示にしてデスクトップをすばやく表示するにはどうすればよいですか?

  3. すべてのユーザーのためにExt4パーティションを作成する方法は?

  1. OpenStack用のWindowsイメージを作成する方法

  2. シェルで設定された時間アプリケーションを実行する方法は?

  3. 特定の用途に別の GTK 3 テーマを使用する方法

  1. すべてのアプリケーション(システム全体)でCtrl + qを無効にする方法は?

  2. Deja Dupのすべての設定を削除するにはどうすればよいですか?

  3. Unityのパネルで開いているすべてのウィンドウのリストを表示するにはどうすればよいですか?