A universal keybindings manager daemon.
clefd is a universal keybindings daemon that reacts to input events by executing commands. It reads in a configuration file located at $XDG_CONFIG_HOME/clefd/clefdrc by default. Here the user can define a series of bindings that correspond to different commands.
# Launch a browser. Super_L + w : firefox # Take a screenshot. Print : flameshot gui # Launch tmux session. Super_L + Shift_L + Return : tmux
clefd allows you to chain multiple modifier keys together. It supports the following XKB modifiers:
Shift_L /* Left shift */ Shift_R /* Right shift */ Control_L /* Left control */ Control_R /* Right control */ Caps_Lock /* Caps lock */ Shift_Lock /* Shift lock */ Meta_L /* Left meta */ Meta_R /* Right meta */ Alt_L /* Left alt */ Alt_R /* Right alt */ Super_L /* Left super */ Super_R /* Right super */ Hyper_L /* Left hyper */ Hyper_R /* Right hyper */
For a comprehensive list of XKB key names, please refer to the libxkbcommon docs. Note that you will need to omit the XKB_KEY_ prefix when adding these to your user configuration, e.g. XKB_KEY_Escape becomes Escape.
git clone https://github.com/nshan651/clefd.git
cd clefd
sudo make installIf you are using systemd, start the service with systemctl --user enable --now clefd.service
Additionally, you will require libinput, libudev, and libxkbcommon as runtime dependencies.
# Debian
sudo apt install libinput10 libudev1 libxkbcommon0
# Arch
sudo pacman -S libinput systemd-libs libxkbcommonAlternatively, you can use the guix.scm manifest file to create an interactive shell.
guix shell -m guix.scm