http://vickychijwani.github.io/2012/04/15/blazing-fast-application-switching-in-linux/
J’ai fait quelques améliorations sur le script. Plus de fonctionnalités, mais un peu plus complexe.
- Utilisation de /bin/sh pour pouvoir utiliser dash à la place de bash (plus léger)
- Utilisation de exec pour lancer la commande pour remplacer le script courant (sinon vous avez des procéssus inutile dans ps)
- Remonte toutes les fenêtres de la même classe : utile pour remonter tous les terminaux par exemple
- “Mode bascule” : lancé une seconde fois, les fenêtres sont minimisées. Pour cela le script dépend de xdotool. wmctrl ne sais pas faire encore (à venir dans une version future. L’auteur a commité une option -Y sur github pour ça).
Installez le script /home/USER/bin/run-or-raise
et ajoutez quelques raccourcis clavier dans votre gestionnaire de fenêtres et voila!
<Super>f /home/USER/bin/run-or-raise Navigator.Firefox firefox
#!/bin/sh # syntax: run-or-raise WM_CLASS_name COMMAND # WM_CLASS_name : the WM_CALL_name of the window (from wmctrl -lx output) # COMMAND : the command to run if nothing to raise #logfile=/tmp/$(basename $0).log #exec > $logfile 2>&1 # get windows ids matching WM_CLASS_name WINIDS=$(wmctrl -lx | awk '{ if ($3 == "'"$1"'") print $1}') # run if nothing started. exec will end the script [ -z "$WINIDS" ] && exec "$2" # if the window is active, we minimize all the windows of the class ACTIVEWIN=$(wmctrl -a :ACTIVE: -v 2>&1 | sed -n 's/^Using window: \(.*\)/\1/p') MINIMIZE=false if echo "$WINIDS" | grep -q "$ACTIVEWIN"; then MINIMIZE=true fi for ID in $WINIDS; do if $MINIMIZE; then xdotool windowminimize "$ID" else wmctrl -i -a "$ID" fi done