- Python 3.7+.
- Pykeepass >= 4.0.0 and pynput. Install via pip or your distribution's package manager, if available.
- Bemenu, Dmenu, Wmenu, Fuzzel, Rofi, Tofi, Wofi, or Yofi.
- (optional) Pinentry. Make sure to set which flavor of pinentry command to use in the config file.
- (optional) xdotool (for X) or ydotool (>=1.0.0, for Wayland), wtype (for Wayland), dotool (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.
$ sudo pacman -S python-pip dmenu
$ sudo dnf install python3-devel dmenu
Ensure Universe repository is enabled.
$ sudo apt install python3-pip suckless-tools
$ pip install --user keepmenu
Add ~/.local/bin to $PATH
$ python -m venv venv
$ source venv/bin/activate
$ pip install keepmenu
Link to the executable venv/bin/keemenu
when assigning a keyboard shortcut.
$ git clone https://github.com/firecat53/keepmenu
$ cd keepmenu
$ make
$ make run OR ./venv/bin/keepmenu
$ 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
- 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
-
X | Wayland(wlroots) & Xwayland | Pure wlroots Wayland | Gnome/Wayland(2) | Unicode Support | |
---|---|---|---|---|---|
Launchers | |||||
Dmenu | Yes | No | No | No | |
Fuzzel | No | Yes | Yes | No | |
Rofi | Yes | Yes | No | No | |
Bemenu | Yes | Yes | Yes | No | |
Tofi | No | Yes | Yes | No | |
Wofi | No | Yes | Yes | Yes | |
Yofi | No | Yes | Yes | Yes | |
Typing Tools | |||||
Pynput | Yes | No | No | No | No |
Xdotool | Yes | No | No | No | Yes |
Ydotool (1) | Yes | Yes | Yes | Yes | No (3) |
Wtype | No | Yes | Yes | No | Yes |
dotool | Yes | Yes | Yes | Yes | Yes |
(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.