MacSlowCooker は Mac の GPU 使用率・SoC 温度・ファン RPM・電力を、Dock の鍋アイコンとフローティングウィンドウで可視化する macOS アプリ。GPU が忙しいと鍋の下の炎が伸び、温度が上がると鍋が赤くなり、ファンが回ると湯気が立ち、高負荷が続くと沸騰演出に切り替わる。
Apache License 2.0 で公開。Apple Silicon / Intel 両対応の Universal Binary(macOS 14 以降)。
機能
アニメーションする Dock アイコン
3D ドラム形の鍋(円柱風シェーディング、ドーム蓋、ハンドル付き)。鍋の色は SoC 温度に連動(白 → 95°C で赤橙)。下の炎は GPU 使用率で伸び、湯気はファン RPM(ファンレス機種は温度)に連動して本数・太さが変化。
フローティングダッシュボード
Activity Monitor の「GPU の履歴」風ウィンドウ。GPU / Temperature / Fan / Power の 4 チャート + メトリクスタイル。Float-above-other-windows のオン/オフ可。数値は危険度に応じて白 → 黄 → 赤に変化。
Apple Silicon と Intel
Universal Binary。サンプラー選択は実行時にホスト CPU を検出するので、Universal Binary の x86_64 スライスが Rosetta 上で動いていてもちゃんと正しいデータを取れる。ファンレス機種(MacBook Air M シリーズ等)では Fan UI が自動非表示になり、湯気は温度ベースにフォールバック。
低電力モード対応
Low Power Mode が ON のときアニメーションを 5 fps に落とし、炎の wiggle を無効化。Preferences のステータス行に override 中であることを表示。
App Store で配布しない理由
MacSlowCooker は SMAppService.daemon で root の LaunchDaemon を登録し、/usr/bin/powermetrics を spawn し、AppleSMC と IOHIDEventSystem を直叩きする。**3 つとも App Store Sandbox では使えない**:
- App Store では
SMAppService.loginItem(ユーザー権限)しか許可されない。SMAppService.daemon(root)は不可 - Sandbox は
powermetrics(これ自体 root 必須)の spawn を禁止 IOHIDEventSystem*とAppleSMCユーザクライアントは私的 API
iStat Menus / Stats / TG Pro が App Store にいないのと同じ理由。App Store 配布のために大幅に機能を削るより OSS のほうが現実解だと判断した。
インストール
署名済 DMG リリースは現状なし。ソースからビルドする:
git clone https://github.com/hakaru/MacSlowCooker.git
cd MacSlowCooker
# Apple Developer Team ID をセット(権限 helper が検証する)
bin/set-team-id.sh ABC1234XYZ
# Xcode プロジェクト生成 + ビルド
brew install xcodegen
xcodegen generate
xcodebuild -project MacSlowCooker.xcodeproj -scheme MacSlowCooker \
-configuration Release -derivedDataPath build build \
CODE_SIGN_STYLE=Automatic DEVELOPMENT_TEAM=ABC1234XYZ \
ONLY_ACTIVE_ARCH=NO
詳細なビルド・デプロイ手順は CONTRIBUTING.md。
FAQ
なぜ root 権限が要るの?
powermetrics は GPU 電力・thermal_pressure を取るのに root が必要。本体アプリは非特権のまま、root の LaunchDaemon を別バンドルとして登録して XPC で叩く設計。helper は接続元アプリの code-signing requirement (Team OU) を毎回検証する。
動作が重くならない?
idle CPU はほぼゼロ。アニメーター用タイマーは動きが必要なときだけ走り、Dock アイコン更新は visualHash で重複描画を抑制。helper の powermetrics プロセスは Activity Monitor が内部で使っているのと同じもの。
Intel Mac / MacBook Air は?
両対応。Intel の powermetrics は gpu_busy / busy_ns という別スキーマを出すが parser が両系統を扱う。ファンレス機種では Fan チャートを自動非表示にして、湯気は温度ベースにフォールバック。
コントリビュートしたい
Issue / PR 歓迎。CONTRIBUTING.md 参照。
連絡先
質問・バグ報告:
GitHub Issues(推奨)または hirose@hakaru.net