Apples eigene Einblendung lässt sich aushängen, ohne Root und ohne SIP anzufassen: `com.apple.OSDUIHelper` liegt in der GUI-Domäne des angemeldeten Benutzers, nicht im System. `launchctl bootout` dort hinein genügt. Standardmäßig aus, denn es verschwindet **jede** Einblendung — auch Helligkeit und Feststelltaste, und für die Feststelltaste hat Onyx keinen Ersatz. Beim Beenden wird wieder eingehängt: eine Einstellung darf nicht überleben, was sie eingestellt hat. Dazu zwei Fehler im Anlernen behoben. Der Posenname stand als roher Schlüssel da — die Zeichenketten liegen im Bündel von `FaceProvider`, gesucht wurden sie im Hauptbündel. Und „Gesicht vergleichen" blieb nach dem Anlernen grau, weil `isEnrolled` bei jedem Aufruf den Schlüsselbund las: richtig, aber für SwiftUI unsichtbar, weil es nichts gab, woran eine Ansicht die Änderung hätte bemerken können. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2.1 KiB
Spike J — Apples eigene Einblendung unterdrücken
Im Plan heißt dieser Spike „G". Die Buchstaben in
docs/spikes/sind fortlaufend vergeben; hier läuft die vorhandene Reihe weiter.
Frage. Lässt sich com.apple.OSDUIHelper zuverlässig aushängen? Kommt er von
selbst zurück? Was passiert beim Ab- und Anmelden? Steht SIP im Weg?
Gemessen am 05.09.2026, rein lesend.
Ergebnis
| Prüfung | Befund |
|---|---|
| Prozess läuft dauerhaft? | nein — bedarfsgesteuert, state = not running |
| LaunchAgent | /System/Library/LaunchAgents/com.apple.OSDUIHelper.plist |
| Domäne | gui/<uid> — die des angemeldeten Benutzers, nicht system |
| SIP | aktiviert, OSDUIHelper.app/Contents ist restricted |
Der entscheidende Punkt: der Dienst ist in der Benutzer-Domäne geladen.
launchctl bootout gui/<uid>/com.apple.OSDUIHelper hängt ihn dort aus — ohne
Root und ohne die SIP-geschützte Datei anzufassen. Geändert wird nur, was in der
eigenen Sitzung geladen ist.
Was das kostet
Es verschwindet jede Einblendung, nicht nur die für die Lautstärke: auch Helligkeit und Feststelltaste. Onyx zeigt nur die Lautstärke und die Helligkeit — die Feststelltaste hätte dann gar keine Rückmeldung mehr.
Deshalb:
- Der Schalter steht standardmäßig aus. Das ist eine Entscheidung, die man treffen soll, nicht eine, die man vorfindet.
- Beim Beenden von Onyx wird wieder eingehängt. Ohne das säße jemand bis zum nächsten Abmelden ganz ohne Rückmeldung da und wüsste nicht, warum. Eine Einstellung darf nicht überleben, was sie eingestellt hat.
Was der Spike nicht getan hat
Nichts ausgehängt. An einem Systemdienst zu drehen, um zu sehen was passiert, ist nichts, was ungefragt geschieht — auch dann nicht, wenn es sich zurücknehmen lässt. Geprüft wurde nur, wo der Dienst liegt und wem er gehört.
Damit ist auch nicht gemessen, ob er von selbst zurückkommt, wenn etwas ihn anfordert. Der Verdacht besteht: er ist bedarfsgesteuert. Falls ja, muss das Aushängen wiederholt werden — das zeigt sich beim ersten Einschalten.