Le wmctrl
programme est exactement ce que vous recherchez (sudo apt-get install wmctrl
). Vous pouvez utiliser le wmctrl -a "AppTitle"
commande pour mettre l'application au premier plan. wmctrl -l
listera toutes les fenêtres disponibles, il devrait donc être facile d'écrire un script shell qui vérifie si votre programme est en cours d'exécution et le lance ou le place au premier plan. Ensuite, vous pouvez simplement lier cela à un raccourci clavier.
Enregistrez d'abord le script suivant quelque part, j'utiliserai /home/jtb/code/bringToFront
. Il faut deux arguments, le premier est ce que vous taperiez sur le terminal pour lancer le programme, le second est une sous-chaîne du titre de la fenêtre du programme. S'il n'y a pas de chaîne unique constante dans le titre, vous devrez faire un peu plus de travail pour trouver la fenêtre du programme.
#!/bin/bash
if [ `wmctrl -l | grep -c "$2"` != 0 ]
then
wmctrl -a "$2"
else
$1 &
fi
-
Avec le script dans votre répertoire actuel, exécutez
chmod +x bringToFront
pour rendre le script exécutable. Assurez-vous ensuite que cela fonctionne; pour lancer/focus firefox, vous pouvez exécuter./bringToFront firefox "Mozilla Firefox"
. -
Nous devons maintenant lier une touche de raccourci. Exécutez
gconf-editor
et naviguez dans la structure des dossiers vers la gauche jusqu'à/apps/metacity/keybinding_commands
. -
Double-cliquez sur le premier
command
avec une valeur vide, probablementcommand_1
. Tapez le chemin d'accès complet au script et fournissez les deux paramètres, par ex./home/jtb/code/bringToFront firefox Firefox
. -
Dans le panneau de gauche, sélectionnez
global_keybindings
, le dossier suivant. Trouvez lerun
entrée correspondant à la commande que vous venez de définir, probablementrun_command_1
. Double-cliquez dessus et tapez le raccourci clavier que vous souhaitez utiliser. Mettez les modificateurs entre crochets, par ex.<Ctrl><Alt>F
.
Maintenant Contrôle + Alt + F amènera votre fenêtre firefox au premier plan, ou la lancera si elle n'est pas déjà en cours d'exécution.
Voici une autre façon de le faire avec xdotools
. Le processus de pop-up est reconnu par la ligne de commande émise pour l'exécuter (aucun fichier pid ou titre de fenêtre unique n'est nécessaire).
#!/bin/bash
cmd="[email protected]"
# command line to be run. Note that the resulting
# process will hold this in /proc/PID/cmdline
pid=`pgrep -nf "^$cmd$"`
# most recent process having "$cmd" in /proc/PID/cmdline
if [ -z "$pid" ]; then # no pid
exec $cmd
# run command
else
winid=`xdotool search --all --pid $pid --onlyvisible | head -1`
# first visible window owned by pid
xdotool windowactivate $winid
# give window focus
fi