You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
System tray / minimize to tray. keyd-viz now lives in the system tray
(StatusNotifierItem over D-Bus, so it works on KDE and any desktop with a
StatusNotifier host — X11 or Wayland). When a tray is present, closing the window
hides it to the tray instead of quitting — the app keeps running in the background.
Left-click the icon (or its Show / hide menu item) to summon or dismiss the window; Quit fully exits. The tooltip shows the active keyd layer. Where no tray host exists
(e.g. vanilla GNOME without an AppIndicator extension) the icon is absent and closing
the window quits as before. Window show/hide is reliable everywhere; raise-to-front on
Wayland is best-effort (it needs a compositor activation token).
Pin (always-on-top). A pin toggle in the view controls keeps the window above other
windows; compact mode pins automatically. Honored on X11/XWayland. On native Wayland a
client can't keep itself on top (no such protocol — it's the compositor's job), so the
in-app pin is a no-op there; use the compositor's keep-above instead (KDE: right-click
titlebar → More Actions → Keep Above Window, or a KWin rule for class keydviz).
Changed
The pin and compact controls are now icon buttons, each with two states (pin /
pin-off; compact / expand), tinting green when active.
Fixed
Modifier/composite layer headers now parse.[layer:mods] (e.g. [nav:C]) and
composite [a+b] sections were rejected by the config parser, so their bindings were
silently attributed to the previous section (or dropped). [layer:mods] now merges into
its base layer and [a+b] is its own layer, matching keyd's grammar.
# inside a value is no longer treated as a comment. keyd only treats # as a comment
at the start of a line; the parser was stripping from the first # anywhere, truncating any
binding whose value contained one.
[global] and [aliases] sections no longer render as bogus layers. keyd special-cases
these (daemon options / key aliases); the parser was treating every non-[ids] section as a
layer, so a common [global] block (e.g. overload_tap_timeout) drew a junk board.