Point it at a folder of photos and videos. It renders a live, real-time 3D slideshow with programmable effects, full-screen on an external display. Drop files in, walk away — no config required.
A native Swift/AppKit shell (folder watching, decode, curation, windowing) drives a three.js/WebGL2 effect runtime running in a WKWebView.
cd app
swift run GalleryEnginePick a folder and a display in the control window, then Start. Escape exits the show.
| Effect | |
|---|---|
| Drift | Floating panels that pan, slowly zoom, and cross-fade — the Ken Burns baseline. |
| Crossfade | Full-screen dissolve between images — the minimal ambient baseline. |
| Reveal | A directional wipe transition sweeps from one image to the next. |
| Mosaic Wall | A grid of tiles that independently cross-fade to new images over time. |
| Carousel | Panels arranged in a slowly rotating ring, viewed from outside. |
| Beach | Photos drop as polaroids onto sand and settle into a gentle pile, with water and sunlight ambiance. |
| Family Dinner Table | Prints land on a set table and settle into a stack, viewed from directly above. |
Beach and Family Dinner Table are physics-driven (Rapier); the rest are ambient motion.
Effects are a public plugin API — see sdk/README.md to write one, drop it in ~/Library/Application Support/GalleryEngine/Effects/, and it shows up in the picker with no rebuild. See CONTRIBUTING.md to get one merged as a built-in, and GalleryEnginePLAN.md for the full architecture and roadmap.
MIT