web-dev-qa-db-ja.com

最後のウィンドウが閉じた後にMac OS Xアプリケーションを閉じる

私はそれがただのうんざりだと知っていますが、Mac OS XのPreview.appが開いているウィンドウがないときに開いたままになるのは嫌です。最後のウィンドウが閉じられたときにそれを閉じる方法はありますか?

それを実現するためのオプションがプレビュー内に表示されないので、答えは同様の特異性を持つ他のプログラムにも適用できると思います。

これはOSのインターフェイスガイドラインの範囲外ではないことを理解しています。つまり、これは修正されるバグではないことを認識しています。ウィンドウが開いていない選択したGUIアプリケーションを自動的に閉じる方法があるかどうか疑問に思っています。

48
wfaulk

お試しください RedQuits:

RedQuitsは、赤いボタンでアプリケーションを閉じようとしたことがあり、なぜそれがまだ開いているのか疑問に思っている場合に役立ちます。 RedQuitsを使用すると、そのプログラムのウィンドウが1つしか残っていない場合、すべてのプログラムが終了します。プログラムの開いているすべてのウィンドウを終了して閉じる場合は、[そのアプリケーションのウィンドウが1つだけ残っている場合のみ終了する]をオフにします。設定で。

24
msaied

つまり、いいえ。

-答えはここで止まります。以下はすべて、その理由を説明するための私の試みです。

あなたが経験しているのは、アプリケーションがどのように振る舞うべきかというMacの哲学です。最後のウィンドウが消えた後にあるを閉じた人は、Macインターフェースガイドラインに準拠していません(ただし、そこにはたくさんあります)。 //編集:これは完全に正しくはありません。以下の投稿を参照してください。

それは、最初のMacシステム(1984年)からそのようになっています。あと25年は私たちと一緒にいると思います。たぶんアプリ開発者はそれをプリファレンスで設定できるようにするでしょう。

それまでは、Command-Q(Apple key and q))に慣れ、すべてのアプリを終了し、アクティブウィンドウだけでCommand-Wを終了するのに役立ちます。

24
Wolf

これを行うためのAppleScriptアプリケーションを作成しました。

簡単に言えば、開いているアプリケーションを確認し、自動終了から除外するアプリをホワイトリストに登録するオプションを提供します。その後、60秒ごとに、すべてのアプリケーションを終了します(制限のため、可能です)。

ホワイトリストの実行中にホワイトリストを変更するには、ドックのアイコンをクリックして、選択ダイアログを再表示します。

終了するには、Dockアイコンを右クリックして[終了]を選択します

AppleScriptソースおよびアプリケーション: http://files.me.com/kioarthurdane/6kjl9k

3
dotHTM

10.7で導入された自動終了機能は、一部のアプリケーションの問題に部分的に対処しています。

プレビューを開き、その中で少なくとも1つのウィンドウを開き、すべてのウィンドウを閉じ、別のアプリケーションに切り替えると、プレビューはDockおよびアプリケーションスイッチャーから非表示になります。アクティビティモニターを見ると、プロセスはまだ実行中でメモリを使用していますが、プロセスの管理方法にいくつかの変更がある可能性があります。

Mac Appプログラミングガイド は、プロセスが実際に終了しているため、何か不足している可能性があることを示しています。

  • 自動終了により、ユーザーがアプリを終了する必要がなくなります。代わりに、システムはアプリの終了をバックグラウンドで透過的に管理し、メモリなどの必要なリソースを再利用するために使用されていないアプリを終了します。

[...]

自動終了により、ユーザーからプロセスを管理するジョブがシステムに転送されます。とにかく、ユーザーはプロセスを手動で管理する必要はありません。本当に必要なのは、アプリを実行し、必要なときにアプリを利用できるようにすることだけです。自動終了により、システムのパフォーマンスが悪影響を受けないようにしながら、それが可能になります。

3
Lri

別の無料の小さくてシンプルなアプリ Quitter は、Windowsの閉じるボタンのように機能するXアイコンをトレイバーに表示します。

2
Andreas

NSApplicationDelegate(通常はNOを返す)の次のメソッドをオーバーライドします。

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