feat(keyboard): per-device layout for external keyboards
Add nomarchy.keyboard.devices ({ "<hyprctl-device-name>" = { layout; variant; }; })
generating Hyprland `device` blocks that override the session
nomarchy.keyboard.layout for a named keyboard -- e.g. an external board
that's physically a different layout than the laptop's built-in one.
Hyprland applies it whenever that device connects, so the external keyboard
"remembers" its layout the declarative way. A Waybar hyprland/language
indicator shows the active layout, placed only when more than one layout is
in play (a comma in the session layout, or any per-device override) so
single-layout bars stay clean.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -283,11 +283,21 @@ how to override it. Items marked ✓ are shipped.
|
||||
- **Night light / blue-light filter:** schedulable colour-temperature shift
|
||||
via `hyprsunset` (Hyprland-native; wlsunset/gammastep are alternatives) —
|
||||
sunset/sunrise or a fixed schedule, with a menu + Waybar toggle.
|
||||
- **Runtime keyboard-layout switching:** the session layout is a single
|
||||
`nomarchy.keyboard.layout` today. Support a list of layouts with a toggle
|
||||
bind (`hyprctl switchxkblayout` / xkb `grp:` options) and a Waybar
|
||||
indicator for the active layout. Natural follow-on to the LUKS-keymap work
|
||||
— keep the system (console/initrd) and session layouts in sync.
|
||||
- **Keyboard layouts (per-device + switching):**
|
||||
- ✓ **Per-device declarative layout:** `nomarchy.keyboard.devices`
|
||||
(`{ "<hyprctl-device-name>" = { layout; variant; }; }`) generates Hyprland
|
||||
`device` blocks that override the session `nomarchy.keyboard.layout` for a
|
||||
named keyboard — e.g. an external board that's physically a different
|
||||
layout than the laptop's. Hyprland applies it whenever that device
|
||||
connects (the "external keyboard remembers its layout" case, done the
|
||||
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, or any per-device override) so single-layout bars stay clean.
|
||||
- Remaining: a multi-layout cycle bind (`hyprctl switchxkblayout` / xkb
|
||||
`grp:` options) for switching layouts on one keyboard; add the
|
||||
`hyprland/language` module to the summer whole-swap themes for parity
|
||||
(the gating doesn't translate to their static JSON). Keep the system
|
||||
(console/initrd) and session layouts in sync (the LUKS-keymap work).
|
||||
- ✓ **Do-Not-Disturb:** swaync DND toggle wired into the menu
|
||||
(`nomarchy-menu dnd`, in the picker, SUPER+CTRL+D) and a Waybar bell
|
||||
indicator (`custom/notification` via `swaync-client -swb`: shows the
|
||||
|
||||
Reference in New Issue
Block a user