Hi everyone,
Sharing a small project in case it’s useful to others running a picture frame off Immich.
My first frame was an old Fire HD tablet with Immich-Kiosk, until the battery swelled. The second was a Pi Zero 2 W running Immich-Kiosk in a browser, which wore out the SD card after about a year.
So in my newest iteration I dropped the browser. A small Rust program (Vibecoded) pulls favourites from the Immich API and writes them straight to the screen via KMS/DRM.
The Pi runs Alpine diskless, so the SD card is never written after boot.
What it does:
- Merges favourites from multiple accounts (my wife’s and mine) into one shuffled stream
- Shows portrait photos two at a time, side by side
- Uses Immich’s face data to keep people in the crop
- Corner overlays: clock, outside temperature, and per-photo date, location, people with their age at the time, and album
- Cross-fade, screen off at night via DPMS
- 3 MB static binary, ~10 MB RAM. The whole system uses less memory than one Chromium tab did before.
Full write-up (Alpine diskless setup, cross-compiling with Nix, Link to source): A browserless digital picture-frame with Rust, KMS/DRM and Alpine Linux
Thanks to the Immich team, the API made this really painless.
Cheers,
Tom