Zamykanie aplikacji Mac OS X po ostatnim zamknięciu okna

45

Wiem, że to tylko sikanie, ale nienawidzę tego, że Preview.app Mac OS X pozostaje otwarty, gdy nie ma otwartych okien. Czy jest jakiś sposób, aby zamknąć go, gdy ostatnie okno jest zamknięte?

Ponieważ nie widzę żadnej opcji w Podglądzie, aby tak się stało, wyobrażam sobie, że odpowiedź może dotyczyć innych programów, które mają podobne… osobliwości.

Zdaję sobie sprawę, że nie wykracza to poza wytyczne dotyczące interfejsu systemu operacyjnego. Rozumiem, że nie jest to błąd, który zostanie naprawiony. Zastanawiam się, czy istnieje sposób na automatyczne zamknięcie wybranych aplikacji GUI, które nie mają otwartych okien.

wfaulk
źródło

Odpowiedzi:

22

Wypróbuj RedQuits:

RedQuits jest w stanie pomóc, jeśli kiedykolwiek próbowałeś zamknąć aplikację za pomocą czerwonego przycisku i zastanawiałeś się, dlaczego jest ona nadal otwarta. Dzięki RedQuit, wszystkie programy są teraz zamykane, gdy pozostało tylko jedno okno dla tego programu. Jeśli chcesz zamknąć i zamknąć wszystkie otwarte okna programu, odznacz „Wyjdź tylko wtedy, gdy dla tej aplikacji pozostało 1 okno”. w preferencjach.

msaied
źródło
3
Zabawne jest to, że sam RedQuit nie przestaje działać po naciśnięciu czerwonego przycisku, tak mówi instrukcja. To proste, co jest miłe, ale nie ma białej listy.
Michael Ozeryansky
RedQuits zamyka aplikację po kliknięciu czerwonego przycisku wyjścia, ale nie przy zamykaniu ostatniego okna za pomocą Cmd + W.
Sampo,
23

W skrócie: Nie.

- Odpowiedź się tutaj kończy. Wszystko, co następuje, to tylko moja próba wyjaśnienia, dlaczego.

To, czego doświadczasz, to filozofia komputerów Mac dotycząca zachowania aplikacji. Ci, którzy zamknięci po zniknięciu ostatniego okna, nie zachowują się zgodnie ze wskazówkami dotyczącymi interfejsu Mac (choć jest ich wiele). // Edycja: To nie jest całkowicie poprawne, zobacz posty poniżej.

Tak było od pierwszego systemu Mac (w 1984 r.). Myślę, że pozostanie z nami przez kolejne 25 lat. Może twórcy aplikacji pozwolą nam to ustawić w preferencjach.

Do tego czasu pomaga przyzwyczaić się do Command-Q (klawisz Apple i q), aby zamknąć każdą aplikację - i Command-W tylko dla aktywnego okna.

Wilk
źródło
1
Moja osobista opinia jako komentarz: Codzienna praca z obiema platformami: Przyzwyczaiłem się. Nie robi to żadnej różnicy i - jak zawsze - są dwie strony. Podczas działania aplikacji każde kolejne uruchomienie jest bardzo szybkie. Te aplikacje, z których korzystam od czasu do czasu, równie dobrze mogą zostać zamknięte zaraz po ich użyciu. Przyzwyczaiłem się do Apple-Q / Apple-W na komputerach Mac znacznie szybciej niż Alt-F4 / Strg-F4 na Windowserach.
Wolf
28
Można także nacisnąć klawisz Q, używając klawisza Command do przełączania aplikacji (a tym samym przytrzymując klawisz Command), aby wyjść z aplikacji wyróżnionej w tym przełączniku aplikacji.
Arjan
+1 za komentarz Arjana. To niesamowity sposób na zamknięcie ogromnej liczby aplikacji jednocześnie. Robisz to, gdy chcesz zwolnić trochę pamięci.
Dan Rosenstark
2
To, co naprawdę naprawdę mnie zdenerwowało, to to, że zminimalizowane aplikacje pojawiły się w przełączniku aplikacji, ale nie zostaną przywrócone, jeśli je wybierzesz. To było bardzo niespójne. Niedawno - po dosłownie latach użytkowania - natrafiłem na naciśnięcie klawisza ALT, a przejście do (zminimalizowanej) aplikacji przywróciło go. Hooooray !!!
Wolf,
15
Szczerze mówiąc, nie jestem zainteresowany tym, czy objaw jest normalny. Interesuje mnie, jak pozbyć się objawu.
wfaulk
3

Napisałem aplikację AppleScript, aby zrobić to za Ciebie.

W skrócie, sprawdza, które aplikacje są otwarte, daje możliwość dodania aplikacji z białej listy do wykluczenia z automatycznego zamykania, a następnie co 60 sekund, zamyka wszystkie aplikacje (że może, z powodu ograniczeń).

Aby zmienić białą listę podczas działania, kliknij ikonę w doku, aby ponownie pojawiło się okno wyboru.

Aby wyjść, kliknij prawym przyciskiem myszy ikonę Docku i wybierz „Wyjdź”

Źródło i aplikacja AppleScript: http://files.me.com/kioarthurdane/6kjl9k

dotHTM
źródło
Wydaje się, że to dobry pomysł, ale nie działa. Musiałem zmienić „nazwę” na „nazwa wyświetlana” w refreshWindowedProcess (), aby nie pytała „gdzie jest ta aplikacja”, ale nawet wtedy wydaje się, że nigdy nic nie wychodzi.
wfaulk
Jakiej wersji OS X używasz? Skrypt napisałem pod Snow Leopard, nie jestem pewien, czy nastąpiły poważne zmiany w AppleScript.
dotHTM
Nevermind, OmniGraffle Pro właśnie mi to zrobił. Bardzo zabawne, że te przypadki, w których nazwa w Finderze nie jest rzeczywistą nazwą pliku ... Zobaczę, czy mogę zamiast tego napisać poprawkę za pomocą identyfikatora pakietu.
dotHTM
Zaktualizowano przy użyciu identyfikatorów pakietu zamiast nazwy aplikacji (która może być inna niż nazwa pliku aplikacji). W źródle znajduje się notka o dwóch komentarzach, które będą zgłaszać listę okien w każdym identyfikatorze pakietu. Zauważam, że wiele aplikacji zgłasza, że ​​ma otwarte co najmniej jedno okno, mimo że żadne okno nie jest otwarte. NetNewsWire to jedna z takich aplikacji, która ma długą listę okien nawet po „zamknięciu” głównego okna. Hit List to kolejna aplikacja, która zachowuje, że jedno okno jest zawsze otwarte.
dotHTM
Liczba Windows = 0 wydaje się najbardziej oczywistym sposobem na wykrycie twojego stanu do opuszczenia, ale nie wydaje się, aby to zadziałało dla wszystkich aplikacji. Wymyśl własne warunki, aby dodać do mojego kodu. Ponieważ nie wszystkie aplikacje mają słownik AS, trudno będzie sprawdzić te aplikacje pod kątem innych warunków (nie mówiąc już o czasochłonnym tworzeniu osobnej reguły dla każdej z nich). Bardziej skłonny jestem zgodzić się z innymi odpowiedziami: „Częścią kultury Maca jest to, że wciąż działa bezgłowa aplikacja”. O ile coś nie robi, nie zajmie dużo procesora ani fizycznej pamięci RAM.
dotHTM
3

Funkcja automatycznego zakończenia wprowadzona w wersji 10.7 częściowo rozwiązuje problem niektórych aplikacji.

Jeśli otworzysz Podgląd, otworzysz w nim przynajmniej jedno okno, zamkniesz wszystkie okna i przełączysz do innej aplikacji, Podgląd zostanie ukryty przed Dockiem i przełącznikiem aplikacji. Jeśli spojrzysz na Monitor aktywności, proces nadal działa i zużywa pamięć, ale mogą być pewne zmiany w sposobie zarządzania procesem.

Mac App Programowanie Przewodnik mówi, że procesy są właściwie zakończone, więc nie może być coś mi brakuje.

  • Automatyczne zakończenie eliminuje potrzebę opuszczania aplikacji przez użytkowników. Zamiast tego system zarządza zamykaniem aplikacji w sposób przejrzysty za kulisami, kończąc aplikacje, które nie są używane do odzyskiwania potrzebnych zasobów, takich jak pamięć.

[...]

Automatyczne zakończenie przenosi zadanie zarządzania procesami z użytkownika na system, który jest lepiej przygotowany do obsługi zadania. Użytkownicy i tak nie muszą ręcznie zarządzać procesami. Wszystko, czego naprawdę potrzebują, to uruchamiać aplikacje i mieć je dostępne, gdy są potrzebne. Automatyczne zakończenie umożliwia to, zapewniając jednocześnie, że nie wpłynie to negatywnie na wydajność systemu.

Lri
źródło
1
Podgląd z pewnością nie zniknie automatycznie w tych warunkach w wersji 10.7.4.
wfaulk 18.12.12
Przegapiłem twój komentarz wcześniej, ale dotyczy mnie to w 10.8.2. Czy otworzyłeś przynajmniej jedno okno (np. Otwórz i zamknij okno preferencji) przed ukryciem podglądu?
Lri
2

Kolejna darmowa mała i prosta aplikacja, Quitter , wyświetla ikonę X na pasku zadań, która działa jak przycisk zamykający w systemie Windows.

Andreas
źródło
4
Witamy i dziękuję za opublikowanie odpowiedzi! Powinieneś ujawnić swoje powiązanie z powiązanym produktem / blogiem. Zwykle nie jest to problem, gdy wszystko jest trzymane powyżej planszy :)
JoshP
0

Zastąp następującą metodę w NSApplicationDelegate(która zwykle zwraca NO):

-(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSapplication*)sender
{
return YES;
}
Pierre Dufresne
źródło
To pytanie dotyczy tego, w jaki sposób użytkownicy mogą sprawić, że tak się stanie z istniejącymi aplikacjami, a nie w jaki sposób programista może zmusić swój program do zrobienia tego. Ale dziękuję za twój wysiłek.
wfaulk