Esiste una scorciatoia da tastiera per ridurre a icona tutte le finestre tranne quella attiva?


21

Quando apro programmi come GIMP, trovo che avere finestre in background aperte distragga perché GIMP ha tre finestre separate associate.

È un peso dover andare manualmente su ogni altra finestra non Gimp per minimizzarla. Ciò di cui ho bisogno è una scorciatoia da tastiera in Ubuntu che corrisponda alla scorciatoia Super+ di Windows Home. Uno che minimizza tutte le finestre tranne quella attiva.

È possibile ottenere questo comportamento in Ubuntu?


Idea interessante! Dai un'occhiata alla prima risposta qui per i puntatori: askubuntu.com/questions/13709/… Quel post riguarda l'aggiunta di una funzione per minimizzare tutto. Dal guardarlo aggiungendo una riga "massimizza il precedente attivo attivo" o cambiandolo in "minimizzare tranne il corrente attivo" dopo che farebbe il trucco (?)
Rinzwind

qualche possibilità che gli sviluppatori aggiungano l'opzione "Riduci a icona tranne la finestra attiva" nel menu di scelta rapida della tastiera nelle future versioni di Ubuntu? In questo modo questo bind è "pronto e in attesa" per essere configurato quando gli utenti installano Ubuntu?
Ciad

Risposte:


20

È possibile ottenere questo risultato con uno script Python. Lo script richiede python-wncke python-gtkdeve essere installato per funzionare, anche se penso che questi siano comunque installati di default.

Copia e incolla questo in un editor di testo e salvalo in un posto ragionevole (es. Come minimise.py nella tua cartella home):

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

È quindi possibile impostare la scorciatoia da tastiera aprendo le scorciatoie da tastiera.

Tasti di scelta rapida in Dash

Fai clic su Aggiungi per creare un nuovo collegamento.

Finestra Scorciatoie da tastiera

Utilizzare il comando bash -c 'python ~/minimise.py'(si presuppone che sia stato salvato come minimise.py nella cartella principale).

creare una scorciatoia

È quindi possibile assegnare la combinazione di tasti preferita a questa azione.

Lo script minimizzerà tutte le finestre non attive. Non penso che questo sia molto utile per il tuo caso d'uso perché vorrai avere tutte le finestre di Gimp aperte. Puoi invece utilizzare uno script leggermente diverso per ridurre a icona tutte le finestre che non provengono dall'applicazione corrente:

#!/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! Questo è il motivo per cui adoro Linux! Eccellente. @chad: se le finestre multiple di gimp sono un problema, sembra esserci un modo per far funzionare gimp come 1 finestra. Oops: sembra essere il default da 2.6 (vai a capire; non uso gimp da molto tempo).
Rinzwind

Ecco perché amo Python: ha un modulo per tutto!
dv3500ea,

1
python-wnck doveva essere installato sul mio sistema, 14.04. Domanda però, all'interno della shell di Python funziona bene senza la parte gtk.main_loop, ma senza di essa all'interno dello script, non funziona. Quindi, in sostanza, per rendere lo script utilizzabile da un file .py, la parte gtk.main_loop è un must. Qualcuno può spiegare perché?
Sergiy Kolodyazhnyy,

Perché bash -c 'python... e non solo python ...?
Michael Campbell,

1

Poiché python-wnck non è più nel repository apt (Kubuntu 18.04 Bionic), di seguito è riportato il codice Python modificato (dalla risposta sopra di @Aditya e @ dv3500ea).

Da python3 in poi wnck fa parte dell'API GObject Introspection ( sorgente ). Quindi, la sintassi per l'importazione di wnck (e oggetti Gtk) è cambiata.

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

quindi assegnare il collegamento allo script Python: (in Kubuntu) kmenueditor -> crea un nuovo elemento -> script bash -c 'python path_to_the_python_script.py'-> assegna un collegamento desiderato

AGGIORNAMENTO (19 maggio):

In Kubuntu 19.04 avevo bisogno di installare il modulo gir1.2-wnck-3.0 per far funzionare lo script sopra.

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

1

script bash usando 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

minimizza solo le finestre sul desktop corrente.

Per ridurre a icona le finestre su tutti i desktop:

currentwindowid=$(xdotool getactivewindow)

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

Dati i problemi con diverse versioni di Python, preferisco questa soluzione bash.
WinEunuuchs2Unix
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.