Ouvrir le programme déjà en cours d'exécution via le terminal

10

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?

Kunok
la source
1
Sur la base de la réponse acceptée, je pense que vous vouliez concentrer une fenêtre existante, pas ouvrir une nouvelle fenêtre. J'ai soumis une modification à clarifier, mais elle est en attente d'examen.
jpaugh

Réponses:

14

En une ligne

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.

Explication

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

Dans un petit script

... à exécuter avec l'application comme argument:

#!/bin/bash

wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "$1")" | tail -1 | awk '{ print $1 }')"
  • Enregistrez-le dans un fichier vide sous switchto.sh
  • Rendez-le exécutable
  • Exécutez-le en tant que (par exemple)

    /path/to/switchto.sh firefox
    

Des alternatives?

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.

Jacob Vlijm
la source
1

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
Sabrina Spelman
la source