Gibt es eine Tastenkombination zum Minimieren aller Fenster außer dem aktiven?

21

Wenn ich Programme wie GIMP öffne, stört es mich, wenn Hintergrundfenster geöffnet sind, da mit GIMP drei separate Fenster verknüpft sind.

Es ist eine Belastung, jedes andere Nicht-Gimp-Fenster manuell aufrufen zu müssen, um es zu minimieren. Was ich brauche, ist eine Tastenkombination in Ubuntu, die der Tastenkombination von Windows Super+ entspricht Home. Eines, das alle Fenster mit Ausnahme des aktiven Fensters minimiert.

Ist es möglich, dieses Verhalten in Ubuntu zu erreichen?

Tschad
quelle
Interessante Idee! In der ersten Antwort finden Sie Hinweise : askubuntu.com/questions/13709/… In diesem Beitrag geht es darum, eine Funktion hinzuzufügen, um alle zu minimieren.
Wenn
Gibt es eine Chance, dass die Entwickler in zukünftigen Ubuntu-Versionen im Kontextmenü die Option "Alle außer dem aktiven Fenster minimieren" hinzufügen? Auf diese Weise ist diese Bindung "bereit und wartet" darauf, konfiguriert zu werden, wenn Benutzer Ubuntu installieren?
Tschad

Antworten:

20

Dies ist mit einem Python-Skript möglich. Das Skript benötigt python-wnckund python-gtkmuss installiert sein, um zu funktionieren, obwohl ich denke, dass diese sowieso standardmäßig installiert sind.

Kopieren Sie diese in einen Texteditor und speichern Sie sie an einem vernünftigen Ort (z. B. als minimise.py in Ihrem Home-Ordner):

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

Sie können dann die Tastenkombination einrichten, indem Sie die Tastenkombinationen öffnen.

Tastenkombinationen in Dash

Klicken Sie auf Hinzufügen , um eine neue Verknüpfung zu erstellen.

Tastaturkürzel-Fenster

Verwenden Sie den Befehl bash -c 'python ~/minimise.py'(dies setzt voraus, dass Sie ihn als minimise.py in Ihrem Basisordner gespeichert haben ).

Verknüpfung erstellen

Sie können dieser Aktion dann Ihre bevorzugte Tastaturkombination zuweisen.

Das Skript minimiert alle nicht aktiven Fenster. Ich denke nicht, dass dies für Ihren Anwendungsfall sehr nützlich ist, da Sie alle Gimp-Fenster geöffnet haben möchten. Sie können ein etwas anderes Skript verwenden, um stattdessen alle Fenster zu minimieren, die nicht aus der aktuellen Anwendung stammen:

#!/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()
dv3500ea
quelle
4
+1! Deshalb liebe ich Linux! Ausgezeichnet. @chad: Wenn die mehreren Fenster von Gimp ein Problem sind, scheint es eine Möglichkeit zu geben, dass Gimp als ein Fenster fungiert. Hoppla: Es scheint die Standardeinstellung von 2.6 zu sein (siehe Abbildung; ich habe Gimp schon lange nicht mehr verwendet).
Rinzwind
Deshalb liebe ich Python - es hat ein Modul für alles!
dv3500ea
1
python-wnck musste auf meinem system installiert sein, 14.04. Frage aber, innerhalb der Python-Shell funktioniert es ohne den gtk.main_loop-Teil, aber ohne ihn innerhalb des Skripts funktioniert es nicht. Um das Skript aus einer .py-Datei funktionsfähig zu machen, ist der Teil gtk.main_loop ein Muss. Kann mir jemand erklären warum?
Sergiy Kolodyazhnyy
Warum bash -c 'python... und nicht nur python ...?
Michael Campbell
1

Da sich python-wnck nicht mehr im apt-Repository (Kubuntu 18.04 Bionic) befindet, ist unten der geänderte Python-Code (aus der Antwort oben von @Aditya und @ dv3500ea).

Ab python3 ist wnck Teil der GObject Introspection-API ( Quelle ). Die Syntax für den Import von wnck (und Gtk-Objekten) hat sich also geändert.

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

Weisen Sie dann die Verknüpfung dem Python-Skript zu: (in Kubuntu) kmenueditor -> Neues Element erstellen -> Skript bash -c 'python path_to_the_python_script.py'-> Weisen Sie eine gewünschte Verknüpfung zu

UPDATE (19. Mai):

Bei Kubuntu 19.04 musste ich das Modul gir1.2-wnck-3.0 installieren, damit das obige Skript funktioniert.

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

Bash-Skript mit 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

Es werden nur Fenster auf dem aktuellen Desktop minimiert.

So minimieren Sie Fenster auf allen Desktops:

currentwindowid=$(xdotool getactivewindow)

for w in $(xdotool search --all --maxdepth 3 --name ".*"); do
  if [ $w -ne $currentwindowid ] ; then
    xdotool windowminimize "$w"
  fi
done
user3804598
quelle
Angesichts der Probleme mit verschiedenen Python-Versionen bevorzuge ich diese Bash-Lösung.
WinEunuuchs2Unix