Comment passer à un programme déjà en cours d'exécution à l'aide du terminal?
Par exemple:
firefox ouvre une nouvelle fenêtre firefox.
Existe-t-il une commande qui concentrera la fenêtre Firefox déjà ouverte?
Comment passer à un programme déjà en cours d'exécution à l'aide du terminal?
Par exemple:
firefox ouvre une nouvelle fenêtre firefox.
Existe-t-il une commande qui concentrera la fenêtre Firefox déjà ouverte?
Réponses:
En supposant que vous avez installé wmctrl (exécutez sudo apt-get install wmctrlsinon):
La commande:
wmctrl -ia "$(wmctrl -lp | grep "$(pgrep gedit)" | tail -1 | awk '{ print $1 }')"
Augmenterait la dernièregedit fenêtre ouverte . Remplacez-le par toute autre application.
pgrep gedit
obtient le pid de gedit
wmctrl -lp
répertorie toutes les fenêtres et le pid auquel elles appartiennent
awk '{ print $1 }'
divise le window- id (la première chaîne de la ligne)
$(wmctrl -lp | grep "$(pgrep gedit)" | tail -1 | awk '{ print $1 }')
trouve donc l'id de la fenêtre de la dernière fenêtre créée de gedit(la sortie de wmctrl -lpliste les fenêtres dans un ordre chronologique de création, si l'application a plusieurs fenêtres, tail -1renvoie la dernière).
wmctrl -ia
lève ensuite la fenêtre par son window-id
... à exécuter avec l'application comme argument:
#!/bin/bash
wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "$1")" | tail -1 | awk '{ print $1 }')"
switchto.shExécutez-le en tant que (par exemple)
/path/to/switchto.sh firefox
Théoriquement, la commande:
xdotool search --class gedit windowactivate
devrait faire (un peu) la même chose; il devrait ouvrir la première fenêtre trouvéegedit dans ce cas.
Il semble cependant moins robuste. Sur mon système (Unity), cela n'a rien fait du tout.
Si vous avez exécuté Firefox avec, firefox &vous pouvez utiliser jobspour voir son numéro. Pour l'amener au premier plan, écrivez %n firefoxqui nreprésente son numéro. Exemple:
sabrina@ubuntu:~$ jobs
[1]+ Stopped firefox
sabrina@ubuntu:~$ fg %1
Vous pouvez également "tuer" le programme:
sabrina@ubuntu:~$ kill %1