Existe-t-il un raccourci clavier pour minimiser toutes les fenêtres sauf celle active?

21

Lors de l'ouverture de programmes comme GIMP, je trouve que les fenêtres d'arrière-plan sont distrayantes car GIMP a trois fenêtres distinctes associées.

C'est un fardeau d'avoir à aller manuellement à toutes les autres fenêtres non-Gimp pour le minimiser. Ce dont j'ai besoin, c'est d'un raccourci clavier dans Ubuntu qui correspond au raccourci Super+ de Windows Home. Celui qui minimise toutes les fenêtres sauf celle active.

Est-il possible d'obtenir ce comportement dans Ubuntu?

Tchad
la source
Idée intéressante! Jetez un oeil à la 1ère réponse ici pour les pointeurs: askubuntu.com/questions/13709/… Ce message concerne l'ajout d'une fonction pour minimiser tout. De le regarder en ajoutant une ligne 'maximiser le courant actif précédent' ou en le changeant en 'minimiser sauf le courant actif' après cela ferait l'affaire (?)
Rinzwind
Y a-t-il une chance que les développeurs ajoutent une option "Réduire tout sauf la fenêtre active" dans le menu de raccourcis clavier dans les futures versions d'Ubuntu? De cette façon, cette liaison est "prête et en attente" d'être configurée lorsque les utilisateurs installent Ubuntu?
Tchad

Réponses:

20

Il est possible d'y parvenir avec un script python. Le script nécessite python-wncket python-gtkdoit être installé pour fonctionner, bien que je pense que ceux-ci sont installés par défaut de toute façon.

Copiez et collez ceci dans un éditeur de texte et enregistrez-le dans un endroit raisonnable (par exemple, sous minimise.py dans votre dossier personnel):

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

Vous pouvez ensuite configurer le raccourci clavier en ouvrant les raccourcis clavier.

Raccourcis clavier dans Dash

Cliquez sur Ajouter pour créer un nouveau raccourci.

Fenêtre des raccourcis clavier

Utilisez la commande bash -c 'python ~/minimise.py'(cela suppose que vous l'avez enregistré sous minimise.py dans votre dossier personnel).

créer un raccourci

Vous pouvez ensuite affecter votre combinaison de clavier préférée à cette action.

Le script réduira toutes les fenêtres non actives. Je ne pense pas que cela soit très utile pour votre cas d'utilisation, car vous voudrez avoir toutes les fenêtres Gimp ouvertes. Vous pouvez utiliser un script légèrement différent pour minimiser toutes les fenêtres qui ne sont pas de l'application actuelle à la place:

#!/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
la source
4
+1! C'est pourquoi j'aime Linux! Excellent. @chad: si les multiples fenêtres de gimp sont un problème, il semble y avoir un moyen pour que gimp agisse comme 1 fenêtre. Oups: il semble que ce soit la valeur par défaut à partir de 2.6 (allez comprendre; je n'ai pas utilisé gimp depuis longtemps).
Rinzwind
C'est pourquoi j'aime Python - il a un module pour tout!
dv3500ea
1
python-wnck devait être installé sur mon système, 14.04. Question cependant, à l'intérieur du shell python, cela fonctionne bien sans la partie gtk.main_loop, mais sans lui à l'intérieur du script, il ne fonctionne pas. Donc, fondamentalement, pour rendre le script réalisable à partir d'un fichier .py, la partie gtk.main_loop est un must. Quelqu'un peut-il expliquer pourquoi?
Sergiy Kolodyazhnyy
Pourquoi bash -c 'python... et pas seulement python ...?
Michael Campbell
1

Étant donné que python-wnck n'est plus dans le référentiel apt (Kubuntu 18.04 Bionic), voici le code python modifié (de la réponse ci-dessus par @Aditya et @ dv3500ea).

A partir de python3, wnck fait partie de l'API GObject Introspection ( source ). Ainsi, la syntaxe pour importer wnck (et les objets Gtk) a changé.

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

puis attribuez le raccourci au script python: (dans Kubuntu) kmenueditor -> créer un nouvel élément -> script bash -c 'python path_to_the_python_script.py'-> attribuer le raccourci souhaité

MISE À JOUR (mai 19):

À Kubuntu 19.04, j'avais besoin d'installer le module gir1.2-wnck-3.0 pour faire fonctionner le script ci-dessus.

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

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

il minimise uniquement les fenêtres du bureau actuel.

Pour réduire les fenêtres sur tous les bureaux:

currentwindowid=$(xdotool getactivewindow)

for w in $(xdotool search --all --maxdepth 3 --name ".*"); do
  if [ $w -ne $currentwindowid ] ; then
    xdotool windowminimize "$w"
  fi
done
user3804598
la source
Étant donné les problèmes avec différentes versions de Python, je préfère cette solution bash.
WinEunuuchs2Unix