Skip to content

v2.7.0 — RGB layer module: moods, master brightness, persistence

Choose a tag to compare

@rdlu rdlu released this 28 Jun 18:20
· 76 commits to main since this release

The macro-based per-layer underglow from v2.6.0 is replaced by an event-driven firmware module (zmk-rgb-layer/). Lower latency, switchable resting "moods", a brightness that every colour respects, and settings that survive a reboot.

Highlights

  • Per-layer colour — the underglow shows the highest active layer (NAV indigo, CODE magenta, MEDIA amber, SYS red, gaming green/blue). A diff-cache emits a single &rgb_ug call per change, so it's noticeably snappier than the old macros.
  • Three base moods — on the SYS layer, Z = dark (off), X = dim teal (default), C = cycle effects (breathe → spectrum → swirl). Live preview while you hold SYS.
  • Master brightness (day/night) — SYS Q/A brighten/dim everything; the level is applied to every layer colour.
  • Persists across reboots — your mood + brightness are saved and restored on boot, so a power-cycle or soft-off comes back the way you left it instead of resetting to the default teal.
  • Both halves stay in sync — if one half powers on later than the other, the central re-asserts the correct colour once they reconnect.

Under the hood

  • Central-only Zephyr module; the peripheral strip updates via the forwarded global &rgb_ug behaviour.
  • Now built in CI (the in-repo module is wired into build.yaml via ZMK_EXTRA_MODULES).
  • Keymap cleanup: CODE is a plain &mo 2 (no hold-tap), and DEL moved to the MEDIA layer.

Not included (tracked separately)

  • A reactive "typed-column lights up" effect — the underglow is per-column-addressable, but it needs a custom strip-driving engine. Follow-up issue filed.

Flashing

mise run flash-release        # double-tap reset: left, then right

If a previous ZMK Studio edit is stuck, run mise run flash-release-reset first. See the README for details.

Closes #33.