OSX MavericksのAppNapを無効にする(右クリックメニューとコマンドライン)

OSX MavericksからAppNapという、バックグラウンドのアプリをスリープ状態にしてバッテリーを節約する機能がついたんだけど、サーバーやデーモンなどスリープしてほしくないプログラムもある。そんなプログラムをAppNapしてほしくない時に、2通りの方法がある。

[出典]

アプリのパッケージ(*.app)の右クリックメニューから

アプリのパッケージの右クリックメニューから、「AppNapを無効にする」を有効とすることでそのアプリでのAppNapを無効にすることができる。

ただ、この方法はアプリが対応している必要がある。右クリックでAppNapのメニューの出てこないアプリも多い印象。そんな場合にはコマンドラインから設定できる。

コマンドラインで

コマンドラインなら、右クリックでAppNapメニューの出てこないアプリでもAppNap無効にできる。ターミナルから、

$ defaults write <app domain name> NSAppSleepDisabled -bool YES

とする。<app domain name>com.apple.TexiEditのような、アプリ固有の識別ID。これを調べるには次のようにする。

  1. アプリのパッケージ(*.app)を右クリックで「パッケージの内容を表示」のようなメニューをクリック。
  2. Contents/Info.plistをエディタなどで開く。
  3. ファイルの中で<key>CFBundleIdentifier</key>を探す。その下の<string>タグに囲まれてるのがそのID。

出典

例えば、Emacsなら、

$ defaults write org.gnu.Emacs NSAppSleepDisabled -bool YES

とすればいい。Emacsユーザーなら、Emacsからウェブ開発用サーバを起動する人が多いと思うので、Mavericksでサーバが頻繁に反応しくなる場合はAppNapの無効を試してみるといいかも。というか僕がまさにそんなかんじでAppNap無効にする方法探したのでした。