Bắt các ứng dụng Mac OS X đóng sau khi đóng cửa sổ cuối cùng


45

Tôi biết đó chỉ là một tiểu thú cưng, nhưng tôi ghét rằng Preview.app của Mac OS X vẫn mở khi không có cửa sổ mở. Có cách nào để làm cho nó đóng khi cửa sổ cuối cùng của nó bị đóng không?

Vì tôi không thấy bất kỳ tùy chọn nào trong Bản xem trước để thực hiện điều đó, tôi tưởng tượng rằng câu trả lời có thể được áp dụng cho các chương trình khác có các đặc điểm riêng tương tự.

Tôi nhận ra rằng điều này không nằm ngoài các nguyên tắc giao diện của HĐH. Đó là, tôi nhận ra rằng đây không phải là một lỗi sẽ được sửa. Tôi tự hỏi liệu có cách nào để tự động đóng các ứng dụng GUI đã chọn không có cửa sổ mở không.

Câu trả lời:


22

Hãy thử RedQuits:

RedQuits sẵn sàng trợ giúp nếu bạn đã từng cố gắng đóng một ứng dụng bằng nút đỏ của nó và tự hỏi tại sao nó vẫn mở. Với RedQuits, tất cả các chương trình hiện đã thoát khi chỉ còn một cửa sổ cho chương trình đó. Nếu bạn muốn thoát và đóng tất cả các cửa sổ đang mở của một chương trình, chỉ cần bỏ chọn "Chỉ thoát khi chỉ còn 1 cửa sổ cho ứng dụng đó". trong sở thích.


3
Điều thú vị là bản thân RedQuits không bỏ cuộc khi bạn nhấn nút màu đỏ, nói như vậy trong hướng dẫn. Nó đơn giản, đẹp, nhưng không có danh sách trắng.
Michael Ozeryansky

RedQuits đóng ứng dụng nếu bạn nhấp vào nút thoát màu đỏ, nhưng không phải khi đóng cửa sổ cuối cùng bằng Cmd + W.
Sampo

23

Tóm lại: Không.

- Trả lời dừng ở đây. Tất cả mọi thứ sau đây chỉ là nỗ lực của tôi để giải thích tại sao.

Những gì bạn đang trải nghiệm là triết lý của Mac về cách các ứng dụng nên hoạt động. Những người bị đóng cửa sau khi cửa sổ cuối cùng biến mất không tuân theo Nguyên tắc Giao diện Mac (mặc dù có rất nhiều ngoài kia). // Chỉnh sửa: Điều này không hoàn toàn chính xác, xem bài viết dưới đây.

Nó đã được như vậy kể từ Hệ thống Mac đầu tiên (năm 1984). Tôi đoán nó sẽ ở lại với chúng tôi thêm 25 năm nữa. Có thể các nhà phát triển ứng dụng sẽ cho phép chúng tôi thiết lập điều đó trong các tùy chọn.

Cho đến lúc đó, nó giúp làm quen với Command-Q (khóa Apple và q) để thoát từng ứng dụng - và Command-W chỉ cho cửa sổ hoạt động.


1
Ý kiến ​​cá nhân của tôi như một nhận xét: Làm việc với cả hai nền tảng mỗi ngày: Tôi đã quen với nó. Không tạo ra sự khác biệt nhiều như vậy và - như mọi khi - có hai mặt của nó. Trong khi ứng dụng đang chạy, mỗi lần khởi động tiếp theo là cực kỳ nhanh chóng. Những ứng dụng mà tôi sử dụng chỉ thỉnh thoảng mới có thể đóng lại ngay sau khi tôi sử dụng chúng. Tôi đã quen với Apple-Q / Apple-W trên máy Mac nhanh hơn nhiều so với Alt-F4 / Strg-F4 trên Windowsers.
Sói

28
Người ta cũng có thể nhấn Q trong khi sử dụng Command-Tab để chuyển đổi các ứng dụng (do đó trong khi vẫn giữ Command), để thoát ứng dụng hiện được tô sáng trong trình chuyển đổi ứng dụng đó.
Arjan

+1 cho nhận xét của Arjan. Đó là một cách tuyệt vời để đóng một số lượng lớn các ứng dụng cùng một lúc. Bạn làm điều này bất cứ khi nào bạn cần giải phóng một số bộ nhớ.
Dan Rosenstark

2
Điều thực sự, thực sự làm tôi khó chịu là các ứng dụng thu nhỏ xuất hiện trong trình chuyển đổi ứng dụng, nhưng sẽ không được khôi phục nếu chọn chúng. Điều đó tôi thấy rất không nhất quán. Mới gần đây - sau nhiều năm sử dụng theo nghĩa đen - tôi đã bắt gặp nhấn ALT trong khi chuyển sang ứng dụng (thu nhỏ) sẽ khôi phục nó. Hooooray !!!
Sói

15
Thành thật mà nói, tôi không quan tâm đến việc liệu triệu chứng đó có bình thường hay không. Tôi quan tâm đến cách thoát khỏi triệu chứng này.
wfaulk

3

Tôi đã viết một ứng dụng AppleScript để làm điều này cho bạn.

Tóm lại, nó kiểm tra những ứng dụng nào đang mở, cung cấp cho bạn tùy chọn để loại trừ các ứng dụng trong danh sách trắng khỏi tự động thoát, sau đó cứ sau 60 giây, thoát khỏi tất cả các ứng dụng (có thể, do hạn chế).

Để thay đổi danh sách trắng trong khi nó đang chạy, hãy nhấp vào biểu tượng trong thanh công cụ cho hộp thoại lựa chọn để xuất hiện lại.

Để thoát, nhấp chuột phải vào biểu tượng Dock và chọn "Thoát"

Ứng dụng và nguồn AppleScript: http://files.me.com/kioarthurdane/6kjl9k


Có vẻ như là một ý tưởng tốt, ngoại trừ nó không hoạt động. Tôi đã phải thay đổi "tên" thành "tên hiển thị" trong refreshWindowedProcess () để không hỏi "ứng dụng này ở đâu", nhưng ngay cả khi đó nó dường như không bao giờ thoát khỏi bất cứ điều gì.
wfaulk

Bạn đang sử dụng phiên bản OS X nào? Tôi đã viết kịch bản của mình dưới Snow Leopard, không chắc đã có những thay đổi lớn đối với AppleScript.
dotHTM

Nevermind, OmniGraffle Pro chỉ làm điều đó với tôi. Rất buồn cười những trường hợp đó là tên trong Finder không phải là tên tệp thực sự ... Tôi sẽ xem liệu tôi có thể viết một điều chỉnh cho điều này bằng cách sử dụng các định danh gói không.
dotHTM

Được cập nhật bằng cách sử dụng mã định danh gói thay vì tên ứng dụng (có thể khác với tên tệp của ứng dụng). Trong nguồn, có một lưu ý về hai dòng nhận xét sẽ báo cáo danh sách các cửa sổ trong mỗi mã định danh gói. Tôi nhận thấy rằng nhiều ứng dụng báo cáo có ít nhất một cửa sổ mở mặc dù không có cửa sổ hiển thị nào đang mở. NetNewsWire là một trong những ứng dụng như vậy có một danh sách dài các cửa sổ ngay cả sau khi cửa sổ chính bị "đóng". Danh sách Hit là một ứng dụng khác giữ cửa sổ duy nhất của nó luôn mở.
dotHTM

Đếm Windows = 0 dường như là cách rõ ràng nhất để phát hiện trạng thái của bạn để thoát, nhưng điều này dường như không thực hiện được công việc cho tất cả các ứng dụng. Hãy đến với các điều kiện của riêng bạn để thêm vào mã của tôi. Vì không phải tất cả các ứng dụng đều có từ điển AS, nên sẽ khó kiểm tra các ứng dụng đó cho bất kỳ điều kiện nào khác (huống chi là mất thời gian để tạo một quy tắc riêng cho từng ứng dụng). Tôi có xu hướng đồng ý với các câu trả lời khác được đưa ra là "Đó là một phần của Văn hóa Mac để ứng dụng không đầu vẫn chạy" Trừ khi nó đang làm gì đó, nó sẽ không chiếm nhiều CPU hoặc RAM vật lý.
dotHTM

3

Tính năng chấm dứt tự động được giới thiệu trong 10.7 một phần giải quyết một số ứng dụng.

Nếu bạn mở Xem trước, hãy mở ít nhất một cửa sổ trong đó, đóng tất cả các cửa sổ và chuyển sang ứng dụng khác, Xem trước bị ẩn khỏi Dock và trình chuyển đổi ứng dụng. Nếu bạn nhìn vào Activity Monitor, quy trình vẫn đang chạy và sử dụng bộ nhớ, nhưng có thể có một số thay đổi trong cách quản lý quy trình.

Các Mac App Lập trình Hướng dẫn cho biết tiến trình đang thực sự chấm dứt, do đó có thể là một cái gì đó tôi đang thiếu.

  • Tự động chấm dứt giúp loại bỏ nhu cầu người dùng thoát khỏi một ứng dụng. Thay vào đó, hệ thống quản lý chấm dứt ứng dụng trong suốt phía sau hậu trường, chấm dứt các ứng dụng không được sử dụng để lấy lại các tài nguyên cần thiết như bộ nhớ.

[...]

Tự động chấm dứt chuyển công việc quản lý các quy trình từ người dùng sang hệ thống, được trang bị tốt hơn để xử lý công việc. Người dùng không cần phải quản lý các quy trình theo cách thủ công. Tất cả những gì họ thực sự cần là chạy các ứng dụng và có sẵn những ứng dụng đó khi họ cần. Tự động chấm dứt làm cho điều đó có thể trong khi đảm bảo rằng hiệu suất hệ thống không bị ảnh hưởng bất lợi.


1
Xem trước chắc chắn không tự động biến mất đối với tôi theo các điều kiện đó vào ngày 10.7.4.
wfaulk

Tôi đã bỏ lỡ bình luận của bạn trước đó, nhưng nó làm cho tôi trong 10.8.2. Bạn đã mở ít nhất một cửa sổ (như mở và đóng cửa sổ tùy chọn) trước khi ẩn Xem trước?
Lri

2

Một ứng dụng nhỏ và đơn giản miễn phí khác, Quitter , hiển thị biểu tượng X trên thanh khay hoạt động giống như nút đóng trong Windows.


4
Chào mừng, và cảm ơn vì đã đăng câu trả lời! Bạn nên tiết lộ liên kết của bạn với sản phẩm / blog được liên kết. Nó thường không phải là vấn đề khi mọi thứ được giữ ở trên bảng :)
JoshP

0

Ghi đè phương thức sau trong NSApplicationDelegate(thường trả về NO):

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

Đây là một câu hỏi về cách người dùng có thể thực hiện điều này với các ứng dụng hiện có, chứ không phải làm thế nào một lập trình viên có thể khiến chương trình của mình thực hiện nó. Cảm ơn cho nỗ lực của bạn, mặc dù.
wfaulk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.