a tiny ambilight daemon for linux + wayland
grabs the screen, averages colors along the edges, pushes them to a skydimo led strip over usb serial. no hyperion, no qt, no gui - just a small rust binary.
-
a compositor that supports the wlr-screencopy protocol (hyprland, sway, river, niri, etc). gnome/kde won't work.
-
grim installed (pacman -S grim / apt install grim)
-
your user in the dialout (or uucp) group for serial access:
sudo usermod -aG dialout $USER
cargo build --release binary lands in target/release/opendimo.
run:
skydimo-ambilight
default walk order is clockwise from the top-left corner. if the strip lights up wrong, don't touch the code - play with --reverse and --offset until it lines up.
- nothing happens - check the port (ls -l /dev/ttyUSB*) and that you're in the right group.
- colors flipped/wrong order - calibrate with --reverse/--offset, not a protocol bug.
- high cpu / stutter - lower fps. each frame is a real screenshot. 8-12 is plenty.
captures via grim (spawned fresh each frame - deliberate, avoids memory leaks from holding a persistent screencopy connection open), slices the image into perimeter zones, averages each zone, smooths frame-to-frame, ships it out over serial using skydimo's protocol.
protocol reverse-engineered from the skydimo team's openrgb fork: https://gitlab.com/skydimo-team/skydimo-open-rgb
