Existe-t-il un moyen, dans la ligne de commande bash, de mettre l'accent sur une fenêtre spécifique d'un processus en cours d'exécution. Supposons que je connais le nom, le numéro et tout ce dont j'ai besoin.
Par exemple, si j'ai une seule instance de Firefox en cours d'exécution, mais elle est minimisée (ou il y a une autre fenêtre sur elle). J'ai besoin d'une commande bash qui apporte et met l'accent sur la fenêtre de Firefox, en la faisant la fenêtre 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 avait besoin.
wmctrl -l
Liste les fenêtres actuellement ouvertes (y compris les panneaux gnome).
wmctrl -a STRING
Donne l'accent sur une fenêtre contenant STRING dans son titre. Je ne suis pas sûr de ce qui se passe si plus d'une fenêtre rencontre cette condition.
Dans mon cas, la commande était:
wmctrl -a Firefox
En utilisant wmctrl
en combinaison avec xdotool
vous pouvez basculer vers Firefox, puis effectuer des actions de clavier ou de 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? Le 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é au raccourci personnalisé du clavier. Ctrl + 1, ctrl + 2, …
Cat 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