Когда я открываю такие программы, как GIMP, открывающиеся фоновые окна отвлекают меня, потому что с ним связаны три отдельных окна.
Обременительно приходить к каждому окну без Gimp вручную, чтобы свести его к минимуму. Что мне нужно, так это сочетание клавиш в Ubuntu, соответствующее сочетанию клавиш Super kbd> + Home kbd> в Windows. Тот, который минимизирует все окна, кроме активного.
Возможно ли добиться такого поведения в Ubuntu?
Этого можно добиться с помощью скрипта на 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'
(предполагается, что вы сохранили ее как minimise.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()
Поскольку python-wnck больше не находится в репозитории apt (Kubuntu 18.04 Bionic), ниже приведен модифицированный код python (из приведенного выше ответа @Aditya и @ dv3500ea).
Начиная с python3, wnck является частью GObject Introspection API ( source ). Таким образом, синтаксис для импорта 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'
-> назначьте нужный ярлык
сценарий удара с помощью 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
Ubuntu 21.10 работает под управлением Wayland, и я хочу, чтобы эта функциональность была на моем новом мониторе. Это решение, которое работает для меня, это сценарий bash, который я привязываю к пользовательской комбинации клавиш.
#!/bin/bash
gdbus call \
--session \
--dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval \
"global
.get_window_actors()
.filter(w=>w.meta_window.has_focus()===false)
.forEach(w=>w.meta_window.minimize())"