| WBINDKEYS(1) | User Commands | WBINDKEYS(1) |
wbindkeys - bind keys, mouse buttons and scroll events to commands on Wayland
wbindkeys [-d]
wbindkeys permissions --check | --set
wbindkeys -h | -V
wbindkeys runs shell commands when key combinations, mouse buttons or scroll events are pressed. It is a Wayland replacement for xbindkeys(1), configured with a Lua script.
Input is read directly from the input devices in /dev/input through libinput rather than through the compositor, so it works the same under any Wayland compositor. Because of this, the user running wbindkeys needs read access to those devices; see PERMISSIONS below.
Run without a subcommand, wbindkeys loads its configuration and keeps running, listening for input.
The configuration is a Lua script. Bindings are created with the bind function, which maps a key combination to a shell command:
bind("ALT+T", "alacritty")
bind("MOD+Mouse4", "wofi --show drun")
bind("ALT+ScrollUp", "pactl set-sink-volume @DEFAULT_SINK@ +5%")
Commands are run with sh(1) and their output is discarded.
Key names are case-insensitive and joined with +. The available names are:
When a binding has several modifiers they must be pressed in the order they are written. Unknown key names are ignored; run with --debug to see them.
wbindkeys runs as a normal user and needs read access to /dev/input. Running sudo wbindkeys permissions --set once installs a udev rule that tags input devices with uaccess, so systemd-logind(8) grants access to the user in the active local session. Check access with wbindkeys permissions --check.
If devices are still not readable, re-run permissions --set, or log out and back in. Access is only granted to the session at the physical seat, so it does not work over SSH.
systemctl --user stop wbindkeys.service
wbindkeys --debug
sudo ~/.local/bin/wbindkeys permissions --set
wbindkeys permissions --check
xbindkeys(1), libinput(4), udev(7), systemd-logind(8)
Divan Visagie <me@divanv.com>
Report bugs at https://github.com/divanvisagie/wbindkeys/issues