Commande Bash pour focaliser une fenêtre spécifique

50

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 donne le focus à la fenêtre de Firefox, en le rendant la fenêtre active.

Malabarba
la source

Réponses:

78

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
Malabarba
la source
6
Je suis content de voir que quelqu'un lit et je ne me cache pas. =)
Malabarba
1
Essayez aussi xdotool .
Andres Riofrio
C'est génial pour redéfinir le focus sur gdb (débogueur) lorsqu'il lance une cible de débogage avec une fenêtre qui vole le focus, comme kvm. Utilisez la commande gdb shell wmctrl -a something, où quelque chose est quelque chose dans le titre du terminal du débogueur.
Doug65536
Merci beaucoup, c'est de l'or pur, j'avais peur de perdre tout mon travail en attente dans une fenêtre de Chrome qui a disparu en arrière-plan, cela a fonctionné!
Osmar le
9

En wmctrlcombinaison avec, xdotoolvous pouvez activer 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:

  1. Mettre en évidence la première fenêtre Firefox correspondante
  2. Ouvrir un nouvel onglet de navigateur
  3. Met le focus dans la barre d'adresse
  4. Tapez "google"
  5. Tabulation jusqu'au premier résultat de saisie automatique du navigateur
  6. Appuyez sur la touche Retour (ou Entrée)
Christopher
la source
4

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
swj
la source