Pour faire une commande qui trouve la id
de la dernière fenêtre, créée par Firefox
(et pour la fermer), vous devrez wmctrl
être installé:
sudo apt-get install wmctrl
La commande
Utilisez ensuite la commande:
wmctrl -ic "$(wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }')"
Explication:
wmctrl -l
répertorie toutes les fenêtres, mais une propriété importante de la commande est qu'elle répertorie les fenêtres dans l'ordre dans lequel elles ont été créées .
Donc:
wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }'
volonté:
lister toutes les fenêtres:
wmctrl -l
trouver ceux (les lignes) avec 'Mozilla Firefox' dans leur nom:
grep 'Mozilla Firefox'
trouver le dernier (qui est aussi le dernier créé):
tail -1
extraire la première chaîne de la ligne (qui est la fenêtre -id):
awk '{ print $1 }'
La commande:
wmctrl -ic
va alors tuer la fenêtre Firefox la plus récente par son identifiant (gracieusement).
Ou encore plus fiable:
Bien que la commande ci-dessus fonctionne bien dans pratiquement tous les cas, il y a une petite chance de conflits de noms, si par exemple une autre fenêtre existe avec "Mozilla Firefox" dans son nom, mais pas une fenêtre de Firefox
(peu probable, mais quand même).
Ce qui devrait fonctionner "waterproof" est donc d'identifier les fenêtres dans la liste des fenêtres (en utilisant wmctrl -lp
) par le pid de firefox
, au lieu de la chaîne dans le nom de la fenêtre:
wmctrl -ic "$(wmctrl -lp | grep "$(pgrep firefox)" | tail -1 | awk '{ print $1 }')"
Comme vous pouvez le voir, dans cette commande,
wmctrl -l | grep 'Mozilla Firefox'
produisant les lignes contenant 'Mozilla Firefox', est remplacée par:
wmctrl -lp | grep "$(pgrep firefox)"
produire les lignes contenant le pid de firefox (en sortie de pgrep firefox
)