Come chiudere istantaneamente tutte le istanze di un programma?


11

Il gatto della mia ragazza stava camminando sul mio laptop e non l'ho notato. Quando mi sono girato per controllare, ho visto che ho 32 schede "Gestore archivio". Come posso chiuderle tutte all'istante, come se usassi Alt+ F4su tutte in una volta.

Risposte:


14

Dalla riga di comando:

killall file-roller

Puoi fare alt + f4 ma devi farlo per ogni gestore degli archivi che è stato aperto.


21
Anche se alcuni potrebbero sostenere che il comando "killall" è un po 'pesante, il tuo è ancora una soluzione molto più umana kill catdell'azione che stavo per suggerire.
Nick Weinberg,

Non penso che ci sia un modo più semplice per fermarli tutti. Molti alt + f4 lo farebbero ma non era questa la domanda ;-)
Rinzwind

5
@NickWeinberg Lo apprezzo :)
gatto

5
Ho letto questa domanda e ho risposto male. Pensavo che riguardasse il fatto che il gatto avesse chiuso tutto e che OP non sapesse come il gatto lo avesse fatto. Sono rimasto sorpreso dal fatto che il gatto fosse in grado di scrivere killall file-roller: D
Viktor Mellgren il

1
accidenti @ViktorMellgren smettila di farmi versare il caffè sul mio schermo
Rinzwind

3

Un altro approccio sarebbe quello di utilizzare l' wmctrlutilità (controllo Window Manager). Questo può essere usato per dire al gestore delle finestre di far finta di aver fatto clic sul pulsante Chiudi. Questo evita la natura potenzialmente pesante di killall; ad esempio, alcuni programmi con un documento non salvato usciranno immediatamente quando vengono uccisi (anche delicatamente), mentre facendo clic sul pulsante di chiusura viene visualizzato il messaggio "Desideri salvare?" richiesta.

Il comando di base è wmctrl -c WINDOWTITLE, quindi in questo caso wmctrl -c "Archive Manager"(supponendo che non abbia un file aperto: questo cambia il titolo). Sfortunatamente, ne chiude solo uno alla volta, quindi dobbiamo fare di più per chiuderli tutti.

wmctrl restituisce esito positivo se trova una corrispondenza, quindi possiamo eseguire il ciclo fino a quando non riesce:

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

Questo sceglie sempre la prima finestra che trova, quindi abbiamo bisogno di dormire un po 'per evitare di inviare continuamente un flusso di comandi di chiusura alla prima finestra che è già occupata a chiudere - che può causare un errore che interrompe il ciclo.

Questo è semplice e di solito funziona, ma dormire un determinato periodo di tempo e sperare che una finestra si chiuda prima di riprovare è un modo disordinato e lento per evitare l'errore. Quello che vogliamo davvero fare è inviare immediatamente un messaggio di chiusura a ogni finestra corrispondente.

Possiamo trovare tutte le finestre aperte con wmctrl -l. Questo elenca un ID di finestra numerico che possiamo usare per identificare ogni finestra singolarmente, anche se hanno tutti lo stesso titolo. Quindi dobbiamo filtrare solo le finestre corrispondenti (il grepcomando), estrarre solo l'id della finestra (il cutcomando) e chiamare wmctrl -i -cper ognuna. Il -iè necessario per abbinare l'id della finestra al posto del titolo della finestra.

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

Un po 'complicato semplicemente digitando ogni volta che un gatto preme sulla tastiera, ma si spera sia una tecnica utile da tenere nella casella degli strumenti di scripting.


2
Quindi ti aspetti che il gatto scriva qualcosa che vale la pena salvare?
Rinzwind,

0

Puoi usare la scorciatoia da tastiera Ctrl+ Qche chiuderà tutte le finestre aperte di Archive Manager.


Il collegamento Ctrl+ Qè comune su Ubuntu (e molte altre distribuzioni). Funziona allo stesso modo con la maggior parte delle applicazioni che ho usato finora. Cioè, chiuderà tutte le finestre di un'applicazione in esecuzione.


Annulla il mio voto, dal momento che non posso confermare che Ctrl+Qeffettivamente lo fa. Mentre il Quitmenu ha chiuso tutte le finestre aperte di Archive Manager, il tasto di scelta rapida non ha fatto lo stesso (almeno in 14.04).
clearkimura,

1
@clearkimura Non posso confermare se è dovuto al fatto che sto usando gnome o se è a causa della versione di Ubuntu, ma funziona per me su Ubuntu 17.04 (con gnome) che utilizza Archive Manager versione 3.22.3
Dan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.