wk is a popup menu for your custom keyboard shortcuts. Inspired by emacs-which-key, dmenu, and bemenu.
demo-basic.webm
- X11 and Wayland - take your workflow wherever you go
- Custom scripting language - define key chords with wks, a purpose-built language designed to capture your simple and complex workflows
- Themeable - customize colors, fonts, borders, and padding
- Flexible input - compile key chords into the binary, load from a file, or pipe via stdin for dynamic scripting
Full documentation is available at 3l0c-wk.readthedocs.io.
Prefer to watch a demonstration rather than read the docs? Check out the video walkthrough series covering wk basics and beyond here. You might want to watch at 1.5-2 times speed :).
Build dependencies include:
- C compiler
- make
- pkg-config
- wayland-scanner (if building with Wayland support)
| Backend | Dependencies |
|---|---|
| Common | cairo, pango, pangocairo |
| X11 | x11, xinerama |
| Wayland | wayland-client, wayland-protocols, xkbcommon |
Arch
sudo pacman -S base-devel cairo pango libx11 libxinerama wayland wayland-protocols libxkbcommonFedora
sudo dnf install gcc make pkg-config cairo-devel pango-devel libX11-devel libXinerama-devel wayland-devel wayland-protocols-devel libxkbcommon-develUbuntu / Debian
sudo apt install build-essential pkg-config libcairo2-dev libpango1.0-dev libx11-dev libxinerama-dev libwayland-dev wayland-protocols libxkbcommon-devopenSUSE
sudo zypper install gcc make pkg-config cairo-devel pango-devel libX11-devel libXinerama-devel wayland-devel wayland-protocols-devel libxkbcommon-develVoid
sudo xbps-install -S base-devel cairo-devel pango-devel libX11-devel libXinerama-devel wayland-devel wayland-protocols libxkbcommon-develgit clone "https://github.com//3L0C/wk.git"
cd wk
make && sudo make installSee the installation guide for backend-specific builds, building with a custom wks config, and Nix instructions.
Contributions are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request.
This project would not be where it is without dmenu and bemenu. The Wayland runtime has been lightly adapted from bemenu. All credit goes to the people who work on that project for the code there.