docs(roadmap): interactive new-keyboard layout prompt + persist

A runtime-remember complement to the declarative nomarchy.keyboard.devices:
a daemon watches Hyprland's socket, pops a rofi layout picker when an unknown
keyboard connects, applies it, and persists per-device so it re-applies on
reconnect — optionally writing the choice back into nomarchy.keyboard.devices.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Bernardo Magri
2026-06-15 17:32:05 +01:00
parent aef45b3c8d
commit 69f959365e

View File

@@ -293,6 +293,17 @@ how to override it. Items marked ✓ are shipped.
declarative way). A Waybar `hyprland/language` indicator shows the active declarative way). A Waybar `hyprland/language` indicator shows the active
layout, gated on more than one layout being in play (comma in the session layout, gated on more than one layout being in play (comma in the session
layout, or any per-device override) so single-layout bars stay clean. layout, or any per-device override) so single-layout bars stay clean.
- **Interactive new-keyboard prompt (runtime + persist):** a small daemon
listening to Hyprland's socket for keyboard hotplug — when an *unknown*
keyboard connects, pop a rofi layout picker, apply the choice
(`hyprctl switchxkblayout` among a configured candidate set, or reload the
device config), and persist it per-device to a state file so it re-applies
automatically on every later reconnect. The runtime-remember complement to
the declarative `nomarchy.keyboard.devices` above (set it once, on the fly,
no config editing). Nice bridge: offer to also write the choice into
`nomarchy.keyboard.devices` so it graduates into the reproducible config.
Note: a stateful runtime piece (like the wallpaper) — it sits outside the
pure-declarative model by design.
- Remaining: a multi-layout cycle bind (`hyprctl switchxkblayout` / xkb - Remaining: a multi-layout cycle bind (`hyprctl switchxkblayout` / xkb
`grp:` options) for switching layouts on one keyboard; add the `grp:` options) for switching layouts on one keyboard; add the
`hyprland/language` module to the summer whole-swap themes for parity `hyprland/language` module to the summer whole-swap themes for parity