Creación de fondos de pantalla de vídeo nativos para macOS Tahoe con Phosphene

Explore cómo Phosphene aprovecha los frameworks privados de Apple para ofrecer fondos de pantalla de vídeo sin interrupciones y eficientes energéticamente que se integran directamente en los Ajustes del Sistema de macOS.

Durante años, los usuarios de macOS han dependido de aplicaciones de terceros que superponen ventanas o modifican el entorno de escritorio para mostrar fondos de pantalla de vídeo. Estas soluciones suelen consumir muchos recursos, agotar la batería y ser propensas a parpadeos. Aquí entra Phosphene, un motor de código abierto para macOS Tahoe que adopta un enfoque radicalmente diferente: se integra directamente en el selector de fondos de pantalla nativo del sistema.

La ventaja "nativa"

Phosphene no es simplemente otra aplicación de superposición. Está construido sobre el framework privado WallpaperExtensionKit de Apple, la misma tecnología que impulsa los protectores de pantalla "Aerial" de la propia Apple. Al conectarse a este punto de extensión a nivel de sistema, Phosphene permite que sus vídeos personalizados aparezcan directamente en Ajustes del Sistema → Fondo de pantalla junto con las opciones nativas.

Debido a que el renderizado ocurre fuera del proceso principal dentro del WallpaperAgent del sistema, el fondo de pantalla persiste incluso si se cierra la aplicación Phosphene. Respeta los ciclos de vida de la pantalla de bloqueo, inactividad y reposo del sistema operativo, proporcionando un nivel de estabilidad que las aplicaciones de superposición tradicionales simplemente no pueden igualar.

Bajo el capó: Arquitectura e ingeniería

Phosphene divide su carga de trabajo en dos componentes distintos:

  1. Phosphene.app (IU de la barra de menús): Gestiona la biblioteca, los metadatos y la transcodificación. Utiliza un VideoOptimizationService para generar variantes de menor resolución o menos fps de sus vídeos, asegurando que el sistema pueda cambiar a activos más ligeros cuando la batería esté baja o la presión térmica sea alta.
  2. PhospheneExtension.appex (El motor): Este es el núcleo del sistema. Se ejecuta dentro del proceso WallpaperAgent, utilizando AVSampleBufferDisplayLayer para renderizar los fotogramas.

Resolviendo el problema del "bucle sin interrupciones"

Uno de los logros técnicos más impresionantes de Phosphene es su enfoque para el bucle (looping). Las implementaciones estándar de AVPlayerLayer a menudo causan un micro-tartamudeo o un "destello" al reiniciar un vídeo. Phosphene evita esto controlando manualmente el flujo de decodificación. Mantiene un AVAssetReader para el bucle actual mientras precarga el siguiente, utilizando un desplazamiento de marca de tiempo de presentación (PTS) que aumenta monótonamente a través de los límites del bucle. Esto da como resultado bucles perfectamente fluidos y precisos en cada fotograma.

Reproducción eficiente energéticamente

Phosphene no solo reproduce vídeo; lo gestiona en función del estado del sistema. Su PlaybackPolicy actúa como la única fuente de verdad, analizando entradas como:

  • Nivel de batería frente a alimentación de CA
  • Estado térmico
  • Estado del Modo Juego
  • Oclusión de ventanas (pausando el renderizado si el escritorio está totalmente cubierto)

Esta lógica garantiza que su fondo de pantalla no se convierta en un cuello de botella de rendimiento durante tareas intensivas.

Una nota sobre los frameworks privados

Es importante tener en cuenta que Phosphene utiliza dlopen para cargar WallpaperExtensionKit y se apoya en la introspección en tiempo de ejecución basada en Mirror para comunicarse con tipos XPC. Debido a que estas son APIs privadas, el proyecto está intrínsecamente ligado a las estructuras internas de macOS Tahoe. El desarrollador ha implementado soluciones ingeniosas, como un swizzle de WallpaperSnapshotXPC, para asegurar que la pantalla de bloqueo no se vuelva gris durante las transiciones, un problema común cuando los codificadores privados de Apple esperan tipos de clase específicos.

Primeros pasos

Si eres un desarrollador interesado en cómo funciona esto, puedes compilarlo desde el código fuente. El proyecto requiere Xcode 17+ y Swift 6 con concurrencia estricta.

git clone https://github.com/kageroumado/phosphene.git
cd phosphene
open Phosphene.xcodeproj

Para una compilación sin interfaz (útil para CI o pruebas locales sin identidades de firma), puedes usar:

xcodebuild -project Phosphene.xcodeproj -scheme Phosphene -configuration Debug \
-destination 'generic/platform=macOS' \
CODE_SIGNING_ALLOWED=NO CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY='' build

Phosphene es una clase magistral de ingeniería inversa e integración a nivel de sistema. Ya sea que quieras usarlo para personalizar tu escritorio o estudiar cómo interactuar con frameworks privados de macOS, es un proyecto que vale la pena explorar.

Fuente

kageroumado/phosphene: A video wallpaper engine for macOS Tahoe