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:
@@ -150,6 +150,14 @@ in
|
||||
touchpad.natural_scroll = lib.mkDefault true;
|
||||
};
|
||||
|
||||
# Per-device keyboard layouts (nomarchy.keyboard.devices): each
|
||||
# overrides the session kb_layout for one named keyboard — e.g. an
|
||||
# external board that's physically a different layout than the laptop's
|
||||
# built-in one. Hyprland applies them whenever the device connects.
|
||||
device = lib.mapAttrsToList
|
||||
(name: d: { inherit name; kb_layout = d.layout; kb_variant = d.variant; })
|
||||
config.nomarchy.keyboard.devices;
|
||||
|
||||
# dwindle:pseudotile was removed in Hyprland 0.55 (the `pseudo`
|
||||
# dispatcher still exists); setting it aborts config parsing.
|
||||
dwindle.preserve_split = lib.mkDefault true;
|
||||
|
||||
Reference in New Issue
Block a user