1 puntos por GN⁺ 3 시간 전 | 1 comentarios | Compartir por WhatsApp
  • 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
  • PlaybackPolicy combina 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 entre full / 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 WallpaperAgent del sistema, carga WallpaperExtensionKit.framework en tiempo de ejecución y renderiza cuadros hacia un CAContext remoto con AVSampleBufferDisplayLayer
  • Como AVPlayerLayer falla silenciosamente dentro de un CAContext remoto, VideoRenderer controla directamente AVAssetReader y AVSampleBufferDisplayLayer para mantener una línea de tiempo monótonamente creciente
  • Depende del swizzle de WallpaperSnapshotXPC y del parseo XPC basado en Mirror, 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

 
GN⁺ 3 시간 전
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

    • ¿“Nostalgia” por Windows Vista? Eso me hace sentir que ya he vivido bastante
    • El mayor problema de Tahoe es que la animación de la pantalla de bloqueo se entrecorta y se congela todo el tiempo. Uso un M3 Pro, y si puede reproducir video 4K sin perder cuadros, un simple fondo de video también debería funcionar bien; y si no puede, entonces ni debería existir
    • Debe de haber unas cuantas decenas de personas en todo el mundo que comparten esa nostalgia por Vista
    • https://windowswallpaper.miraheze.org/wiki/Windows_Vista
      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
    • Extraño la época, por 1998, de hackear xscreensaver para usarlo como fondo de la ventana raíz de X, o sea, en el escritorio
  • 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ó

    • Por lo que veo, esto es para WallpaperAgent, y la extensión de com.apple.wallpaper la ejecuta WallpaperAgent en el escritorio
      Para 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
    • LegacyScreenSaver consume muchísima memoria
  • Creo que el mejor fondo de video de Apple es Macintosh. Me pregunto cómo funciona

    • Yo también. Al ver partes de ese fondo me dio la impresión de que no era solo una colección de archivos de video, sino algo generado de forma procedural, así que volví a mirarlo para comprobarlo
      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 .appex para 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/AppexSaverMinimal
    Tambié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

    • La forma en que funciona es que la reproducción del video se comparte entre la pantalla de bloqueo y el escritorio, y el framework de Apple va cambiando de manera transparente la superficie donde se muestra
  • 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

    • En X11 puedes asignar cualquier programa que quieras como ventana raíz
      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

    • Me pregunto cómo hicieron la página tan rápido
      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