Réponses:
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
if ! wmctrl -l | grep -q "$WINTITLE"
wmctrl
a une -i
option, 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
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 for
boucle au niveau du shell. Utilisation de Bash:
for WINDOW in $(xdotool search --desktop 0 Firefox); do
xdotool windowactivate ${WINDOW}
done
Quelques remarques:
xdotool search
recherchera 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
, --name
ou des --classname
options.--desktop 0
option 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.xdotool
projet 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.
xdotool windowraise
amè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,windowactivate
fera les trois.