Phosphene - Motor de fondos de pantalla en video para macOS Tahoe que hace ingeniería inversa de los fondos de video de Apple
(github.com/kageroumado)- Phosphene es una app de barra de menú + extensión de fondo de pantalla que reproduce archivos de video del usuario como fondo del escritorio y de la pantalla de bloqueo en macOS
- Se integra con el selector de fondos de pantalla predeterminado del sistema, por lo que los videos agregados aparecen en System Settings → Wallpaper junto con los Aerials integrados de Apple
- Está construido sobre el WallpaperExtensionKit privado de Apple y ofrece reproducción fuera del proceso, persistencia después de cerrar la app e integración con el ciclo de vida de pantalla de bloqueo, inactividad y reposo, igual que Apple Aerials
- Puede importar MP4, MOV y cualquier archivo que AVFoundation pueda leer, y macOS guarda la selección de fondo para múltiples pantallas y para cada Space
- Implementa gapless looping sin flush ni cortes ajustando el offset de PTS/DTS en los límites del bucle para unirlo de forma continua a nivel de fotograma
PlaybackPolicycombina el estado de la tapa, el nivel de batería, energía por batería o AC, Game Mode, modo de visibilidad, pausa del usuario, estado de ocultamiento y otros factores para decidir el comportamiento de reproducción entrefull / reduced / minimal / paused- Si todas las pantallas quedan completamente cubiertas por ventanas, detiene el renderizado y pausa la reproducción hasta que el escritorio vuelva a estar visible
- De forma opcional, puede crear previamente adaptive variants de menor resolución y menor fps, y el renderizador cambia en cada límite del bucle a la variante más barata que cumpla con la política actual
- En la configuración Only on Lock Screen, el fondo aparece y desaparece naturalmente con una curva cúbica al bloquear y desbloquear, alineándose con el comportamiento de Apple Aerials
- Del lado de la app, es una app de barra de menú en SwiftUI que gestiona la biblioteca de videos, los metadatos por video, la optimización HEVC, las preferencias y la notificación Darwin de cambios en la biblioteca
- Del lado de la extensión, se ejecuta dentro del
WallpaperAgentdel sistema, cargaWallpaperExtensionKit.frameworken tiempo de ejecución y renderiza cuadros hacia unCAContextremoto conAVSampleBufferDisplayLayer - Como
AVPlayerLayerfalla silenciosamente dentro de unCAContextremoto,VideoRenderercontrola directamenteAVAssetReaderyAVSampleBufferDisplayLayerpara mantener una línea de tiempo monótonamente creciente - Depende del swizzle de
WallpaperSnapshotXPCy del parseo XPC basado enMirror, por lo que si Apple cambia tipos privados o nombres de campos, la parte de snapshots y manejo de solicitudes puede romperse - Los requisitos son macOS Tahoe 26.0+, Apple Silicon y Xcode 17+, y tiene activada strict concurrency de Swift 6 apuntando a
arm64-apple-macos26.0 - La licencia es MIT y se indica que puede usarse libremente sin garantía
1 comentarios
Comentarios en Hacker News
Muy limpio. Al principio me confundió eso de “se pueden descargar protectores de pantalla en video, entonces ¿por qué extraer fotogramas?”, pero al leer los comentarios entendí que puedo usar mis propios videos en el escritorio y la pantalla de bloqueo
Sería mucho mejor si el título no ocultara la idea principal y mostrara de inmediato qué se puede hacer y cómo
Entiendo hasta cierto punto por qué Tahoe recibe tantas críticas, pero los fondos de pantalla en video y los efectos de transparencia tienen una vibra de Windows Vista que me parece divertida y nostálgica
Ya es hora de poner el fondo de la cascada de Vista y sentirse de verdad como en 2007
Me da curiosidad cuál cascada dices. También me sorprende que Vista tuviera tantos fondos; yo solo recuerdo el típico degradado verde y, quizá, el bosque de bambú que usé un tiempo
Muchas gracias por esto. Estaba armando una colección de protectores de pantalla y LegacyScreenSaver era demasiado tosco
Esperaba que alguien descifrara el framework privado de fondos de Apple, y de verdad lo logró
com.apple.wallpaperla ejecuta WallpaperAgent en el escritorioPara protectores de pantalla hay que ver la otra publicación; ahí subieron ejemplos del API privado de protectores para saltarse esto. Apple usa ambos en sus propios “Aerials” y tiene un sistema de sincronización que comparte la posición entre el reproductor del protector de pantalla y el reproductor del escritorio
Creo que el mejor fondo de video de Apple es Macintosh. Me pregunto cómo funciona
Hay varios puntos donde la fecha y la hora coinciden con la fecha y hora del sistema, hasta los segundos
Vaya, esto está realmente genial. Yo sí logré hacer ingeniería inversa del framework privado de protectores
.appexpara que funcionara en Aerial 4, y la semana pasada publiqué junto con la v4 un proyecto de ejemplo y documentación para quien lo quiera: https://github.com/AerialScreensaver/AppexSaverMinimalTambién intenté lo mismo con el appex de Wallpaper; la ingeniería inversa en sí parecía fácil, pero WallpaperAgent se negó a cargarlo, así que por ahora sigo usando el truco clásico de poner mi ventana y reproductor de video encima del fondo y debajo de los íconos. Voy a revisar qué fue lo que se me escapó
Está realmente bien hecho. Hace poco caí en un agujero de conejo parecido e hice ingeniería inversa del catálogo de Aerials y de cómo Apple conecta todo esto, así que da gusto ver otro proyecto de código abierto haciendo lo mismo
El detalle que más me gusta y que no pudimos recrear en nuestra herramienta es cómo la animación sigue de forma continua entre la ventana de inicio de sesión y el escritorio en vivo. Nosotros hicimos phonto, que implementa una idea similar de forma multiplataforma: https://github.com/museslabs/phonto. Justo estaba por escribir sobre todo el proceso de ingeniería inversa, así que esto quizá me dé el empujón para empezar
Me hizo recordar que en Windows 98 se podían usar páginas HTML como fondo de pantalla. Y ese HTML también podía incluir video
Dicho eso, Active Desktop de Windows 98 era la parte más inestable de un sistema operativo que ya de por sí era inestable. Era lo primero que había que desactivar al instalar un sistema nuevo; seguía fallando con solo mirarlo mal, pero al menos ya no fallaba por diversión
Está muy bien hecho, pero estaría bien que el README tuviera un video de demostración
La app ahora tiene una landing page con enlace de descarga, y también se pueden ver otros proyectos. El proyecto más grande es el navegador Refrax, y además hay varias apps utilitarias pequeñas
https://kagerou.glass/phosphene/
https://kagerou.glass
También me da curiosidad qué ayudó con el diseño
Está buenísimo. Me recordó que antes quería probar poner un fondo de video personalizado con videos que tenía
Hasta ver esto, ni siquiera sabía que no era algo soportado por defecto