feat(keyboard): interactive new-keyboard layout prompt + persist
The runtime-remember complement to nomarchy.keyboard.devices. Set nomarchy.keyboard.layouts (candidate layouts) and a nomarchy-keyboard-watch daemon runs (exec-once): it polls hyprctl devices, and when a keyboard connects after login that isn't declared and hasn't been chosen before, it pops a rofi layout picker, applies the choice via hyprctl switchxkblayout (an index into the candidate set carried by input.kb_layout), and remembers it per-device in ~/.local/state -- re-applied silently on later reconnects. The boot-time set (incl. the built-in keyboard) is never prompted. Pure bash + jq/hyprctl/rofi (all in the session PATH); state lives outside the flake (a stateful runtime piece by design). Eval + bash-syntax verified; the hotplug behaviour needs an on-hardware test. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -189,6 +189,7 @@ examples: **[docs/OVERRIDES.md](docs/OVERRIDES.md)**.
|
||||
| `nomarchy.keyboard.layout` | `"us"` | XKB layout for the Hyprland session (installer writes the matching `services.xserver.xkb` in system.nix; the console + LUKS prompt follow via the distro default) |
|
||||
| `nomarchy.keyboard.variant` | `""` | XKB variant for the session |
|
||||
| `nomarchy.keyboard.devices` | `{}` | Per-device layout overrides (Hyprland `device` blocks keyed by `hyprctl devices` name) — e.g. an external keyboard with its own layout/variant |
|
||||
| `nomarchy.keyboard.layouts` | `[]` | Extra candidate layouts; when set, a watcher prompts (rofi) for a layout on a newly-connected keyboard and remembers it per-device |
|
||||
| `nomarchy.hyprland.enable` | `true` | Nomarchy's Hyprland config |
|
||||
| `nomarchy.waybar.enable` | `true` | Nomarchy's Waybar |
|
||||
| `nomarchy.rofi.enable` | `true` | Themed rofi launcher + `nomarchy-menu` dispatcher |
|
||||
|
||||
Reference in New Issue
Block a user