Keepmenu Installation

February 5, 2026 ยท View on GitHub

Configuration - Usage

Requirements

  1. Python 3.7+.
  2. Pykeepass >= 4.0.0 and pynput. Install via pip or your distribution's package manager, if available.
  3. Bemenu, Dmenu, Wmenu, Fuzzel, Rofi, Tofi, Wofi, or Yofi.
  4. (optional) Pinentry. Make sure to set which flavor of pinentry command to use in the config file.
  5. (optional) xdotool (for X) or ydotool (>=1.0.0, for Wayland), wtype (for Wayland), dotool/dotoolc (X or Wayland). If you have a lot of Unicode characters or use a non-U.S. English keyboard layout, you might have to experiment with these to determine which works properly for your use case.

Archlinux

$ sudo pacman -S python-pip dmenu

Fedora 38

$ sudo dnf install python3-devel dmenu

Ubuntu 22.10

Ensure Universe repository is enabled.

$ sudo apt install python3-pip suckless-tools

$ pip install --user keepmenu

Add ~/.local/bin to $PATH

Install (virtualenv)

$ python -m venv venv
$ source venv/bin/activate
$ pip install keepmenu

Link to the executable venv/bin/keemenu when assigning a keyboard shortcut.

Install (virtualenv) from git

$ git clone https://github.com/firecat53/keepmenu
$ cd keepmenu
$ make
$ make run OR ./venv/bin/keepmenu

Install (git)

$ git clone https://github.com/firecat53/keepmenu
$ cd keepmenu
$ git checkout <branch> (if desired)
$ pip install --user . OR
$ pip install --user -e . (for editable install)

Available in Archlinux AUR and in Nix packages

Wayland Notes

  • Dmenu and Rofi will work under XWayland on wlroots based compositors such as Sway.
  • The only combination I've found that works on Gnome/Wayland is Wofi with ydotool.
  • To enable ydotool to work without sudo
    • Pick a group that one or more users belong to (e.g. users) and:

        $ echo "KERNEL==\"uinput\", GROUP=\"users\", MODE=\"0660\", \
        OPTIONS+=\"static_node=uinput\"" | sudo tee \
        /etc/udev/rules.d/80-uinput.rules > /dev/null
        # udevadm control --reload-rules && udevadm trigger
      
    • Create a systemd user service for ydotoold:

        ~/.config/systemd/user/ydotoold.service
        [Unit]
        Description=ydotoold Service
      
        [Service]
        ExecStart=/usr/bin/ydotoold
      
        [Install]
        WantedBy=default.target
      
    • Enable and start ydotoold.service:

        $ systemctl --user daemon-reload 
        $ systemctl --user enable --now ydotoold.service
      

Wayland compatibility

XWayland(wlroots) & XwaylandPure wlroots WaylandGnome/Wayland(2)Unicode Support
Launchers
DmenuYesNoNoNo
FuzzelNoYesYesNo
RofiYesYesNoNo
BemenuYesYesYesNo
TofiNoYesYesNo
WofiNoYesYesYes
YofiNoYesYesYes
Typing Tools
PynputYesNoNoNoNo
XdotoolYesNoNoNoYes
Ydotool (1)YesYesYesYesNo (3)
WtypeNoYesYesNoYes
dotoolYesYesYesYesYes

(1) Ydotool doesn't correctly type some special characters.

(2) Gnome modal dialogs for SSH/GPG key entries are unusable with any password manager that performs autotyping. You have to copy the password to the clipboard before you need it and paste into the field because the dialog does not allow you to navigate away once it's open.

(3) Supposedly you can change the keyboard language of the ydotool virtual device in the Sway config to enable support for characters on that keyboard but I have not tested that.