Browserless picture frame for Immich favourites (Rust + KMS/DRM on a Pi Zero 2 W)

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

1 Like