Far chiudere le applicazioni Mac OS X dopo aver chiuso l'ultima finestra


45

So che è solo una piscia, ma odio che Preview.app di Mac OS X rimanga aperto quando non ha finestre aperte. C'è un modo per chiuderlo quando la sua ultima finestra è chiusa?

Dal momento che non vedo alcuna opzione all'interno di Preview per realizzarlo, immagino che la risposta potrebbe essere applicabile ad altri programmi che hanno simili ... idiosincrasie.

Mi rendo conto che questo non è al di fuori delle linee guida dell'interfaccia del sistema operativo. Cioè, riconosco che questo non è un bug che verrà risolto. Mi chiedo se esiste un modo per chiudere automaticamente le applicazioni GUI selezionate che non hanno finestre aperte.

Risposte:


22

Prova RedQuits:

RedQuits è lì per aiutarti se hai mai provato a chiudere un'applicazione con il suo pulsante rosso e ti sei chiesto perché è ancora aperto. Con RedQuits, tutti i programmi ora si chiudono quando è rimasta una sola finestra per quel programma. Se vuoi chiudere e chiudere tutte le finestre aperte di un programma, deseleziona "Esci solo quando rimane 1 finestra per quell'app". nelle preferenze.


3
La cosa divertente è che RedQuits non si chiude quando si preme il pulsante rosso, lo dice nelle istruzioni. È semplice, il che è carino, ma nessuna lista bianca.
Michael Ozeryansky,

RedQuits chiude l'applicazione se si fa clic sul pulsante di uscita rosso, ma non quando si chiude l'ultima finestra usando Cmd + W.
Sampo,

23

In breve: no

- La risposta si ferma qui. Tutto ciò che segue è solo il mio tentativo di spiegare il perché.

Quello che stai vivendo è la filosofia Mac di come le applicazioni dovrebbero comportarsi. Coloro che sono chiusi dopo l'ultima finestra scompare non si stanno comportando secondo le Linee guida per l'interfaccia Mac (anche se ci sono molte cose là fuori). // Modifica: non è del tutto corretto, vedere i post di seguito.

È stato così dal primo Mac System (nel 1984). Immagino che resterà con noi per altri 25 anni a venire. Forse gli sviluppatori di app ci permetteranno di impostarlo nelle preferenze.

Fino ad allora aiuta ad abituarsi a Command-Q (il tasto Apple e q) per uscire da ogni app - e Command-W solo per la finestra attiva.


1
La mia opinione personale come commento: lavorare con entrambe le piattaforme ogni giorno: mi ci sono abituato. Non fa molta differenza e, come sempre, ci sono due lati. Mentre l'app è in esecuzione, ogni avvio successivo è estremamente rapido. Quelle app che utilizzo solo una volta ogni tanto potrebbero anche essere chiuse subito dopo averle utilizzate. Mi sono abituato ad Apple-Q / Apple-W sui Mac molto più velocemente di Alt-F4 / Strg-F4 sui Windowsers.
Lupo,

28
Si può anche premere Q mentre si utilizza Comando-Tab per cambiare applicazione (quindi tenendo ancora premuto Comando), per uscire dall'applicazione attualmente evidenziata in quel selettore di applicazioni.
Arjan,

+1 per il commento di Arjan. È un modo fantastico per chiudere un numero enorme di app contemporaneamente. Lo fai ogni volta che devi liberare un po 'di memoria.
Dan Rosenstark,

2
Ciò che mi ha davvero infastidito è che le app minimizzate sono state visualizzate nel selettore di app, ma non sarebbero state ripristinate se le avessi scelte. Che ho trovato molto incoerente. Proprio di recente - dopo letteralmente anni di utilizzo - mi sono imbattuto nel premere ALT mentre passavo all'app (ridotta a icona) per ripristinarla. Hooooray !!!
Lupo,

15
Ad essere brutalmente onesto, non sono così interessato a capire se il sintomo è normale. Sono interessato a come sbarazzarsi del sintomo.
wfaulk,

3

Ho scritto un'applicazione AppleScript per farlo per te.

In breve, controlla quali applicazioni sono aperte, ti dà la possibilità di inserire nella whitelist le app da escludere dall'auto-quit, quindi ogni 60 secondi, chiude tutte le applicazioni (che può, a causa di limitazioni).

Per modificare la whitelist mentre è in esecuzione, fai clic sull'icona nel dock per riapparire la finestra di dialogo di selezione.

Per uscire, fai clic con il tasto destro sull'icona del Dock e scegli "Esci"

Fonte e applicazione AppleScript: http://files.me.com/kioarthurdane/6kjl9k


Sembra una buona idea, tranne che non funziona. Ho dovuto cambiare "nome" in "nome visualizzato" in refreshWindowedProcess () per impedirgli di chiedere "dov'è questa applicazione", ma anche allora sembra che non esca mai da nulla.
wfaulk,

Quale versione di OS X stai usando? Ho scritto la mia sceneggiatura sotto Snow Leopard, non sono sicuro che ci siano stati cambiamenti importanti in AppleScript.
dotHTM,

Non importa, OmniGraffle Pro mi ha fatto proprio questo. Molto divertenti quei casi in cui il nome in Finder non è il nome del file effettivo ... Vedrò se posso scrivere una correzione usando gli identificativi del bundle.
dotHTM,

Aggiornato utilizzando identificativi di bundle anziché nome dell'applicazione (che può essere diverso dal nome file dell'applicazione). Nella fonte, c'è una nota su due righe commentate che riporterà l'elenco delle finestre in ciascun identificatore di bundle. Ho notato che molte applicazioni riportano di avere almeno una finestra aperta nonostante non sia aperta alcuna finestra visibile. NetNewsWire è una di queste app con un lungo elenco di finestre anche dopo che la finestra principale è "chiusa". L'elenco dei risultati è un'altra app che mantiene la sua finestra singola sempre aperta.
dotHTM,

Il conteggio di Windows = 0 sembra il modo più ovvio di rilevare il tuo stato per la chiusura, ma questo non sembra fare il lavoro per tutte le app. Vieni con le tue condizioni da aggiungere al mio codice. Poiché non tutte le applicazioni hanno un dizionario AS, sarà difficile controllare quelle app per qualsiasi altra condizione (per non parlare del dispendio di tempo per creare una regola separata per ognuna). Sono più propenso a concordare con le altre risposte fornite da "Fa parte di Mac Culture avere un'applicazione senza testa ancora in esecuzione" A meno che non stia facendo qualcosa, non occuperà molta CPU o RAM fisica.
dotHTM,

3

La funzionalità di terminazione automatica introdotta in 10.7 risolve parzialmente quella di alcune applicazioni.

Se apri l'anteprima, apri almeno una finestra in essa, chiudi tutte le finestre e passa a un'altra applicazione, l'anteprima viene nascosta dal Dock e dal selettore di applicazioni. Se si guarda Activity Monitor, il processo è ancora in esecuzione e utilizza la memoria, ma potrebbero esserci alcune modifiche nella gestione del processo.

La Guida alla programmazione dell'app per Mac dice che i processi sono effettivamente terminati, quindi potrebbe esserci qualcosa che mi manca.

  • La terminazione automatica elimina la necessità per gli utenti di chiudere un'app. Al contrario, il sistema gestisce la terminazione delle app in modo trasparente dietro le quinte, terminando le app che non sono in uso per recuperare le risorse necessarie come la memoria.

[...]

La terminazione automatica trasferisce il compito di gestire i processi dall'utente al sistema, che è meglio attrezzato per gestire il lavoro. Gli utenti non devono comunque gestire i processi manualmente. Tutto ciò di cui hanno veramente bisogno è eseguire app e renderle disponibili quando ne hanno bisogno. La terminazione automatica lo rende possibile, garantendo nel contempo che le prestazioni del sistema non siano influenzate negativamente.


1
L'anteprima certamente non scompare automaticamente per me in quelle condizioni al 10.7.4.
wfaulk,

Ho perso il tuo commento prima, ma lo fa per me in 10.8.2. Hai aperto almeno una finestra (come aprire e chiudere la finestra delle preferenze) prima di nascondere l'anteprima?
Lri

2

Un'altra app piccola e semplice gratuita, Quitter , visualizza un'icona X nella barra delle applicazioni che si comporta proprio come il pulsante di chiusura sotto Windows.


4
Benvenuto e grazie per aver inviato una risposta! Dovresti rivelare la tua affiliazione con il prodotto / blog collegato. Di solito non è un problema quando tutto è tenuto al di sopra della
soglia

0

Sostituisci il seguente metodo in NSApplicationDelegate(che normalmente restituisce NO):

-(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSapplication*)sender
{
return YES;
}

Questa è una domanda su come gli utenti potrebbero far sì che ciò accada alle applicazioni esistenti, non su come un programmatore potrebbe convincere il suo programma a farlo. Grazie per il tuo sforzo, comunque.
wfaulk,
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.