Since KMonad does not have a Fedora package, I was reluctant to try it out. However, it is much simpler than I thought, although it does have a few quirks, so I decided to write a short guide.

Installation

Binary

The easiest1 way is to download the binary from the releases page, mark it as executable and put it into ~/.local/bin.

From source

I used stack for this, but you might prefer to use Docker instead.

git clone git@github.com:kmonad/kmonad.git
cd kmonad
toolbox create kmonad
toolbox enter kmonad
sudo dnf install stack
stack install

This will install KMonad into ~/.local/bin. It does not need to be installed system-wide.

Permissions

To run KMonad, you will also need to configure some necessary permissions.

First, add the udev rule for UInput, e.g. in /etc/udev/rules.d/90-kmonad.rules:

KERNEL=="uinput", MODE="0660", GROUP="uinput", OPTIONS+="static_node=uinput"

A Silverblue-specific workaround is needed to be able to add the user to the required groups.

grep -E '^uinput:' /usr/lib/group >> /etc/group
grep -E '^input:' /usr/lib/group >> /etc/group
systemctl reboot

Then, add the user to the uinput and input groups:

sudo usermod -aG uinput $USER
sudo usermod -aG input $USER

Log out and log back in, and you should be able to run kmonad.

Autostarting

There is a systemd service available in the repo.

If you want an easier way to control it, I wrote an extension for integrating it into GNOME Shell.

Get it on GNOME Extensions

  1. When first writing this guide, I somehow completely missed this option. Sorry for that!