Raccourci pour amener tous les terminaux ouverts à l'avant


17

Après avoir navigué vers une page Web ou un éditeur, existe-t-il un moyen de ramener tous les terminaux ouverts à l'avant dans leurs positions d'origine? C'est un peu pénible de cliquer sur l'icône du terminal puis de les ramener individuellement.

Merci!

Exemple:

  • Pré-raccourci:

Raccourci de pré-image


  • Post-raccourci:

Raccourci post-image


1
+1 question très intéressante, vous pourriez trouver cette réponse à une question sans rapport utile - le programme devilspie pourrait être pertinent pour ce problème s'il n'y a pas d'outil GUI existant.
evilsoup

Pour l'archive: gist.github.com/psi-4ward/18c3a596d28a3cfa772101af755545df Un script qui respecte les applications récemment utilisées
Psi

Réponses:


9

Vous pouvez appuyer sur Alt+ Tabpour basculer entre les fenêtres et Alt+ Shift+ Tabpour revenir entre les fenêtres. Ce raccourci est conçu pour fonctionner dans presque tous les systèmes d'exploitation graphiques. Yow peut également utiliser les touches Super+ Wet fléchées dans le même but.

Après avoir placé une fenêtre de terminal à l'avant, appuyez sur Alt+ ~pour afficher toutes les autres fenêtres de terminal à l'avant une par une:

passer aux fenêtres


Pour amener automatiquement tous les terminaux ouverts à l'avant (pas un par un comme je l'ai décrit précédemment), vous devrez ajouter un raccourci clavier pour le script suivant (script tiré de la réponse d' Adobe et amélioré étant donné que la version du script n'a pas fonctionné pour moi):

#!/bin/bash

if [ $# -ne 1 ];then
  echo -e "Usage: `basename $0` PROGRAM_NAME\n
           For example:\n\t
           '`basename $0` gnome-terminal' for Terminal\n\t
           '`basename $0` firefox' for Firefox\n\t
           '`basename $0` chromium-browser' for Chromium\n\t..."
  exit 1
fi

pids=" $(pidof $@) "

if [ "$pids" = "  " ]; then # the string "  " contain two spaces
    echo "There is no program named '$@' opened at the moment."
    exit 1
fi

wmctrl -lp | while read identity desktop_number PID window_title; do 
    if [ "${pids/ $PID }" != "$pids" ]; then
        wmctrl -ia $identity
    fi
done

N'oubliez pas de rendre le script exécutable:

chmod +x /path/to/script/script_name

Après avoir testé le script dans le terminal, vous devez voir:


3
Merci, mais c'est essentiellement la même chose que de cliquer sur l'icône du terminal et de sélectionner chacun pour le mettre en avant. Je veux dire un raccourci qui amènera tous les terminaux ouverts à l'avant. Un exemple étant que je pourrais écrire du code dans gedit, vouloir le compiler dans un terminal tout en regardant la sortie d'un journal dans un autre terminal.
TomSelleck

"La capture d'écran sera prise dans 1 seconde" ... hmm quelqu'un vient de mentir ici ...
Carlos Campderrós

1
@Tomcelic Voir mes nouvelles modifications. Je veux dire que je travaillais sur un tel script pendant qu'Adobe a publié son How to Answer (qui pour moi n'a pas fonctionné), alors ne le prenez pas de la mauvaise façon.
Radu Rădeanu

8

Voici un petit script bash qui met en avant toutes les fenêtres dont le titre correspond à ARG:

bring-all-windows.bash ARG

Le script:

#!/bin/bash

Program=$@

wmctrl -l | while read Window; do
    if [[ "$Window" == *"$Program"* ]]; then
        echo "DEBUG: I bring $Window"
        code=`echo "$Window" | cut -f 1 -d " "`
        wmctrl -i -a $code
    fi
done

Vous pouvez lier

bring-all-windows.bash Terminal

à un raccourci clavier (n'oubliez pas de mettre le script dans un shell de connexion PATH, ou d'écrire un chemin complet vers celui-ci).

Le script doit wmctrlêtre installé.

Modifier :

Pour exécuter quelque chose à partir du terminal, accédez au répertoire où vous placez le script, puis

chmod +x bring-all-windows.bash
./bring-all-windows.bash Terminal

Lorsque vous êtes sûr qu'il fonctionne à partir du terminal, essayez de le lier à un raccourci clavier, en donnant le chemin d'accès complet. Lorsque vous êtes sûr qu'il fonctionne avec un raccourci clavier et le chemin d'accès complet au script, essayez d'ajouter son répertoire au PATH du shell de connexion et voyez si cela fonctionne de cette façon.


Ça semble bon! Je vais l'essayer sous peu et je vous répondrai. Je suis toujours un peu perplexe quant à la raison pour laquelle il n'y a pas de méthode native pour cela, il semble que cela devrait être naturel.
TomSelleck

@Tomcelic: Il y a un wmctrlet bash: c'est naturel.
Adobe

Vrai mais ce n'est pas natif: P
TomSelleck

Y a-t-il une chance que cela vous dérange de parcourir comment utiliser ce script ?? J'ai créé le script et l'ai enregistré dans mon dossier personnel et ajouté son chemin vers / etc / shells. J'ai également ajouté un raccourci dans les paramètres du clavier avec le nom bring_terminals_forward et la commande est bash /home/michael/Scripts/bring-all-windows.bash Terminal
TomSelleck

L'exécution du script directement à partir d'un terminal en cours d'exécution ne semble pas fonctionner non plus ... Il fonctionne pour des programmes comme gedit, mais pas pour Terminal
TomSelleck

0

Une autre façon utilise xdotool. Vous devez d'abord l'installer, c'est donc sudo apt-get install xdotoolobligatoire.

xdotool search --class "terminal" windowactivate %@
xdotool search --name "braiam@bt" windowactivate %@

La première recherche de tout binaire appelé *terminal*, la seconde recherche toute fenêtre qui a pour titre *braiam@bt*. Ensuite, si vous mettez cela dans un script bash:

#!/bin/bash

set -e
program=$@

xdotool search --class '$program' windowactivate %@
xdotool search --name '$program' windowactivate %@

Vous pouvez en savoir plus à ce sujet dans le xdotoolmanuel.


0

Graphiquement sur mon bureau Ubuntu, mes icônes sont disposées verticalement sur la marge de gauche de mon bureau. Si vous faites un clic gauche sur l'icône du terminal, vous verrez toutes les fenêtres du terminal. Ensuite, vous pouvez choisir celui dans lequel travailler. Si vous cliquez avec le bouton droit sur l'icône du terminal, vous verrez une liste de menus avec un "Nouveau terminal" en haut, et tous vos terminaux ouverts dans la partie inférieure de la liste. Vous pouvez sélectionner celui qui sera votre terminal actif.

Cette même méthode devrait fonctionner pour toute autre application telle que votre navigateur.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.