Calc is one key and not a modifier, so nothing is held while whisrs
injects text — the held-AltGr problems (dropped long-hold releases,
first phrase swallowed by the TUI) don't apply. Pause worked too but
needs Fn+F12, two keys for a hold button. Cheatsheet lists Calc.
AltGr is itself a modifier, and holding it broke dictation twice:
Hyprland drops long-hold release events for modifier keys, so the
daemon kept recording after the key went up, and the first phrase
injected while the modifier was held never reached the target TUI.
Bare Pause (Fn+F12 on the TypeMatrix) holds no modifier, so neither
applies. The cheatsheet drops the AltGr mention again.
The desktop's TypeMatrix has no Copilot key, so bind the guarded
hold-start/stop scripts to bare right Alt: Alt_R is the keysym that
keycode 108 produces under us,dvorak (the Lua bind helper rejects
code:NNN). The release bind carries the ALT modifier because Alt_R is
itself Mod1 and still active while its release is processed — a
modmask-0 release bind never matches, which left the daemon stuck
recording. The se group remaps right Alt to ISO_Level3_Shift and is
left alone on purpose so AltGr combos keep working there.
The hosts files were written capitalized (Rutherford.lua, Chester.lua)
but the require uses the hostname exactly as `hostname` prints it —
lowercase — so on a case-sensitive filesystem the lookup missed and
pcall silently swallowed it. The per-host monitor overrides therefore
never loaded on either machine. Normalize the hostname to lowercase
and name the files in lowercase so any casing matches.
require() only needs the module's side effects; the returned value is
ignored by hyprland.lua. Chester.lua and example.lua now match
Rutherford.lua in ending after their config statements.
hyprland.lua now just uses its defaults when no hosts/<hostname>.lua
matches, instead of requiring hosts/example.lua. example.lua is kept only
as a documented template for contributors.
Hyprland loads hyprland.lua (not hyprland.conf) when present, so the
hyprlang configs are dead weight. Delete the Hyprland .conf files and
their gitignored host .conf counterparts, leaving only hypridle.conf and
hyprlock.conf (used by separate tools that still use hyprlang).