Чи є комбінація клавіш для мінімізації всіх вікон, крім активних?


21

Відкриваючи такі програми, як GIMP, я виявляю, що фонові вікна відкриті відволікають, оскільки GIMP має три окремих вікна, пов'язані з ним.

Доводиться переходити до кожного іншого вікна, яке не є Gimp, вручну, щоб мінімізувати його. Мені потрібно комбінація клавіш у Ubuntu, яка відповідає ярлику Windows Super+ Home. Такий, який мінімізує всі вікна, крім активного.

Чи можна досягти такої поведінки в Ubuntu?


Цікава ідея! Подивіться тут першу відповідь для покажчиків: askubuntu.com/questions/13709/… Цей пост стосується додавання функції для мінімізації всіх. Якщо дивитися на нього, додаючи рядок "максимізувати попередній поточний активний" або змінити його на "мінімізувати, крім поточного активного", після того, як він зробить трюк (?)
Rinzwind

будь-який шанс розробники додадуть опцію "Звести до мінімуму все, але активне вікно" в меню "Клавіатурне скорочення" у майбутніх версіях Ubuntu? Таким чином, ця прив'язка "готова і чекає", щоб бути налаштована, коли користувачі встановлюють Ubuntu?
Чад

Відповіді:


20

Цього можна досягти за допомогою сценарію python. Сценарій вимагає python-wnckта python-gtkвстановлюється для того, щоб працювати, хоча я думаю, що вони все-таки встановлені за замовчуванням.

Скопіюйте та вставте це в текстовий редактор і збережіть у розсудливому місці (наприклад, як minimise.py у домашній папці):

#!/usr/bin/env python
import wnck
import gtk

screen = wnck.screen_get_default()

while gtk.events_pending():
    gtk.main_iteration()

windows = screen.get_windows()
active = screen.get_active_window()

for w in windows:
    if not w == active:
        w.minimize()

Потім ви можете встановити комбінацію клавіш, відкривши комбінації клавіш.

Комбінації клавіш на тирі

Клацніть на Додати, щоб створити новий ярлик.

Вікно клавіатурних скорочень

Скористайтеся командою bash -c 'python ~/minimise.py'(якщо припустити, що ви зберегли її як minimalise.py у своїй домашній папці).

створити ярлик

Потім ви можете призначити бажану комбінацію клавіатури цій дії.

Сценарій дозволить мінімізувати всі неактивні вікна. Я не думаю, що це дуже корисно для вашого випадку використання, оскільки вам потрібно буде відкрити всі вікна Gimp. Ви можете використовувати трохи інший скрипт, щоб мінімізувати всі вікна, які не є з поточної програми замість цього:

#!/usr/bin/env python
import wnck
import gtk

screen = wnck.screen_get_default()

while gtk.events_pending():
    gtk.main_iteration()

windows = screen.get_windows()
active_app = screen.get_active_window().get_application()

for w in windows:
    if not w.get_application() == active_app:
        w.minimize()

4
+1! Ось чому я люблю Linux! Відмінно. @chad: якщо декілька вікон gimp є проблемою, схоже, існує спосіб, щоб gimp діяв як 1 вікно. На жаль, це за замовчуванням з 2.6 (перейти до цифри; я не використовую gimp давно).
Rinzwind

Ось чому я люблю Python - у ньому є модуль для всього!
dv3500ea

1
python-wnck довелося встановити в моїй системі, 14.04. Питання, хоча всередині оболонки python він працює нормально без частини gtk.main_loop, але без неї всередині сценарію, це не так. Отже, щоб зробити скрипт працездатним з .py-файлу, частина gtk.main_loop є обов'язковою. Може хтось пояснить, чому?
Сергій Колодяжний

Чому bash -c 'python... і не просто python ...?
Майкл Кемпбелл

1

Оскільки python-wnck більше не знаходиться в належному сховищі (Kubuntu 18.04 Bionic), нижче - модифікований код python (з відповіді вище від @Aditya та @ dv3500ea).

Від python3 і далі wnck є частиною API Introspection GObject ( джерело ). Отже, синтаксис імпорту wnck (та об'єктів Gtk) змінився.

#!/usr/bin/env python

# import necessary objects
import gi
gi.require_version('Wnck', '3.0') # specify Wnck version
from gi.repository import Wnck

from gi.repository import Gtk


# the script itself
screen = Wnck.Screen.get_default()

while Gtk.events_pending():
    Gtk.main_iteration()

windows = screen.get_windows()
active = screen.get_active_window()

for w in windows:
    if not w == active:
        w.minimize()

потім призначте ярлик сценарію python: (в Kubuntu) kmenueditor -> створити новий елемент -> скрипт bash -c 'python path_to_the_python_script.py'-> призначити потрібний ярлик

ОНОВЛЕННЯ (19 травня):

У Kubuntu 19.04 мені потрібно було встановити модуль gir1.2-wnck-3.0, щоб сценарій працював вище.

$ python -V
Python 2.7.16
$ sudo apt-get install python3-gi gir1.2-wnck-3.0

1

скрипт bash за допомогою xdotool:

currentwindowid=$(xdotool getactivewindow)
currentdesktopid=$(xdotool get_desktop)

for w in $(xdotool search --all --maxdepth 3 --desktop $currentdesktopid --name ".*"); do
  if [ $w -ne $currentwindowid ] ; then
    xdotool windowminimize "$w"
  fi
done

він мінімізує лише вікна на поточному робочому столі.

Щоб мінімізувати вікна на всіх робочих столах:

currentwindowid=$(xdotool getactivewindow)

for w in $(xdotool search --all --maxdepth 3 --name ".*"); do
  if [ $w -ne $currentwindowid ] ; then
    xdotool windowminimize "$w"
  fi
done

Враховуючи проблеми з різними версіями Python, я віддаю перевагу цьому баш-рішенню.
WinEunuuchs2Unix
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.