关闭最后一个窗口后,关闭Mac OS X应用程序


45

我知道这只是一个小问题,但是我讨厌Mac OS X的Preview.app在没有打开窗口的情况下保持打开状态。关闭最后一个窗口时,有什么方法可以关闭它?

由于我没有在Preview中看到任何实现此目的的选项,因此我认为答案可能适用于具有类似……特质的其他程序。

我意识到这并不超出操作系统的界面准则。也就是说,我知道这不是一个可以修复的错误。我想知道是否有某种方法可以自动关闭没有打开窗口的选定GUI应用程序。

Answers:


22

尝试RedQuits:

如果您曾经尝试使用其红色按钮关闭应用程序并想知道为什么它仍处于打开状态,RedQuits可以为您提供帮助。现在,使用RedQuits,当该程序仅剩一个窗口时,所有程序都会退出。如果要退出并关闭程序的所有打开的窗口,只需取消选中“仅在该应用程序剩下1个窗口时退出”。在首选项中。


3
有趣的是,当您按红色按钮时,RedQuits本身不会退出,说明中如此指出。很简单,很好,但是没有白名单。
Michael Ozeryansky

如果单击红色退出按钮,则RedQuits将关闭应用程序,但使用Cmd + W关闭最后一个窗口时,则不会关闭。
Sampo'4

23

简而言之:不。

-答案到此为止。以下所有内容只是我试图解释原因的尝试。

您正在体验的是Mac如何运行应用程序的理念。这些谁最后一个窗口自败后关闭的行为不至Mac接口指南(虽然有很多这样的)。//编辑:这并不完全正确,请参见下面的帖子。

自从第一台Mac System(1984年)问世以来,就是这样。我想它将与我们再相伴25年。也许应用程序开发人员将允许我们在首选项中进行设置。

在此之前,它有助于习惯Command-Q(Apple键和q)退出每个应用程序-仅退出活动窗口的Command-W。


1
我的个人评论是:每天都在两个平台上工作:我已经习惯了。根本没有太大区别,而且-一如既往-它有两个方面。在应用程序运行时,每次后续启动都非常快捷。我偶尔使用的那些应用程序也可以在使用后立即关闭。我习惯于Mac上的Apple-Q / Apple-W比Windows上的Alt-F4 / Strg-F4快得多。
狼”,

28
在使用Command-Tab切换应用程序时(也可以在按住Command的同时),也可以按Q退出该应用程序切换器中当前突出显示的应用程序。
Arjan

+1表示Arjan的评论。这是一次关闭大量应用程序的惊人方法。只要需要释放一些内存,就可以执行此操作。
Dan Rosenstark

2
真正让我烦恼的是,最小化的应用程序显示在应用程序切换器中,但是如果选择它们将无法还原。我发现非常不一致。就在最近-经过数年的使用-我碰到了按ALT的同时切换到(最小化)的应用程序可以恢复它。哇!

15
老实说,我对症状是否正常并不十分感兴趣。我对如何摆脱这种症状很感兴趣。
wfaulk

3

我编写了一个AppleScript应用程序来为您完成此任务。

简而言之,它检查哪些应用程序处于打开状态,使您可以选择将白名单从自动退出中排除,然后每60秒退出所有应用程序(由于限制而可以退出)。

要在运行白名单时更改白名单,请单击停靠栏中的图标以重新显示选择对话框。

要退出,请右键单击Dock图标,然后选择“退出”

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编程指南》说进程实际上已终止,因此可能缺少某些内容。

  • 自动终止功能使用户无需退出应用程序。取而代之的是,系统在后台透明地管理应用程序终止,从而终止不用于回收所需资源(例如内存)的应用程序。

[...]

自动终止将管理流程的工作从用户转移到系统上,从而可以更好地处理该工作。无论如何,用户无需手动管理流程。他们真正需要的只是运行应用程序,并在需要时使这些应用程序可用。自动终止使这成为可能,同时确保不会对系统性能造成不利影响。


1
在10.7.4的那些条件下,预览当然不会自动消失。
wfaulk

我之前错过了您的评论,但在10.8.2中对我来说确实如此。隐藏预览之前,您是否至少打开过一个窗口(如打开和关闭首选项窗口)?
2013年

2

另一个免费的小型简单应用程序Quitter,在托盘栏中显示一个X图标,其作用类似于Windows下的关闭按钮。


4
欢迎使用,并感谢您发布答案!您应该在链接的产品/博客上公开您的隶属关系。当一切都放在板上时通常不是问题:)
JoshP

0

覆盖中的以下方法NSApplicationDelegate(通常返回NO):

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

这是一个关于用户如何使之发生在现有应用程序上的问题,而不是关于程序员如何使他的程序执行该问题。不过,感谢您的努力。
wfaulk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.