Membuat aplikasi Mac OS X ditutup setelah jendela terakhir ditutup

45

Saya tahu ini hanya kesal peliharaan, tapi saya benci kalau Preview.app Mac OS X tetap terbuka ketika tidak ada jendela yang terbuka. Apakah ada cara untuk membuatnya dekat ketika jendela terakhir ditutup?

Karena saya tidak melihat opsi di dalam Pratinjau untuk mewujudkannya, saya membayangkan bahwa jawabannya mungkin berlaku untuk program lain yang memiliki ... kekhasan yang serupa.

Saya menyadari bahwa ini bukan di luar pedoman antarmuka OS. Artinya, saya menyadari bahwa ini bukan bug yang akan diperbaiki. Saya bertanya-tanya apakah ada beberapa cara untuk secara otomatis menutup aplikasi GUI yang dipilih yang tidak memiliki jendela terbuka.

wfaulk
sumber

Jawaban:

22

Coba RedQuits:

RedQuits siap membantu jika Anda pernah mencoba menutup aplikasi dengan tombol merahnya dan bertanya-tanya mengapa itu masih terbuka. Dengan RedQuits, semua program sekarang berhenti ketika hanya ada satu jendela yang tersisa untuk program itu. Jika Anda ingin berhenti dan menutup semua jendela yang terbuka dari suatu program, cukup hapus centang "Hentikan hanya ketika 1 jendela tersisa untuk aplikasi itu." dalam preferensi.

msaied
sumber
3
Yang lucu adalah RedQuits itu sendiri tidak berhenti ketika Anda menekan tombol merah, mengatakan demikian dalam instruksi. Sederhana, bagus, tetapi tidak ada daftar putih.
Michael Ozeryansky
RedQuits menutup aplikasi jika Anda mengklik tombol keluar merah, tetapi tidak ketika menutup jendela terakhir menggunakan Cmd + W.
Sampo
23

Singkatnya: Tidak.

--Jawaban berhenti di sini. Semuanya berikut ini hanyalah upaya saya untuk menjelaskan alasannya.

Apa yang Anda alami adalah filosofi Mac tentang bagaimana aplikasi seharusnya berperilaku. Mereka yang sedang ditutup setelah lenyap suatu jendela terakhir tidak berperilaku Pedoman Antarmuka Mac (meskipun ada banyak di luar sana). // Edit: Ini tidak sepenuhnya benar, lihat posting di bawah ini.

Sudah seperti itu sejak Sistem Mac pertama (pada 1984). Saya kira itu akan tetap bersama kami selama 25 tahun mendatang. Mungkin pengembang aplikasi akan memungkinkan kita untuk mengaturnya di preferensi.

Sampai saat itu membantu membiasakan diri dengan Command-Q (kunci Apple dan q) untuk keluar dari setiap aplikasi - dan Command-W hanya untuk jendela aktif.

Serigala
sumber
1
Pendapat pribadi saya sebagai komentar: Bekerja dengan kedua platform setiap hari: Saya terbiasa. Tidak membuat banyak perbedaan sama sekali dan - seperti biasa - ada dua sisi untuk itu. Saat aplikasi sedang berjalan, setiap awal berikutnya super-sangat-cepat. Aplikasi-aplikasi yang saya gunakan sesekali bisa ditutup setelah saya menggunakannya. Saya terbiasa dengan Apple-Q / Apple-W di Mac jauh lebih cepat daripada Alt-F4 / Strg-F4 pada Windowsers.
Wolf
28
Anda juga dapat menekan Q saat menggunakan Command-Tab untuk berpindah aplikasi (dengan demikian sambil tetap menekan Command), untuk keluar dari aplikasi yang saat ini disorot dalam pengalih aplikasi tersebut.
Arjan
+1 untuk komentar Arjan. Ini adalah cara luar biasa untuk menutup sejumlah besar aplikasi sekaligus. Anda melakukan ini kapan pun Anda perlu membebaskan memori.
Dan Rosenstark
2
Yang benar-benar mengganggu saya adalah bahwa aplikasi yang diperkecil muncul di pengalih aplikasi, tetapi tidak akan dipulihkan jika memilihnya. Yang saya temukan sangat tidak konsisten. Baru-baru ini - setelah benar-benar bertahun-tahun penggunaan - saya menemukan menekan ALT sambil beralih ke aplikasi (diminimalkan) akan mengembalikannya. Hooooray !!!
Wolf
15
Sejujurnya, saya tidak terlalu tertarik pada apakah gejalanya normal atau tidak. Saya tertarik pada cara menghilangkan gejala.
wfaulk
3

Saya menulis aplikasi AppleScript untuk melakukan ini untuk Anda.

Secara singkat, ia memeriksa aplikasi apa yang terbuka, memberi Anda opsi untuk memasukkan daftar putih aplikasi yang akan dikecualikan secara otomatis, lalu setiap 60 detik, berhenti semua aplikasi (yang dapat, karena keterbatasan).

Untuk mengubah daftar putih saat sedang berjalan, klik ikon di dok agar dialog pemilihan muncul kembali.

Untuk berhenti, klik kanan ikon Dock dan pilih "Berhenti"

Sumber dan Aplikasi AppleScript: http://files.me.com/kioarthurdane/6kjl9k

dotHTM
sumber
Sepertinya ide yang bagus, kecuali itu tidak berhasil. Saya harus mengubah "nama" menjadi "nama yang ditampilkan" di refreshWindowedProcess () agar tidak bertanya "di mana aplikasi ini", tetapi meskipun begitu sepertinya tidak pernah berhenti apa pun.
wfaulk
Versi OS X apa yang Anda gunakan? Saya menulis skrip saya di bawah Snow Leopard, tidak yakin apakah ada perubahan besar pada AppleScript.
dotHTM
Omong-omong, OmniGraffle Pro baru saja melakukannya untuk saya. Sangat lucu kasus-kasus itu nama dalam Finder bukan nama file yang sebenarnya ... Saya akan melihat apakah saya dapat menulis koreksi untuk ini menggunakan pengidentifikasi bundel sebagai gantinya.
dotHTM
Diperbarui menggunakan pengidentifikasi bundel alih-alih nama aplikasi (yang dapat berbeda dari nama file aplikasi). Di sumber, ada catatan tentang dua baris yang dikomentari yang akan melaporkan daftar jendela di setiap pengenal bundel. Saya perhatikan bahwa banyak aplikasi melaporkan memiliki setidaknya satu jendela terbuka meskipun tidak ada jendela yang terlihat terbuka. NetNewsWire adalah salah satu aplikasi yang memiliki daftar panjang jendela bahkan setelah jendela utama "ditutup". Daftar Hit adalah aplikasi lain yang mempertahankan satu jendela selalu terbuka.
dotHTM
Hitungan Windows = 0 tampaknya merupakan cara yang paling jelas untuk mendeteksi keadaan Anda untuk berhenti, tetapi ini tampaknya tidak melakukan pekerjaan untuk semua aplikasi. Munculkan persyaratan Anda sendiri untuk ditambahkan ke kode saya. Karena tidak semua aplikasi memiliki kamus AS, akan sulit untuk memeriksa aplikasi tersebut untuk kondisi lainnya (apalagi memakan waktu untuk membuat aturan terpisah untuk masing-masing). Saya lebih cenderung setuju dengan jawaban lain yang diberikan dari "Ini adalah bagian dari Budaya Mac untuk memiliki aplikasi tanpa kepala masih berjalan" Kecuali jika itu melakukan sesuatu, itu tidak akan memakan banyak CPU atau RAM fisik.
dotHTM
3

Fitur terminasi otomatis yang diperkenalkan pada 10.7 secara parsial membahas hal itu untuk beberapa aplikasi.

Jika Anda membuka Pratinjau, buka setidaknya satu jendela di dalamnya, tutup semua jendela, dan alihkan ke aplikasi lain, Pratinjau disembunyikan dari Dock dan pengalih aplikasi. Jika Anda melihat Monitor Aktivitas, prosesnya masih berjalan dan menggunakan memori, tetapi mungkin ada beberapa perubahan dalam bagaimana proses dikelola.

The Mac App Panduan Pemrograman mengatakan bahwa proses yang benar-benar dihentikan, jadi mungkin ada sesuatu yang saya hilang.

  • Pengakhiran otomatis menghilangkan kebutuhan pengguna untuk keluar dari aplikasi. Alih-alih, sistem mengelola penghentian aplikasi secara transparan di belakang layar, menghentikan aplikasi yang tidak digunakan untuk mendapatkan kembali sumber daya yang diperlukan seperti memori.

[...]

Pengakhiran otomatis mentransfer pekerjaan proses pengelolaan dari pengguna ke sistem, yang lebih siap untuk menangani pekerjaan itu. Pengguna tidak perlu mengelola proses secara manual. Yang mereka butuhkan hanyalah menjalankan aplikasi dan menyediakan aplikasi itu saat dibutuhkan. Pengakhiran otomatis memungkinkan karena memastikan bahwa kinerja sistem tidak terpengaruh.

Lri
sumber
1
Pratinjau tentu tidak secara otomatis hilang untuk saya dalam kondisi di 10.7.4.
wfaulk
Saya melewatkan komentar Anda sebelumnya, tetapi itu berlaku untuk saya di 10.8.2. Apakah Anda membuka setidaknya satu jendela (seperti membuka dan menutup jendela preferensi) sebelum menyembunyikan Pratinjau?
Lri
2

Aplikasi kecil dan sederhana gratis lainnya, Quitter , menampilkan ikon X di baki yang bertindak seperti tombol penutup di bawah Windows.

Andreas
sumber
4
Selamat datang, dan terima kasih telah mengirim jawaban! Anda harus mengungkapkan afiliasi Anda dengan produk / blog tertaut. Ini biasanya bukan masalah ketika semuanya disimpan di atas papan :)
JoshP
0

Ganti metode berikut ini di NSApplicationDelegate(yang biasanya kembali NO):

-(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSapplication*)sender
{
return YES;
}
Pierre Dufresne
sumber
Ini adalah pertanyaan tentang bagaimana pengguna dapat membuat ini terjadi pada aplikasi yang ada, bukan bagaimana seorang programmer dapat membuat programnya untuk melakukannya. Terima kasih atas usaha Anda.
wfaulk