feat(keyboard): multi-layout cycle bind + summer-bar language parity
All checks were successful
Check / eval (push) Successful in 2m59s
All checks were successful
Check / eval (push) Successful in 2m59s
SUPER+SHIFT+K → hyprctl switchxkblayout current next, rendered only
when the session layout has a comma — the same gate as the Waybar
language indicator. Bind data is a separate multiLayoutBinds list in
keybinds.nix (still one source); hyprland.nix and the rofi cheatsheet
gate on the identical condition, so bind and cheatsheet cannot drift.
`current` targets the focused keyboard, so per-device-overridden
boards (single layout) are a no-op.
Parity: hyprland/language (with the keyboard glyph) added to both
summer waybar.jsonc whole-swaps + #language in their CSS. Static JSON
cannot eval-gate, so on summer themes the module shows even with one
layout — parity-over-minimalism, deliberate. Found en route:
summer-night has an idle_inhibitor the generated bar lacks (reverse
gap) — folded into backlog item 13.
Also — agent/BACKLOG.md gains items 21-24 from Bernardo's Latitude
5410 hardware QA (waybar crash on theme switch + no respawn; nameless
network-menu rows; a no-update sys-rebuild; Back-everywhere audit),
queued ahead of everything; HARDWARE-QUEUE's snapshot re-test now
carries the "update to >= a47aa3a + relogin" precondition, since
findings 5/6 match the pre-polkit-agent behavior exactly.
Verified: V0 (flake check, both summer JSONs parse) + V1 both
directions (default single-layout build renders no bind; us,de via
extendModules renders bind AND cheatsheet row). V3 cycle check queued.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -721,11 +721,23 @@ how to override it. Items marked ✓ are shipped.
|
||||
which the watcher sees it as declared and steps back. Eval-verified
|
||||
(graduation + precedence) and the writer round-trips; **still needs the
|
||||
on-hardware hotplug re-verify** (the picker path isn't testable in CI).
|
||||
- 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).
|
||||
- ✓ **Multi-layout cycle bind + summer parity (2026-07-04):**
|
||||
`SUPER+SHIFT+K` → `hyprctl switchxkblayout current next`, rendered
|
||||
only when the session layout has a comma (same gate as the Waybar
|
||||
language indicator) — data lives in `keybinds.nix` as a separate
|
||||
`multiLayoutBinds` list, so hyprland.nix and the cheatsheet consume
|
||||
one source and gate identically (verified both ways: absent on a
|
||||
single layout; bind + cheatsheet row render under `us,de` via
|
||||
extendModules). `current` targets the focused keyboard, so a
|
||||
per-device-overridden board (one layout) is a no-op, never a leak.
|
||||
`hyprland/language` (` {short}`) added to both summer
|
||||
`waybar.jsonc` whole-swaps + `#language` in their CSS — static JSON
|
||||
can't eval-gate, so on summer themes the module shows even with one
|
||||
layout (a deliberate parity-over-minimalism call; it's small).
|
||||
Noticed en route: summer-night carries an `idle_inhibitor` the
|
||||
generated bar lacks — folded into the idle-inhibit backlog item.
|
||||
- Remaining: 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