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 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.
The SUPER+SHIFT+F23 combo exists on the laptop's Copilot key only. On
other keyboards (TypeMatrix 2030 with Dvorak, laptops without a Copilot
key) there is no F23, so bind the same state-guarded scripts to
SUPER+SHIFT+Pause as well: Pause is Fn+F12 on the TypeMatrix and a
spare key elsewhere. Binds stay modifier-gated so bare Pause keeps its
existing use.
The Copilot key only exists on one laptop; the binding is the
SUPER+SHIFT+F23 combo, which any keyboard can send. Name the combo and
mention the Copilot key only as the thing that emits it.
Bind the Copilot key (SUPER+SHIFT+F23) to whisrs on press and release,
so holding it records and letting go transcribes. Injection uses wtype,
which works natively on Hyprland and reaches any focused window,
including TUIs running in the dockerized agent containers.
Decoding runs on the iGPU through the Vulkan feature of a locally
rebuilt whisrs-git: the stock AUR build is CPU-only and compiled with
generic -march, which made dictation take around five seconds. Requires
whisrs-git (AUR), wtype and pipewire-alsa; documented in the README
along with the config and model locations.