Existe-t-il un moyen, en ligne de commande bash, de mettre en évidence une fenêtre spécifique d'un processus en cours d'exécution? Supposons que je connaisse le nom du processus, son numéro et tout ce dont j'ai besoin.
Par exemple, si une seule instance de Firefox est en cours d'exécution, mais qu'elle est réduite au minimum (ou qu'il existe une autre fenêtre par-dessus). J'ai besoin d'une commande bash qui appelle et met en évidence la fenêtre de Firefox, en la rendant active.
La commande wmctrl semble faire le travail. Il était déjà installé pour moi, mais il est disponible dans les dépôts au cas où quelqu'un en aurait besoin.
wmctrl -l
Répertorie les fenêtres actuellement ouvertes (y compris les panneaux gnome).
wmctrl -a STRING
Donne le focus à une fenêtre contenant STRING dans son titre. Je ne suis pas sûr de ce qui se passera si plusieurs fenêtres remplissent cette condition.
Dans mon cas, la commande était la suivante:
wmctrl -a Firefox
En utilisant wmctrl
en combinaison avec xdotool
, vous pouvez basculer le focus sur Firefox puis effectuer des actions au clavier ou à la souris.
Dans cet exemple:
wmctrl -R firefox && \
xdotool key --clearmodifiers ctrl+t ctrl+l && \
xdotool type --delay=250 google && \
xdotool key --clearmodifiers Tab Return
Les étapes suivantes sont exécutées:
Comment est le script ci-dessous que j'utilise dans mon pc Ubuntu? cas d'utilisation est comme ça.
$ ./focus_win.sh 1 # focus on a application window that executed at first
$ ./focus_win.sh 2 # second executed application window
Je l'utilise après l'avoir assigné dans un raccourci clavier personnalisé. Ctrl + 1, Ctrl + 2, ...
chat focus_win.sh
#! /bin/sh
if [ "" = "$1" ] ; then
echo "usage $0 <win index>"
exit 1;
fi
WIN_ID=`wmctrl -l | cut -d ' ' -f1 | head -n $1 | tail -n 1`
if [ "" = "$WIN_ID" ] ; then
echo "fail to get win id of index $1"
exit 1;
fi
wmctrl -i -a $WIN_ID