- Phosphene adalah aplikasi menu bar + ekstensi wallpaper yang memutar file video milik pengguna sebagai wallpaper desktop dan layar kunci di macOS
- Terintegrasi ke pemilih wallpaper bawaan sistem, sehingga video yang ditambahkan akan muncul bersama Aerials bawaan Apple di System Settings → Wallpaper
- Dibangun di atas WallpaperExtensionKit privat milik Apple, dan menyediakan pemutaran out-of-process, tetap berjalan setelah aplikasi ditutup, serta integrasi siklus hidup layar kunci, idle, dan sleep dengan cara yang sama seperti Apple Aerials
- Dapat mengimpor MP4, MOV, dan file apa pun yang bisa dibaca AVFoundation, sementara pemilihan wallpaper untuk beberapa display dan tiap Space disimpan oleh macOS
- Mengimplementasikan gapless looping tanpa flush atau putus dengan cara meng-offset PTS/DTS di batas loop agar tersambung mulus per frame
PlaybackPolicy menggabungkan status tutup-buka laptop, level baterai, daya baterai/AC, Game Mode, mode tampilan, jeda oleh pengguna, status tertutup jendela, dan lainnya untuk menentukan perilaku pemutaran sebagai salah satu dari full / reduced / minimal / paused
- Jika semua display tertutup penuh oleh jendela, rendering dihentikan dan pemutaran dijeda sampai desktop kembali terlihat
- Secara opsional dapat membuat adaptive variants beresolusi lebih rendah dan fps lebih rendah terlebih dahulu, lalu renderer menggantinya di setiap batas loop dengan varian termurah yang masih memenuhi kebijakan saat ini
- Dalam pengaturan Only on Lock Screen, wallpaper muncul dan menghilang secara alami dengan kurva kubik saat perangkat dikunci dan dibuka, menyesuaikan perilaku Apple Aerials
- Di sisi aplikasi, ini adalah aplikasi menu bar berbasis SwiftUI yang menangani pustaka video, metadata per video, optimasi HEVC, preferensi, dan Darwin notification untuk perubahan pustaka
- Di sisi ekstensi, ia berjalan di dalam
WallpaperAgent sistem, memuat WallpaperExtensionKit.framework saat runtime, dan merender frame ke CAContext jarak jauh dengan AVSampleBufferDisplayLayer
- Karena
AVPlayerLayer diam-diam gagal di dalam CAContext jarak jauh, VideoRenderer langsung mengendalikan AVAssetReader dan AVSampleBufferDisplayLayer untuk mempertahankan timeline yang terus meningkat
- Bergantung pada swizzle
WallpaperSnapshotXPC dan parsing XPC berbasis Mirror, sehingga jika Apple mengubah tipe privat atau nama field, sisi snapshot dan pemrosesan permintaan bisa rusak
- Persyaratannya adalah macOS Tahoe 26.0+, Apple Silicon, Xcode 17+, dan menargetkan
arm64-apple-macos26.0 dengan Swift 6 strict concurrency diaktifkan
- Lisensinya adalah MIT, dan dinyatakan bebas digunakan tanpa jaminan apa pun
1 komentar
Komentar Hacker News
Sangat rapi. Awalnya aku bingung, “screensaver video bisa diunduh, jadi kenapa harus mengekstrak frame?” lalu setelah membaca komentar baru paham bahwa video milikku sendiri bisa dipakai untuk desktop dan lock screen
Akan jauh lebih baik jika judulnya langsung jelas tentang apa yang bisa dilakukan dan bagaimana caranya, tanpa menyembunyikan inti
Aku cukup paham kenapa Tahoe lumayan banyak dikritik, tapi wallpaper video dan efek transparansi ini terasa seperti Windows Vista, jadi lucu sekaligus memunculkan nostalgia
Sekarang saatnya memasang wallpaper air terjun Vista agar benar-benar terasa seperti tahun 2007
Aku penasaran air terjun yang mana. Mengejutkan juga ternyata Vista punya wallpaper sebanyak ini; yang kuingat cuma gradasi hijau default dan hutan bambu yang sempat kupakai
Terima kasih banyak untuk ini. Aku sedang membuat koleksi screensaver, tapi LegacyScreenSaver terlalu berantakan
Aku berharap seseorang akan membongkar framework wallpaper privat Apple, dan ternyata benar-benar ada yang melakukannya
com.apple.wallpaperdi desktopUntuk screensaver lihat tulisan lainnya; di sana ada contoh API screensaver privat yang dipakai untuk melewati ini. Apple memakai keduanya di “Aerials”-nya sendiri, dan punya sistem sinkronisasi yang berbagi posisi antara pemutar screensaver dan pemutar desktop
Menurutku wallpaper video terbaik Apple adalah Macintosh. Aku penasaran bagaimana cara kerjanya
Ada beberapa titik di mana tanggal dan waktunya cocok dengan tanggal dan waktu sistem sampai ke hitungan detik
Wah, ini benar-benar keren. Aku berhasil me-reverse-engineer framework
.appexscreensaver privat agar bisa berjalan di Aerial 4, dan minggu lalu sudah merilis proyek contoh serta dokumentasinya bersama v4 untuk siapa pun yang ingin memakainya: https://github.com/AerialScreensaver/AppexSaverMinimalAku juga mencoba appex wallpaper dengan cara yang sama, dan reverse engineering-nya sendiri tampak mudah, tetapi WallpaperAgent menolak memuatnya, jadi untuk sekarang aku masih memakai trik klasik menampilkan jendela dan pemutar videoku di atas wallpaper dan di bawah ikon. Aku akan melihat apa yang mungkin terlewat
Dibuat dengan sangat baik. Belakangan ini aku juga masuk ke lubang kelinci serupa, me-reverse-engineer katalog Aerials dan mencari tahu bagaimana Apple menyambungkan semua ini, jadi menyenangkan melihat ada proyek open source lain yang melakukan hal serupa
Detail favoritku, dan bagian yang tidak bisa kami tiru di alat kami, adalah bagaimana animasinya tetap berlanjut antara jendela login dan desktop live. Kami membuat phonto, implementasi lintas platform dari ide yang sama: https://github.com/museslabs/phonto. Aku memang sedang berniat menulis seluruh proses reverse engineering-nya, dan ini mungkin bisa jadi pemicunya
Ini mengingatkanku bahwa di Windows 98 kita bisa memakai halaman HTML sebagai wallpaper, dan HTML itu bahkan bisa memuat video
Ngomong-ngomong, Active Desktop di Windows 98 adalah bagian paling tidak stabil dari sistem operasi yang memang sudah tidak stabil sejak awal. Saat memasang sistem baru, itu hal pertama yang harus dimatikan, dan meski sistemnya tetap bisa crash hanya karena ditatap salah, setidaknya ia tidak lagi crash demi hiburan
Bagus sekali, tapi akan lebih baik kalau README punya video demo
Aplikasinya sekarang punya landing page dengan tautan unduhan, dan proyek-proyek lain juga bisa dilihat di sana. Proyek terbesar adalah browser Refrax, dan selain itu ada banyak aplikasi utilitas kecil
https://kagerou.glass/phosphene/
https://kagerou.glass
Aku juga penasaran apa yang membantu dalam desainnya
Benar-benar keren. Ini mengingatkanku bahwa dulu aku ingin mencoba memasang wallpaper video kustom dari video yang pernah kumiliki
Sampai melihat ini, aku bahkan tidak sadar bahwa itu tidak didukung secara bawaan