MacSlowCooker visualisiert die Mac-GPU-Auslastung, SoC-Temperatur, Lüfterdrehzahl und Leistung als animiertes Kochtopf-Dock-Icon. Die Farbe des Topfes folgt der Hitze (weiß → rot), die Flamme darunter wächst mit der GPU-Last und Dampf steigt mit der Lüfterdrehzahl auf. Anhaltende Last löst eine Koch-Animation aus.
Open Source unter Apache License 2.0. Universal Binary für Apple Silicon und Intel Macs (macOS 14+).
Funktionen
Animiertes Dock-Icon
Trommelförmiger 3D-Topf, gerendert mit zylindrischer Schattierung, Kuppeldeckel und massiven Schlaufengriffen. Die Topffarbe geht von weiß (kühl) bis rot-orange (95 °C) über. Die Flamme darunter steigt mit der GPU-Auslastung; weicher Dampf steigt auf und verblasst mit der Lüfterdrehzahl (oder der Temperatur bei lüfterlosen Macs).
Schwebendes Dashboard
Fenster im Stil des „GPU-Verlaufs" der Aktivitätsanzeige mit Diagrammen und Kennzahlen-Kacheln für GPU, Temperatur, Lüfter und Leistung. Optional schwebt es über anderen Fenstern. Die Zahlen wechseln je nach Risiko von weiß über gelb zu rot.
Apple Silicon und Intel
Universal Binary. Die Sampler-Auswahl orientiert sich zur Laufzeit an der Host-CPU, sodass auch das x86_64-Slice eines Universal Binary unter Rosetta die richtigen Daten erhält. Lüfterlose Macs (MacBook Air M-Serie) blenden die Lüfter-UI automatisch aus und der Dampf fällt auf eine Temperaturrampe zurück.
Berücksichtigt den Stromsparmodus
Die Animation läuft mit 5 fps und das Flackern der Flamme wird deaktiviert, wenn der Stromsparmodus aktiv ist. Eine Statuszeile in den Einstellungen erklärt diese Übersteuerung.
Warum nicht im App Store?
MacSlowCooker installiert einen Root-LaunchDaemon-Helper (über SMAppService.daemon), startet /usr/bin/powermetrics und liest AppleSMC + IOHIDEventSystem direkt aus. Alle drei sind mit den App-Store-Sandbox-Regeln unvereinbar:
- App-Store-Apps dürfen nur
SMAppService.loginItem(Benutzerebene) verwenden, nichtSMAppService.daemon(root). - Die Sandbox verbietet das Starten von
powermetrics(das selbst Root-Rechte benötigt). IOHIDEventSystem*und derAppleSMC-User-Client sind private APIs.
Aus demselben Grund werden iStat Menus, Stats und TG Pro außerhalb des App Stores vertrieben. Eine Veröffentlichung im App Store würde bedeuten, das meiste zu streichen, was das Icon aussagekräftig macht – also bleibt MacSlowCooker stattdessen Open Source.
Installation
Derzeit gibt es kein signiertes DMG-Release. Aus dem Quellcode bauen:
git clone https://github.com/hakaru/MacSlowCooker.git
cd MacSlowCooker
# Set your Apple Developer Team ID (the privileged helper validates it)
bin/set-team-id.sh ABC1234XYZ
# Generate the Xcode project and build
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
Siehe CONTRIBUTING.md für den vollständigen Build-/Deploy-/Signier-Zyklus.
FAQ
Warum werden Root-Rechte benötigt?
powermetrics benötigt Root-Rechte, um GPU-Leistung und Thermalzustand abzufragen. Damit die Haupt-App ohne Privilegien läuft, delegiert MacSlowCooker das Sampling an einen kleinen Root-LaunchDaemon-Helper und kommuniziert mit ihm über XPC. Der Helper weist jeden Aufrufer ab, dessen Code-Signatur-Anforderung (Team OU) nicht übereinstimmt.
Bremst es meinen Mac aus?
Im Leerlauf liegt die CPU-Last praktisch bei null – der Animator-Timer stoppt automatisch, wenn das Icon nicht aktualisiert werden muss, und die Aktualisierung des Dock-Icons wird über einen quantisierten Hash entdoppelt. Der powermetrics-Prozess des Helpers ist derselbe, den auch die Aktivitätsanzeige intern verwendet.
Was ist mit meinem Intel Mac / MacBook Air?
Beide werden unterstützt. Intel Macs verwenden ein anderes powermetrics-Schema (gpu_busy / busy_ns); der Parser kommt mit beiden zurecht. Lüfterlose Macs (MacBook Air M-Serie) blenden das Lüfter-Diagramm automatisch aus, und der Dampf fällt auf eine Temperaturrampe zurück.
Kann ich beitragen?
Ja – Issues und Pull Requests sind willkommen. Siehe CONTRIBUTING.md.
Kontakt
Fragen oder Fehlerberichte:
GitHub Issues (bevorzugt) oder hirose@hakaru.net