Wie schließe ich alle Instanzen eines Programms sofort?

11

Die Katze meiner Freundin lief auf meinem Laptop und ich bemerkte sie nicht. Als ich mich umdrehte, um zu überprüfen, sehe ich, dass ich 32 Registerkarten "Archivmanager" habe. Wie kann ich sie alle sofort schließen, als würde ich Alt+ F4auf alle gleichzeitig verwenden?

sticsk
quelle

Antworten:

14

Über die Befehlszeile:

killall file-roller

Sie können alt + f4 ausführen, dies müssen Sie jedoch für jeden geöffneten Archivmanager tun.

Rinzwind
quelle
21
Obwohl einige vielleicht argumentieren, dass der Befehl "killall" etwas hartnäckig ist, ist Ihr Befehl immer noch eine viel humanere Lösung als die kill catAktion, die ich vorschlagen wollte.
Nick Weinberg
Ich glaube nicht, dass es einen einfacheren Weg gibt, sie alle aufzuhalten. Viele Alt + F4 würden es tun, aber das war nicht die Frage ;-)
Rinzwind
5
@ NickWeinberg Ich schätze es :)
Katze
5
Ich habe diese Frage gelesen und falsch beantwortet. Ich dachte, es ging darum, dass die Katze alles geschlossen hatte und dass OP nicht wusste, wie die Katze es tat. Ich war erstaunt, dass die Katze schreiben konnte killall file-roller: D
Viktor Mellgren
1
verdammt @ViktorMellgren hör auf, mir Kaffee auf meinem Bildschirm zu
verschütten
3

Ein anderer Ansatz wäre die Verwendung des wmctrlDienstprogramms (Windows Manager-Steuerelement). Dies kann verwendet werden, um den Fenstermanager anzuweisen, so zu tun, als hätten Sie auf die Schaltfläche zum Schließen geklickt. Dies vermeidet die potenziell hartnäckige Natur von killall; Beispielsweise werden einige Programme mit einem nicht gespeicherten Dokument sofort beendet, wenn sie beendet werden (sogar sanft). Wenn Sie auf die Schaltfläche "Schließen" klicken, wird die Meldung "Möchten Sie speichern?" angezeigt. Prompt.

Der grundlegende Befehl lautet wmctrl -c WINDOWTITLEalso in diesem Fall wmctrl -c "Archive Manager"(vorausgesetzt, es gibt keine geöffnete Datei: das ändert den Titel). Leider wird immer nur einer geschlossen, sodass wir mehr tun müssen, um alle zu schließen.

wmctrl Gibt den Erfolg zurück, wenn eine Übereinstimmung gefunden wird, sodass wir eine Schleife ausführen können, bis sie fehlschlägt:

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

Dadurch wird immer das erste Fenster ausgewählt, das gefunden wird. Daher müssen wir eine Weile schlafen, um zu vermeiden, dass kontinuierlich ein Strom von Schließbefehlen an das erste Fenster gesendet wird, das bereits geschlossen ist. Dies kann einen Fehler verursachen, der die Schleife stoppt.

Dies ist einfach und funktioniert normalerweise, aber eine bestimmte Zeit zu schlafen und zu hoffen, dass sich ein Fenster schließt, bevor wir es erneut versuchen, ist ein unordentlicher und langsamer Weg, um den Fehler zu vermeiden. Was wir wirklich tun möchten, ist, sofort eine Abschlussnachricht an jedes passende Fenster zu senden.

Wir können alle offenen Fenster mit finden wmctrl -l. Hier wird eine numerische Fenster-ID aufgelistet, mit der wir jedes Fenster einzeln identifizieren können, auch wenn alle denselben Titel haben. Dann müssen wir nur nach den passenden Fenstern (dem grepBefehl) filtern, nur die Fenster-ID (den cutBefehl) herausziehen und wmctrl -i -cfür jedes aufrufen . Das -iwird benötigt, um mit der Fenster-ID anstelle des Fenstertitels übereinzustimmen.

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

Ein bisschen kompliziert, wenn Sie nur eingeben, wenn eine Katze auf Ihre Tastatur tritt, aber hoffentlich eine praktische Technik, um sie in Ihrer Skript-Toolbox zu behalten.

Harun
quelle
2
Sie erwarten also, dass die Katze etwas eingibt, das es wert ist, gerettet zu werden?
Rinzwind
0

Sie können die Tastenkombination Ctrl+ verwenden, mit der Qalle geöffneten Fenster von Archive Manager geschlossen werden.


Die Verknüpfung Ctrl+ Qist unter Ubuntu (und vielen anderen Distributionen) üblich. Es funktioniert genauso mit den meisten Anwendungen, die ich bisher verwendet habe. Das heißt, es werden alle Fenster einer laufenden Anwendung geschlossen.

Dan
quelle
Machen Sie meine Abstimmung rückgängig, da ich nicht bestätigen kann, dass dies Ctrl+Qtatsächlich der Fall ist. Während das QuitMenü alle geöffneten Fenster von Archive Manager geschlossen hat, hat die Tastenkombination nicht dasselbe getan (zumindest in 14.04).
Clearkimura
1
@clearkimura Ich kann nicht bestätigen, ob es an der Tatsache liegt, dass ich Gnome verwende, oder ob es an der Ubuntu-Version liegt, aber es funktioniert für mich unter Ubuntu 17.04 (mit Gnome), das Archive Manager Version 3.22.3
Dan