การทำให้แอปพลิเคชัน Mac OS X ปิดลงหลังจากปิดหน้าต่างสุดท้าย


45

ฉันรู้ว่ามันเป็นเพียงสัตว์เลี้ยงโกรธ แต่ฉันเกลียดมันที่ Preview.app ของ Mac OS X ยังคงเปิดอยู่เมื่อไม่มีหน้าต่างเปิด มีวิธีใดบ้างที่จะปิดเมื่อหน้าต่างสุดท้ายปิด

เนื่องจากฉันไม่เห็นตัวเลือกใด ๆ ใน Preview ที่จะทำให้เกิดขึ้นฉันคิดว่าคำตอบนั้นอาจใช้ได้กับโปรแกรมอื่น ๆ ที่มี ... idiosyncrasies ที่คล้ายกัน

ฉันรู้ว่านี่ไม่ได้อยู่นอกเหนือแนวทางการใช้อินเทอร์เฟซ ฉันรู้ว่านี่ไม่ใช่ข้อผิดพลาดที่จะได้รับการแก้ไข ฉันสงสัยว่าจะมีวิธีปิดแอปพลิเคชัน GUI ที่เลือกโดยอัตโนมัติที่ไม่มีหน้าต่างหรือไม่

คำตอบ:


22

ลองRedQuits:

RedQuits พร้อมให้ความช่วยเหลือหากคุณเคยลองปิดแอปพลิเคชั่นด้วยปุ่มสีแดงและสงสัยว่าทำไมมันยังเปิดอยู่ เมื่อใช้ RedQuits โปรแกรมทั้งหมดจะจบการทำงานเมื่อเหลือเพียงหน้าต่างเดียวสำหรับโปรแกรมนั้น หากคุณต้องการที่จะออกและปิดหน้าต่างที่เปิดอยู่ทั้งหมดของโปรแกรมเพียงแค่ยกเลิกการเลือก "ออกเฉพาะเมื่อเหลือ 1 หน้าต่างสำหรับแอปนั้น" ในการตั้งค่า


3
สิ่งที่ตลกคือ RedQuits เองไม่ได้หยุดเมื่อคุณกดปุ่มสีแดงกล่าวในคำแนะนำ มันง่ายซึ่งดี แต่ไม่มีรายการสีขาว
Michael Ozeryansky

RedQuits จะปิดแอปพลิเคชันหากคุณคลิกที่ปุ่มออกสีแดง แต่จะไม่ปิดเมื่อปิดหน้าต่างสุดท้ายโดยใช้ Cmd + W
Sampo

23

ในระยะสั้น: ไม่

- คำตอบหยุดที่นี่ ทุกอย่างต่อไปนี้เป็นเพียงความพยายามของฉันที่จะอธิบายว่าทำไม

สิ่งที่คุณกำลังประสบคือปรัชญาของ Mac เกี่ยวกับวิธีการทำงานของแอปพลิเคชัน ผู้ที่ถูกปิดหลังจากการหายไปของหน้าต่างสุดท้ายจะไม่ทำตามแนวทางอินเทอร์เฟซของ Mac (แม้ว่าจะมีอยู่มากมายก็ตาม) // แก้ไข: นี่ไม่ถูกต้องทั้งหมดดูโพสต์ด้านล่าง

มันเป็นเช่นนั้นมาตั้งแต่ระบบ Mac เครื่องแรก (ในปี 1984) ฉันเดาว่ามันจะอยู่กับเราต่อไปอีก 25 ปี บางทีแอพ devs จะช่วยให้เราสามารถตั้งค่าในการตั้งค่า

ก่อนหน้านั้นจะช่วยให้คุ้นเคยกับ Command-Q (ปุ่ม Apple และ q) เพื่อออกจากแต่ละแอปและ - และ Command-W สำหรับหน้าต่างที่ใช้งานอยู่


1
ความเห็นส่วนตัวของฉันเป็นความคิดเห็น: การทำงานกับทั้งสองแพลตฟอร์มทุกวัน: ฉันชินแล้ว ไม่ได้สร้างความแตกต่างอย่างมากเลยและ - เช่นเคย - มีสองด้านอยู่ ขณะที่แอพทำงานอยู่การเริ่มต้นแต่ละครั้งนั้นเร็วมากอย่างรวดเร็ว แอพที่ฉันใช้เป็นครั้งคราวอาจปิดได้ทันทีหลังจากที่ฉันใช้งาน ฉันคุ้นเคยกับ Apple-Q / Apple-W บน Macs เร็วกว่า Alt-F4 / Strg-F4 บน Windowsers มาก
Wolf

28
นอกจากนี้ยังสามารถกด Q ในขณะที่ใช้ Command-Tab เพื่อสลับแอปพลิเคชัน (ดังนั้นในขณะที่ยังคงกด Command ค้างไว้) เพื่อออกจากแอปพลิเคชันที่เน้นอยู่ในแอปพลิเคชันตัวสลับนั้น
Arjan

+1 สำหรับความคิดเห็นของ Arjan มันเป็นวิธีที่ยอดเยี่ยมในการปิดแอพจำนวนมากพร้อมกัน คุณทำเช่นนี้ทุกครั้งที่คุณต้องการเพิ่มหน่วยความจำ
Dan Rosenstark

2
สิ่งที่ทำให้ฉันรำคาญจริงๆคือแอพที่ย่อเล็กสุดปรากฏในแอพสลับ แต่ไม่สามารถกู้คืนได้หากเลือก ที่ฉันพบว่าไม่สอดคล้องกันมาก เมื่อไม่นานมานี้หลังจากใช้งานไปหลายปี - ฉันเจอการกด ALT ในขณะที่เปลี่ยนไปใช้แอพ (ย่อเล็กสุด) จะคืนค่า Hooooray !!!
Wolf

15
การซื่อสัตย์อย่างไร้ความปราณีฉันไม่ใช่ทุกคนที่สนใจว่าอาการนั้นปกติหรือไม่ ฉันสนใจที่จะกำจัดอาการ
wfaulk

3

ฉันเขียนแอปพลิเคชัน AppleScript เพื่อทำสิ่งนี้ให้คุณ

โดยสรุปจะตรวจสอบว่าแอปพลิเคชั่นใดเปิดอยู่ให้คุณเลือกที่จะยกเว้นแอพพลิเคชั่นที่อนุญาตในการยกเว้นอัตโนมัติจากนั้นทุก ๆ 60 วินาทีจะออกจากแอปพลิเคชันทั้งหมด (เนื่องจากข้อ จำกัด )

หากต้องการแก้ไขรายการที่อนุญาตในขณะที่ทำงานอยู่ให้คลิกไอคอนใน Dock เพื่อให้กล่องโต้ตอบการเลือกปรากฏขึ้นอีกครั้ง

หากต้องการออกให้คลิกขวาที่ไอคอน Dock แล้วเลือก "Quit"

แหล่งที่มาของ AppleScript และแอปพลิเคชัน: http://files.me.com/kioarthurdane/6kjl9k


ดูเหมือนว่าเป็นความคิดที่ดียกเว้นจะไม่ทำงาน ฉันต้องเปลี่ยน "ชื่อ" เป็น "ชื่อที่แสดง" ใน refreshWindowedProcess () เพื่อป้องกันไม่ให้ถามว่า "แอปพลิเคชันนี้อยู่ที่ไหน" แต่ถึงกระนั้นมันก็ดูเหมือนจะไม่เลิกอะไรเลย
wfaulk

คุณใช้ OS X เวอร์ชันใดอยู่ ฉันเขียนสคริปต์ภายใต้ Snow Leopard ไม่แน่ใจว่ามีการเปลี่ยนแปลงที่สำคัญกับ AppleScript หรือไม่
dotHTM

ไม่เป็นไร OmniGraffle Pro เพิ่งจะทำกับฉัน ตลกมากกรณีเหล่านี้คือชื่อใน Finder ไม่ใช่ชื่อไฟล์จริง ... ฉันจะดูว่าฉันสามารถเขียนการแก้ไขโดยใช้ตัวระบุบันเดิลแทนได้ไหม
dotHTM

อัปเดตโดยใช้ตัวระบุบันเดิลแทนชื่อแอปพลิเคชัน (ซึ่งอาจแตกต่างจากชื่อไฟล์ของแอปพลิเคชัน) ในแหล่งที่มามีบันทึกเกี่ยวกับสองบรรทัดแสดงความคิดเห็นว่าจะรายงานรายการของหน้าต่างในแต่ละตัวระบุกลุ่ม ฉันสังเกตเห็นว่าแอปพลิเคชันจำนวนมากรายงานว่ามีหน้าต่างเปิดอย่างน้อยหนึ่งหน้าต่างแม้ว่าจะไม่มีหน้าต่างที่มองเห็นได้เปิดอยู่ NetNewsWire เป็นหนึ่งในแอพที่มีรายการหน้าต่างที่ยาวแม้ว่าจะปิดหน้าต่างหลักแล้วก็ตาม รายการยอดนิยมเป็นแอปอื่นที่ยังคงเป็นหน้าต่างเดียวที่เปิดอยู่เสมอ
dotHTM

จำนวนของ Windows = 0 ดูเหมือนจะเป็นวิธีที่ชัดเจนที่สุดในการตรวจสอบสถานะของคุณสำหรับการเลิก แต่ดูเหมือนว่าจะไม่ได้ผลสำหรับแอพทั้งหมด มาพร้อมกับเงื่อนไขของคุณเองเพื่อเพิ่มรหัสของฉัน เนื่องจากแอปพลิเคชันบางรายการไม่มีพจนานุกรม AS จึงเป็นการยากที่จะตรวจสอบแอปเหล่านั้นสำหรับเงื่อนไขอื่น ๆ (ใช้เวลานานมากในการสร้างกฎแยกต่างหากสำหรับแต่ละรายการ) ฉันมีแนวโน้มที่จะเห็นด้วยกับคำตอบอื่น ๆ ของ "มันเป็นส่วนหนึ่งของวัฒนธรรม Mac เพื่อให้แอปพลิเคชั่นหัวขาดยังคงทำงานอยู่" ยกเว้นว่าจะทำอะไรบางอย่างมันจะไม่ใช้ CPU หรือ RAM จริง
dotHTM

3

คุณลักษณะการยกเลิกอัตโนมัติที่นำมาใช้ใน 10.7 ระบุที่อยู่บางส่วนสำหรับบางแอปพลิเคชัน

หากคุณเปิดดูตัวอย่างให้เปิดหน้าต่างอย่างน้อยหนึ่งหน้าต่างปิดหน้าต่างทั้งหมดและสลับไปยังแอปพลิเคชันอื่น ๆ ภาพตัวอย่างจะถูกซ่อนจาก Dock และแอปพลิเคชันตัวสลับ หากคุณดูการตรวจสอบกิจกรรมกระบวนการยังคงทำงานและใช้หน่วยความจำ แต่อาจมีการเปลี่ยนแปลงบางอย่างในวิธีการจัดการกระบวนการ

Mac App Programming คู่มือบอกว่ากระบวนการที่จะสิ้นสุดจริงดังนั้นอาจจะมีบางสิ่งบางอย่างที่ฉันหายไป

  • การยกเลิกอัตโนมัติไม่จำเป็นต้องให้ผู้ใช้ออกจากแอป ระบบจะจัดการการยกเลิกแอปแทนเบื้องหลังโดยยกเลิกแอพที่ไม่ได้ใช้เพื่อเรียกคืนทรัพยากรที่จำเป็นเช่นหน่วยความจำ

[ ... ]

การยกเลิกอัตโนมัติโอนย้ายงานการจัดการกระบวนการจากผู้ใช้ไปยังระบบซึ่งมีความพร้อมที่ดีกว่าในการจัดการงาน ผู้ใช้ไม่จำเป็นต้องจัดการกระบวนการด้วยตนเอง สิ่งที่พวกเขาต้องการจริงๆก็คือการเรียกใช้แอพและให้แอพเหล่านั้นพร้อมใช้งานเมื่อพวกเขาต้องการ การเลิกจ้างโดยอัตโนมัติทำให้เป็นไปได้ในขณะที่มั่นใจได้ว่าประสิทธิภาพของระบบจะไม่ได้รับผลกระทบ


1
ภาพตัวอย่างไม่ได้หายไปโดยอัตโนมัติสำหรับฉันภายใต้เงื่อนไขเหล่านี้ใน 10.7.4
wfaulk

ฉันพลาดความคิดเห็นของคุณก่อนหน้านี้ แต่มันทำให้ฉันใน 10.8.2 คุณเปิดอย่างน้อยหนึ่งหน้าต่าง (เช่นเปิดและปิดหน้าต่างการตั้งค่า) ก่อนซ่อนตัวอย่างหรือไม่
Lri

2

แอปQuitterขนาดเล็กและเรียบง่ายฟรีอีกหนึ่งตัวแสดงไอคอน X ใน Traybar ซึ่งทำหน้าที่เหมือนกับปุ่มปิดใน Windows


4
ยินดีต้อนรับและขอบคุณสำหรับการโพสต์คำตอบ! คุณควรเปิดเผยความเกี่ยวข้องกับผลิตภัณฑ์ / บล็อกที่เชื่อมโยง มันไม่ได้มักจะมีปัญหาเมื่อทุกอย่างจะถูกเก็บไว้ข้างต้นคณะกรรมการ :)
JoshP

0

แทนที่เมธอดต่อไปนี้ในNSApplicationDelegate(ซึ่งปกติจะส่งคืนNO):

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

นี่เป็นคำถามเกี่ยวกับวิธีที่ผู้ใช้อาจทำให้สิ่งนี้เกิดขึ้นกับแอปพลิเคชันที่มีอยู่ไม่ใช่วิธีที่โปรแกรมเมอร์อาจทำให้โปรแกรมของเขาทำ ขอบคุณสำหรับความพยายามของคุณ
wfaulk
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.