Displays keypresses on screen on supported Wayland compositors (requires
wlr_layer_shell_v1 support).
2026-07-24_13-07-27.mp4
Forked from https://git.sr.ht/~sircmpwn/wshowkeys as Drew has moved onto other thigns.
yay -S wshowkeys-mao-git
Add as a flake input:
{
inputs = {
# ...
wshowkeys = {
url = "github:DreamMaoMao/wshowkeys";
inputs.nixpkgs.follows = "nixpkgs"; # optional
};
}
}Then install using nixpkgs harness in system config:
programs.wshowkeys = {
enable = true;
package = inputs.wshowkeys.packages.${pkgs.stdenv.hostPlatform.system}.default;
};Without the harness, you will get a setuid error and the app won't run.
Dependencies:
- cairo
- libinput
- pango
- udev
- wayland
- xkbcommon
$ meson build
$ ninja -C build
# ninja -C build install
# sudo chmod a+s /usr/bin/wshowkeys
wshowkeys must be configured as setuid during installation. It requires root permissions to read input events. These permissions are dropped after startup.
wshowkeys [-b|-f|-s #RRGGBB[AA]] [-F font] [-t timeout]
[-a top|left|right|bottom] [-m margin] [-o output]
- -b #RRGGBB[AA]: set background color
- -f #RRGGBB[AA]: set foreground color
- -s #RRGGBB[AA]: set color for special keys
- -F font: set font (Pango format, e.g. 'monospace 24')
- -t timeout: set timeout before clearing old keystrokes(ms)
- -a top|left|right|bottom: anchor the keystrokes to an edge. May be specified twice.
- -m margin: set a margin (in pixels) from the nearest edge
- -l lenmax: set the key layer max length(px)
- -o output: request wshowkeys is shown on the specified output (unimplemented)
- -M: show modifier keys
- -U: show mouse buttons
- -S: show scroll direction
example:
wshowkeys -a bottom -F 'Sans Bold 30' -s '#B5B520ff' -f '#ecd29cff' -b '#201B1488' -l 600 -t 500 -M -U -S