2013-08-15 23:29

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
2013-08-15 23:29 · Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>