v1.0.0
1.0.0 - 2026-06-04
First public release — the visual face of keyd.
Added
- Layout rendering. Parses
/etc/keyd/*.confand draws a base board plus one board
per layer, rendering keyd's tap/hold model distinctly (tap legend on the key, hold
action as a badge). Handleslettermod,overload*, momentary/togglelayer, chord
toggles, and plain remaps. - Physical-layout catalog. A curated set of common layouts (ANSI/ISO 60%, 65%, HHKB,
TKL, Full, Ortho) with an in-app picker, persisted per config. Boards can also be
imported from QMK with--qmk-info <info.json>. - Live layer view. The board follows keyd in real time, switching to the active layer
as you holdnav/sym/etc. - Live keypress glow. Keys light up as you press them using keyd's post-remap
output, so layer outputs and chords glow the correct keys. - Live config reload. Editing a
.confredraws the board within ~1s, no restart. - Multi-keyboard support. Detects connected devices and shows the matching config,
with a manual switcher for ambiguous setups. - Hardened broker daemon (
keydviz-helperd). Streams keyd's live state to the GUI so
it needs no special permissions. Reads keyd's control socket and the virtual evdev
device directly — fully exec-free. Runs as a dedicated non-rootkeyd-vizuser under a
locked-down systemd sandbox (network-isolated,DevicePolicy=closed, dropped caps,
SystemCallFilterminusexecve,MemoryDenyWriteExecute), with logind active-session
authorization. Layers stream by default; keypress reads are opt-in. - Packaging.
packaging/install.sh/uninstall.shfor the broker service, an AUR
PKGBUILD, and an AppImage of the GUI.
Known limitations
- The AppImage bundles the GUI only. Without the broker installed, the GUI falls back
to reading keyd directly, which requires membership in thekeyd/inputgroups. For
the full zero-permission live experience, install the broker (AUR package, or
packaging/install.sh).
Deferred to v1.1
- System-tray resident process and a KDE global-hotkey to summon/dismiss the window.
- Flatpak packaging.