Phosphene – Eine per Reverse Engineering entwickelte Video-Hintergrundbild-Engine für macOS Tahoe, die Apples Video-Wallpaper nachbildet
(github.com/kageroumado)- Phosphene ist eine Menüleisten-App + Wallpaper-Erweiterung, die Videodateien des Nutzers als Hintergrundbild auf dem macOS-Desktop und Sperrbildschirm abspielt
- Sie ist in den systemeigenen Hintergrundbild-Auswahldialog integriert, sodass hinzugefügte Videos unter System Settings → Wallpaper zusammen mit den integrierten Apple-Aerials erscheinen
- Sie basiert auf Apples privatem WallpaperExtensionKit und bietet wie Apple Aerials eine out-of-process-Wiedergabe, Fortbestand nach dem Beenden der App sowie eine Integration in die Lebenszyklen von Sperrbildschirm, Idle-Zustand und Ruhezustand
- Importiert werden können MP4-, MOV- und andere von AVFoundation lesbare Dateien; die Auswahl von Hintergrundbildern für mehrere Displays und pro Space wird von macOS gespeichert
- Für gapless looping werden an der Loop-Grenze PTS/DTS versetzt, sodass Frames ohne Flush oder sichtbare Unterbrechung framegenau aneinandergesetzt werden
PlaybackPolicykombiniert Faktoren wie geöffneten Zustand, Akkustand, Batterie-/AC-Betrieb, Game Mode, Anzeigemodus, Benutzerpause und Verdeckungszustand und bestimmt daraus eines vonfull / reduced / minimal / pausedals Wiedergabeverhalten- Wenn alle Displays vollständig von Fenstern verdeckt sind, wird das Rendering gestoppt und die Wiedergabe pausiert, bis der Desktop wieder sichtbar ist
- Optional lassen sich vorab adaptive variants mit niedrigerer Auflösung und geringerer fps erzeugen; der Renderer wechselt dann an jeder Loop-Grenze zur günstigsten Variante, die die aktuelle Policy erfüllt
- In der Einstellung Only on Lock Screen blendet das Hintergrundbild beim Sperren und Entsperren mit einer kubischen Kurve weich ein und aus, passend zum Verhalten von Apple Aerials
- Der App-Teil ist eine SwiftUI-Menüleisten-App und verwaltet Videobibliothek, videospezifische Metadaten, HEVC-Optimierung, Einstellungen sowie Darwin-Benachrichtigungen bei Bibliotheksänderungen
- Der Erweiterungs-Teil läuft innerhalb des systemeigenen
WallpaperAgent, lädt zur LaufzeitWallpaperExtensionKit.frameworkund rendert Frames mitAVSampleBufferDisplayLayerin einen entferntenCAContext - Da
AVPlayerLayerinnerhalb eines entferntenCAContextstillschweigend fehlschlägt, steuertVideoRendererAVAssetReaderundAVSampleBufferDisplayLayerdirekt an, um eine monoton steigende Timeline beizubehalten - Da es auf
WallpaperSnapshotXPC-Swizzling undMirror-basiertes XPC-Parsing angewiesen ist, können Snapshot- und Request-Verarbeitung brechen, wenn Apple private Typen oder Feldnamen ändert - Voraussetzungen sind macOS Tahoe 26.0+, Apple Silicon und Xcode 17+; als Ziel dient
arm64-apple-macos26.0mit aktiviertem Swift 6 Strict Concurrency - Die Lizenz ist MIT und weist ausdrücklich darauf hin, dass die Nutzung frei und ohne Gewähr erfolgt
1 Kommentare
Hacker-News-Kommentare
Sehr elegant. Anfangs war ich verwirrt und dachte: „Man kann doch Video-Bildschirmschoner herunterladen, warum also Frames herauskratzen?“ Erst durch die Kommentare habe ich verstanden, dass ich meine eigenen Videos für Desktop und Sperrbildschirm verwenden kann
Viel besser wäre ein Titel, der den Kern nicht versteckt, sondern sofort klar macht, was man wie tun kann
Ich kann schon einigermaßen nachvollziehen, warum Tahoe so viel Kritik einsteckt, aber Video-Hintergründe und Transparenzeffekte haben etwas von Windows Vista, was irgendwie unterhaltsam und nostalgisch ist
Jetzt ist es wohl Zeit, den Vista-Wasserfall als Hintergrundbild einzustellen und sich wirklich wie 2007 zu fühlen
Ich frage mich, welcher Wasserfall gemeint ist. Mich überrascht auch, dass Vista so viele Hintergrundbilder hatte; ich erinnere mich nur an so etwas wie den standardmäßigen grünen Verlauf und an den Bambuswald, den ich eine Zeit lang benutzt habe
Vielen Dank dafür. Ich habe gerade eine Sammlung von Bildschirmschonern gebaut, und LegacyScreenSaver war einfach zu unbeholfen
Ich hatte gehofft, dass jemand Apples privates Hintergrundbild-Framework entschlüsselt, und tatsächlich hat es jemand geschafft
com.apple.wallpaperauf dem Desktop ausFür Bildschirmschoner siehe den anderen Beitrag; dort habe ich ein Beispielprojekt und Dokumentation für eine private Bildschirmschoner-API veröffentlicht, die das umgeht. Apple verwendet beides in seinen eigenen „Aerials“ und hat ein Synchronisierungssystem, das die Position zwischen dem Bildschirmschoner-Player und dem Desktop-Player teilt
Ich finde, Apples bestes Video-Hintergrundbild ist Macintosh. Ich frage mich, wie das funktioniert
Es gibt mehrere Stellen, an denen Datum und Uhrzeit bis auf die Sekunde mit der Systemzeit übereinstimmen
Wow, das ist wirklich cool. Ich habe es geschafft, das private Bildschirmschoner-
.appex-Framework per Reverse Engineering so zum Laufen zu bringen, dass es in Aerial 4 funktioniert, und habe letzte Woche zusammen mit v4 ein Beispielprojekt und Dokumentation für alle veröffentlicht, die es ausprobieren wollen: https://github.com/AerialScreensaver/AppexSaverMinimalIch habe den Wallpaper-appex auf die gleiche Weise ausprobiert. Das Reverse Engineering selbst schien einfach zu sein, aber WallpaperAgent hat das Laden verweigert, deshalb nutze ich im Moment noch den klassischen Trick, mein Fenster und den Videoplayer über dem Hintergrundbild, aber unter den Icons anzuzeigen. Ich werde mir ansehen, was ich übersehen habe
Wirklich gut gemacht. Ich bin kürzlich in ein ähnliches Rabbit Hole gefallen, habe den Aerials-Katalog per Reverse Engineering untersucht und herausgefunden, wie Apple das alles verdrahtet; schön zu sehen, dass noch ein anderes Open-Source-Projekt daran arbeitet
Das Detail, das mir am besten gefällt und das wir in unserem Tool nicht nachbilden konnten, ist die Art, wie die Animation zwischen Anmeldefenster und Live-Desktop nahtlos weiterläuft. Wir haben mit phonto eine plattformübergreifende Umsetzung derselben Idee gebaut: https://github.com/museslabs/phonto. Ich wollte ohnehin gerade den gesamten Reverse-Engineering-Prozess aufschreiben; vielleicht ist das der Anstoß, damit anzufangen
Das erinnert mich daran, dass man unter Windows 98 HTML-Seiten als Hintergrundbild verwenden konnte. In dieses HTML konnte man auch Videos einbetten
Davon abgesehen war Active Desktop unter Windows 98 der instabilste Teil eines ohnehin schon instabilen Betriebssystems. Auf einem frisch installierten System musste man es als Erstes deaktivieren, und dann stürzte es zwar immer noch ab, aber wenigstens nicht mehr aus Spaß
Gut gemacht, aber im README wäre ein Demo-Video schön
Die App hat jetzt eine Landingpage mit Download-Link, und man kann sich auch die anderen Projekte ansehen. Das größte Projekt ist der Refrax-Browser, dazu kommen viele kleinere Utility-Apps
https://kagerou.glass/phosphene/
https://kagerou.glass
Mich würde auch interessieren, was beim Design geholfen hat
Wirklich cool. Das erinnert mich daran, dass ich schon einmal ein paar alte Videos hatte, die ich gern als benutzerdefinierten Video-Hintergrund verwendet hätte
Bis ich das hier gesehen habe, wusste ich nicht einmal, dass das nicht standardmäßig unterstützt wird