MacのステータスバーにCPU温度を表示したい、もしくはスクリプトのapp化の方法

てみじかに

  • MacのステータスバーにCPU温度を表示するだけのアプリケーションを作りました
  • スクリプトのapp化の方法を紹介します

1. MacのステータスバーにCPU温度を表示する

長らく Temperature Monitor を使ってMacのステータスバーにCPU温度を表示させていたのですが、起動時に「このハードウェアはなうくてサポートしてないにょ」旨のダイアログが出て使えなくなってしまいました。

他のアプリ、例えば iStat Menusだと温度表示できるようですが有料です。(無料でよさげのがあったら教えてください><)

そこでRubyCocoaでCPU温度をステータスバーに表示するスクリプトを書いてapp化したものを作りました。

git clone して CPUTemperature.app をダブルクリックすれば動くと思いますが、Mavericks (10.9)以外だとshebangの修正とか必要かもしれません。

2. スクリプトのapp化の方法

温度情報の取得

自分の MacBook Air 11", Mid 2013 ではTemperature Monitor は起動できなくなったのですが、それに含まれる tempmonitor コマンド(TemperatureMonitor.app/Contents/MacOS/tempmonitor)を使えば温度が取れたので、これを使うことにしました。

$ /Applications/TemperatureMonitor.app/Contents/MacOS/tempmonitor -a -l -ds -c
SMC BATTERY: 36 C
SMC BATTERY CHARGER PROXIMITY: 60 C
SMC BATTERY POSITION 2: 36 C
SMC BATTERY POSITION 3: 33 C
SMC CPU A PROXIMITY: 65 C
SMC CPU H PROXIMITY: 57 C
SMC LEFT PALM REST: 32 C
SMC MAIN HEAT SINK 2: 38 C
SMC MAIN LOGIC BOARD: 47 C
SMC SSD BAY: 45 C
SMC WLAN CARD: 48 C
ステータスバーへの描写

ググったらRubyCocoaでステータスバーに描写するスクリプトの情報があったので、これをいただきました。

app化

今までスクリプトをapp化するときはAppleScriptでラッパーアプリを作っていたのですが、ググったらアプリケーションバンドルのスケルトンを生成してそれを使う方法を見つけたので、今回はそれでやってみました。

$ echo | osacompile -o CPUTemperature.app
$ rm -f CPUTemperature.app/Contents/MacOS/applet
$ cp cpu-temperature.rb CPUTemperature.app/Contents/MacOS/
$ vi CPUTemperature.app/Contents/Info.plist
  # CFBundleExecutable の applet を cpu-temperature.rb に書き換える

おわりに

RubyCocoaでサクッとステータスバーなアプリを作れることがわかりました。CPU温度以外にも好きな文字列や、ちょっとがんばれば画像もステータスバーに表示できそうでいろいろ捗りそうですね。