Как быстро минимизировать все окна для отдельного приложения?

Я знаю, как минимизировать/скрыть все окна у Космической Каракатицы/GNOME Shell с помощью SUPER+D, но я хотел бы смочь быстро минимизировать только все окна для отдельного приложения (скажите, что тот, который в настоящее время имеет фокус курсора). Например, я хотел бы минимизировать все документы LibreOffice или все Окна терминала.

Я не совсем вижу или распознаю способ сделать это в Настройках> Устройства> Клавиатура. Действительно ли это возможно?

5
задан 8 January 2019 в 01:25

2 ответа

Хорошо, просто быстрый для забавы :)

Минимизируйте окна в настоящее время активного приложения

Вы могли использовать упрощенную / отредактированную версию этого сценария, который идет с установкой Волнистого попугайчика Ubuntu по умолчанию. В то время как исходный сценарий переключает рабочий стол, отредактированный ниже минимизирует все окна, на текущей рабочей области, в настоящее время активного 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, как используется в этом сценарии, будет работать над Уэйлендом.

6
ответ дан 23 November 2019 в 08:46

Это не сочетание клавиш, но другой способ минимизировать все окна приложения. Можно включить, 'минимизируют по щелчку' в прикреплении Ubuntu. Затем, после того как Вы нажимаете значок приложения в прикреплении, это минимизировало бы все окна (или повышение, если они уже минимизированы) того приложения.

Для включения этой опции выполните следующую команду в Терминале:

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

(Ссылка: Как я включаю, 'минимизируют по щелчку' на прикреплении Ubuntu в Ubuntu 17.10 и позже?)

6
ответ дан 23 November 2019 в 08:46

Другие вопросы по тегам:

Похожие вопросы: