Gnome (Ubuntu): comment amener une fenêtre de programme au premier plan en utilisant une ligne de commande depuis le terminal?

14

J'ai un certain environnement de travail avec des dizaines de fenêtres ouvertes. Comment faire apparaître au premier plan une fenêtre avec un nom / titre connu par programmation ou en utilisant la ligne de commande?

GJ.
la source

Réponses:

12

J'avais l'habitude d'utiliser wmctrl -a <name>, qui fonctionne bien, mais j'ai récemment changé xdotool, par exemple:

xdotool search --name <name-or-regex-for-name> windowraise

Il possède également de nombreuses autres fonctionnalités.

À installer:

sudo apt-get install xdotool

frabjous
la source
5
xdotool windowraiseamène la fenêtre à l'avant mais ne donne pas le focus à la fenêtre ou ne passe pas au bureau avec la fenêtre. au lieu de cela, windowactivatefera les trois.
jozxyqk
6

Eh bien, après sudo apt-get install wmctrl-ing, vous pouvez jouer avec ce script bash:

#! /bin/bash

WINTITLE="Mail/News" # Main Thunderbird window has this in titlebar
PROGNAME="mozilla-thunderbird" # This is the name of the binary for t-bird

# Use wmctrl to list all windows, count how many contain WINTITLE,
# and test if that count is non-zero:

if [ `wmctrl -l | grep -c "$WINTITLE"` != 0 ]
then
wmctrl -a "$WINTITLE" # If it exists, bring t-bird window to front
else
$PROGNAME & # Otherwise, just launch t-bird
fi
exit 0

Que j'ai trouvé ici

digitxp
la source
4
Pas besoin de supports et de crochets:if ! wmctrl -l | grep -q "$WINTITLE"
Pause jusqu'à nouvel ordre.
wmctrla une -ioption, qui prend en charge l'utilisation de la fenêtre avec son identificateur hexadécimal. Et donc vous pouvez le faire wmctrl -lp|grep 'whatever incomplete name'|cut -d' ' -f1|xargs wmctrl -ai- ce qui ferait quelque chose de similaire
vlad-ardelean
0

Lors de l'utilisation xdotool, il semble difficile de mettre en avant toutes les fenêtres d'une application ou d'une classe donnée en utilisant une seule commande. Je finis par avoir de meilleurs résultats en l'enveloppant dans une forboucle au niveau du shell. Utilisation de Bash:

for WINDOW in $(xdotool search --desktop 0 Firefox); do
   xdotool windowactivate ${WINDOW}
done

Quelques remarques:

  • Par défaut, xdotool searchrecherchera le modèle (ici Firefox) dans le nom de la fenêtre, la classe et le nom de classe. Si vous souhaitez restreindre votre espace de recherche, utilisez les pertinentes --class, --nameou des --classnameoptions.
  • L' --desktop 0option limite la recherche au premier bureau. Cela semble être une solution de contournement pour éviter ce qui est XGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)mentionné dans certains commentaires.
  • Au moment d'écrire ces lignes, le xdotoolprojet est au point mort depuis 2015. Il reste toujours mon outil de choix. Pour des raisons personnelles, Jordan Sissel (l'auteur original) n'est pas aussi actif que par le passé, alors n'hésitez pas à contribuer au projet.


Ceci est une copie d'une réponse que j'ai publiée sur AskUbuntu , mais je pense qu'elle est indépendante de la saveur Linux, elle peut donc être utile ici aussi.

Sylvain Leroux
la source