Zwei Anzeigen für einen Handgriff sind eine zu viel

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>
This commit is contained in:
Scarriffle
2026-09-05 22:26:41 +02:00
co-authored by Claude Opus 5
parent fd29df51cf
commit a3399d3a96
9 changed files with 221 additions and 8 deletions
+47
View File
@@ -0,0 +1,47 @@
# 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.