如何快速最小化单个应用程序的所有窗口?

如何快速最小化单个应用程序的所有窗口?

我知道如何使用SUPER+最小化/隐藏 Cosmic Cuttlefish/GNOME Shell 中的所有窗口D,但我希望能够快速最小化单个应用程序的所有窗口(例如当前具有光标焦点的窗口)。例如,我想最小化所有 LibreOffice 文档或所有终端窗口。

我不太清楚或无法识别在“设置”>“设备”>“键盘”中执行此操作的方法。这可能吗?

答案1

这不是键盘快捷键,而是最小化应用程序所有窗口的另一种方法。您可以启用“点击后最小化' 在 Ubuntu dock 中。然后,一旦您单击 dock 中的应用程序图标,它就会最小化该应用程序的所有窗口(如果它们已经最小化,则提升)。

要启用此选项,请在终端中运行以下命令:

gsettings set org.gnome.shell.extensions.dash-to-dock click-action 'minimize'

(参考:如何在 Ubuntu 17.10 及更高版本上启用 Ubuntu Dock 上的“点击时最小化”?

答案2

好的,只是为了好玩而已:)

###最小化当前活动应用程序的窗口您可以使用精简版/编辑版这个脚本,它随默认的 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])

###Note 请注意,此脚本中使用的 和xdotool均不wmctrl适用于 Wayland。

相关内容