Phosphene - moteur de fonds d’écran vidéo pour macOS Tahoe issu de la rétro-ingénierie des fonds d’écran vidéo d’Apple
(github.com/kageroumado)- Phosphene est une app de barre de menus + extension de fond d’écran qui lit les fichiers vidéo de l’utilisateur comme fonds d’écran du bureau et de l’écran verrouillé sur macOS
- Intégré au sélecteur de fonds d’écran natif du système, les vidéos ajoutées apparaissent dans System Settings → Wallpaper aux côtés des Aerials intégrés d’Apple
- Construit sur le WallpaperExtensionKit privé d’Apple, il fournit une lecture out-of-process, une persistance après la fermeture de l’app, ainsi qu’une intégration avec le cycle de vie de l’écran verrouillé, de l’inactivité et de la mise en veille, comme les Apple Aerials
- Il peut importer des fichiers MP4, MOV et tout fichier lisible par AVFoundation, et macOS enregistre le choix du fond d’écran pour plusieurs écrans et pour chaque Space
- Il implémente un gapless looping sans flush ni saccade en décalant les PTS/DTS à la frontière de la boucle pour enchaîner les images au niveau frame par frame
PlaybackPolicycombine l’état thermique, le niveau de batterie, l’alimentation batterie/secteur, le Game Mode, le mode d’affichage, la pause utilisateur, l’état de masquage, etc., pour déterminer le comportement de lecture parmifull / reduced / minimal / paused- Quand tous les écrans sont entièrement recouverts par des fenêtres, le rendu s’arrête et la lecture se met en pause jusqu’à ce que le bureau redevienne visible
- Il est possible de créer à l’avance, de façon optionnelle, des adaptive variants à plus basse résolution et plus faible fps, et le moteur de rendu remplace à chaque frontière de boucle par la variante la moins coûteuse satisfaisant la politique courante
- Avec le réglage Only on Lock Screen, le fond d’écran apparaît et disparaît naturellement au verrouillage/déverrouillage avec une courbe cubique, en reproduisant le comportement des Apple Aerials
- Côté app, une app de barre de menus en SwiftUI gère la vidéothèque, les métadonnées par vidéo, l’optimisation HEVC, les préférences et les notifications Darwin de modification de la bibliothèque
- Côté extension, elle s’exécute dans le
WallpaperAgentdu système, chargeWallpaperExtensionKit.frameworkà l’exécution et affiche les frames dans unCAContextdistant viaAVSampleBufferDisplayLayer - Comme
AVPlayerLayeréchoue silencieusement dans unCAContextdistant,VideoRendererpilote directementAVAssetReaderetAVSampleBufferDisplayLayerpour maintenir une timeline strictement croissante - Le projet dépend du swizzle
WallpaperSnapshotXPCet d’une analyse XPC basée surMirror, donc si Apple modifie des types privés ou des noms de champs, la gestion des snapshots et des requêtes peut se casser - Les prérequis sont macOS Tahoe 26.0+, Apple Silicon, Xcode 17+, avec une cible
arm64-apple-macos26.0et Swift 6 strict concurrency activé - La licence est MIT, avec mention d’une utilisation libre sans garantie
1 commentaires
Commentaires sur Hacker News
Très propre. Au début, j’étais un peu perdu·e : « on peut télécharger des économiseurs d’écran vidéo, alors pourquoi aller extraire des frames ? », puis en lisant les commentaires j’ai compris qu’on pouvait utiliser ses propres vidéos sur le bureau et l’écran verrouillé
Ce serait bien mieux avec un titre qui ne cache pas l’idée principale et montre tout de suite ce qu’on peut faire et comment
Je comprends en partie pourquoi Tahoe se fait pas mal critiquer, mais les fonds d’écran vidéo et les effets de transparence ont un petit côté Windows Vista, ce qui est amusant et nostalgique
Il est temps de mettre le fond d’écran de la cascade de Vista pour se sentir vraiment en 2007
Je me demande de quelle cascade il s’agit. Je suis aussi surpris qu’il y ait eu autant de fonds d’écran dans Vista ; ceux dont je me souviens, c’est surtout le dégradé vert par défaut et une forêt de bambous que j’ai utilisée un temps
Merci vraiment pour ça. J’étais en train de constituer une collection d’économiseurs d’écran, mais LegacyScreenSaver était bien trop bancal
J’espérais que quelqu’un finirait par comprendre le framework privé de fonds d’écran d’Apple, et c’est effectivement arrivé
com.apple.wallpaperest exécutée sur le bureau par WallpaperAgentPour les économiseurs d’écran, voir l’autre article ; j’y ai mis un exemple d’API privée d’économiseur d’écran qui contourne ça. Apple utilise les deux dans ses propres « Aerials » et dispose d’un système de synchronisation qui partage la position entre le lecteur de l’économiseur d’écran et celui du bureau
Je pense que le meilleur fond d’écran vidéo d’Apple, c’est Macintosh. Je me demande comment il fonctionne
À plusieurs endroits, la date et l’heure correspondent à la date et à l’heure du système, à la seconde près
Wow, c’est vraiment génial. J’ai réussi à rétroconcevoir le framework privé d’économiseur d’écran
.appexpour le faire fonctionner dans Aerial 4, et j’ai publié la semaine dernière avec la v4 un projet d’exemple et la documentation pour ceux que ça intéresse : https://github.com/AerialScreensaver/AppexSaverMinimalJ’ai aussi essayé la même approche avec les appex de fond d’écran ; le reverse engineering en lui-même semblait assez simple, mais WallpaperAgent refusait de les charger, donc pour l’instant j’utilise encore l’astuce classique qui consiste à afficher ma fenêtre et mon lecteur vidéo au-dessus du fond d’écran et sous les icônes. Je vais regarder ce que j’ai raté
Très beau travail. Je suis récemment tombé dans un terrier similaire en rétroconcevant le catalogue Aerials et en essayant de comprendre comment Apple relie tout ça ; c’est sympa de voir un autre projet open source faire la même chose
Le détail que je préfère, et que nous n’avons pas réussi à reproduire dans notre outil, c’est la manière dont l’animation se poursuit sans interruption entre la fenêtre de connexion et le bureau live. Nous avons créé phonto, une implémentation cross-platform de la même idée : https://github.com/museslabs/phonto. J’étais justement sur le point d’écrire un billet sur tout le processus de reverse engineering, et ça pourrait être le déclic pour m’y mettre
Ça me rappelle qu’on pouvait utiliser une page HTML comme fond d’écran sur Windows 98. Et cette page HTML pouvait même contenir de la vidéo
Cela dit, Active Desktop sur Windows 98 était la partie la plus instable d’un système d’exploitation déjà instable. Sur une nouvelle installation, c’était la première chose à désactiver ; le système plantait toujours si on le regardait de travers, mais au moins il ne plantait plus juste pour le fun
C’est bien réalisé, mais j’aimerais qu’il y ait une vidéo de démonstration dans le README
L’app a maintenant une landing page avec un lien de téléchargement, et on peut aussi voir les autres projets. Le plus gros projet est le navigateur Refrax, et il y a aussi pas mal de petites apps utilitaires
https://kagerou.glass/phosphene/
https://kagerou.glass
Je suis aussi curieux de savoir ce qui a aidé pour le design
Vraiment très cool. Ça me rappelle que j’avais envie d’essayer de mettre en place un fond d’écran vidéo personnalisé avec une vieille vidéo que j’avais
Avant de voir ça, je ne savais même pas que ce n’était pas pris en charge nativement