Comment fermer instantanément toutes les instances d'un programme?

11

Le chat de ma copine marchait sur mon ordinateur portable et je ne l'ai pas remarquée. Quand je me suis tourné pour vérifier, je vois que j'ai 32 onglets "Archive Manager". Comment puis-je les fermer tous instantanément, comme si vous utilisiez Alt+ F4sur chacun d'eux à la fois.

sticsk
la source

Réponses:

14

Depuis la ligne de commande:

killall file-roller

Vous pouvez faire alt + f4 mais vous devez le faire pour chaque gestionnaire d'archives qui a été ouvert.

Rinzwind
la source
21
Bien que certains puissent soutenir que la commande "killall" est un peu lourde, la vôtre est toujours une solution beaucoup plus humaine que l' kill cataction que j'allais suggérer.
Nick Weinberg
Je ne pense pas qu'il existe un moyen plus simple de les arrêter tous. Beaucoup d'alt + f4 le feraient mais ce n'était pas la question ;-)
Rinzwind
5
@NickWeinberg Je l'apprécie :)
chat
5
J'ai lu cette question et je réponds mal. Je pensais qu'il s'agissait du chat qui avait tout fermé et que OP ne savait pas comment le chat avait fait. J'ai été étonné que le chat ait pu écrire killall file-roller: D
Viktor Mellgren
1
putain de @ViktorMellgren arrête de me faire couler du café sur mon écran
Rinzwind
3

Une autre approche serait d'utiliser l' wmctrlutilitaire (contrôle Window Manager). Cela peut être utilisé pour dire au gestionnaire de fenêtres de faire semblant d'avoir cliqué sur le bouton Fermer. Cela évite la nature potentiellement brutale de killall; par exemple, certains programmes avec un document non enregistré se fermeront immédiatement lorsqu'ils sont tués (même doucement), tandis que cliquer sur le bouton de fermeture fait apparaître "Voulez-vous enregistrer?" rapide.

La commande de base est wmctrl -c WINDOWTITLE, donc dans ce cas wmctrl -c "Archive Manager"(en supposant qu'elle n'a pas de fichier ouvert: cela change le titre). Malheureusement, il ne se ferme qu'un à la fois, nous devons donc en faire plus pour les fermer tous.

wmctrl renvoie le succès s'il trouve une correspondance, nous pouvons donc boucler jusqu'à ce qu'il échoue:

while wmctrl -c "Archive Manager"; do sleep 0.1; done

Cela choisit toujours la première fenêtre qu'il trouve, nous devons donc dormir un peu pour éviter d'envoyer continuellement un flux de commandes de fermeture à la première fenêtre qui est déjà occupée à fermer - ce qui peut provoquer une erreur qui arrête la boucle.

C'est simple et cela fonctionne généralement, mais dormir pendant un certain temps et espérer qu'une fenêtre se ferme avant de réessayer est un moyen compliqué et lent d'éviter l'erreur. Ce que nous voulons vraiment faire, c'est envoyer immédiatement un message de fermeture à chaque fenêtre correspondante.

Nous pouvons trouver toutes les fenêtres ouvertes avec wmctrl -l. Cela répertorie un identifiant de fenêtre numérique que nous pouvons utiliser pour identifier chaque fenêtre individuellement, même si elles ont toutes le même titre. Ensuite, nous devons filtrer uniquement les fenêtres correspondantes (la grepcommande), extraire uniquement l'ID de la fenêtre (la cutcommande) et appeler wmctrl -i -cchacune d'elles. Le -iest nécessaire pour faire correspondre l'ID de la fenêtre au lieu du titre de la fenêtre.

for w in $(wmctrl -l | grep "Archive Manager" | cut -d" " -f1); do
    wmctrl -i -c $w
done

Un peu compliqué pour simplement taper chaque fois qu'un chat marche sur votre clavier, mais j'espère une technique pratique à conserver dans votre boîte à outils de script.

Harun
la source
2
Vous vous attendez donc à ce que le chat tape quelque chose qui mérite d'être sauvé?
Rinzwind
0

Vous pouvez utiliser le raccourci clavier Ctrl+ Qqui fermera toutes les fenêtres ouvertes d'Archive Manager.


Le raccourci Ctrl+ Qest commun sur Ubuntu (et de nombreuses autres distributions également). Cela fonctionne de la même manière avec la plupart des applications que j'ai utilisées jusqu'à présent. Autrement dit, il fermera toutes les fenêtres d'une application en cours d'exécution.

Dan
la source
Annulé mon vote, car je ne peux pas confirmer que cela Ctrl+Qfait réellement cela. Bien que le Quitmenu ait fermé toutes les fenêtres ouvertes d'Archive Manager, la touche de raccourci n'a pas fait de même (au moins en 14.04).
clearkimura
1
@clearkimura Je ne peux pas confirmer si cela est dû au fait que j'utilise gnome, ou si c'est à cause de la version Ubuntu, mais cela fonctionne pour moi sur Ubuntu 17.04 (avec gnome) qui utilise Archive Manager version 3.22.3
Dan