https://github.com/firecat53/keepmenu
Dmenu/Rofi frontend for Keepass databases
https://github.com/firecat53/keepmenu
dmenu keepass python rofi
Last synced: 15 days ago
JSON representation
Dmenu/Rofi frontend for Keepass databases
- Host: GitHub
- URL: https://github.com/firecat53/keepmenu
- Owner: firecat53
- License: gpl-3.0
- Created: 2018-02-07T05:08:19.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2026-03-23T15:41:23.000Z (3 months ago)
- Last Synced: 2026-05-30T15:30:08.682Z (22 days ago)
- Topics: dmenu, keepass, python, rofi
- Language: Python
- Homepage:
- Size: 527 KB
- Stars: 221
- Watchers: 7
- Forks: 31
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Keepmenu



Fully featured [Bemenu][7]/Dmenu/[Wmenu][14]/[Fuzzel][13]/[Rofi][2]/[Tofi][15]/[Wofi][8]/[Yofi][9] frontend for
autotype and managing of Keepass databases.
Inspired in part by [Passhole][3], but more dmenu and less command line focused.
## Installation
`pip install --user keepmenu`
Ensure `~/.local/bin` is in your `$PATH`. Run `keepmenu` and enter your database
path, keyfile path, and password.
For full installation documention see the [installation docs][docs/install.md].
## Full Documentation
[Installation](docs/install.md) - [Configuration](docs/configure.md) - [Usage](docs/usage.md)
## Requirements
1. Python 3.7+
2. [Pykeepass][1] >= 4.0.0 and [pynput][5]
3. Bemenu, Dmenu, Wmenu, Fuzzel, Rofi, Tofi, Wofi, or Yofi
4. xsel or wl-copy
5. (optional) Pinentry
6. (optional) xdotool (for X), [ydotool][10] or [wtype][11](for Wayland), [dotool][12] or dotoolc (X or Wayland).
## Features
- Supports .kdbx databases, not .kdb.
- Auto-type username and/or password on selection. Select to clipboard if
desired (clears clipboard after 30s).
- Background process allows selectable time-out for locking the database.
- Multiple databases can be unlocked and switched on the fly.
- Use a custom [Keepass 2.x style auto-type sequence][6].
- Type, view or edit any field.
- Open the URL in the default web browser.
- Edit notes using terminal or gui editor.
- Add and Delete entries.
- Add, delete, rename and move groups.
- Hide selected groups from the default and 'View/Type Individual entries' views.
- Configure the characters and groups of characters used during password
generation.
- Optional Pinentry support for secure passphrase entry.
- [Keepass field references][4] are supported.
- Display and manage expired passwords.
- Add, edit and type TOTP codes.
- Add, edit, type and delete custom attributes.
- Run once mode to copy or print password to stdout
## License
- GPLv3
## Usage
`keepmenu [-h] [-a AUTOTYPE] [-c CONF_FILE] [-C] [-d DATABASE] [-k KEY_FILE] [-t] [-s SEARCH]`
- Run `keepmenu` or bind to keystroke combination.
- Enter database path on first run.
- Start typing to match entries.
- [Configure](docs/configure.md) config.ini as desired.
- More detailed [usage information](docs/usage.md).
## Tests
To run tests in a venv: `make test`
## Development
- To install keepmenu in a venv: `make`
- Build man page from Markdown source: `make man`
- Using `hatch`:
- `hatch shell`: provides venv with editable installation.
- `hatch build` && `hatch publish`: build and publish to Pypi.
- Using `nix`:
- `nix develop`: Provides development shell/venv with all dependencies.
- `make test` and `hatch build/publish` work as usual.
- GitHub Action will upload to TestPyPi on each push to `main`. To create a
GitHub and PyPi release, create a new tag (formatting below) and push tags.
* Release note 1
* Release note 2
* ...
[1]: https://github.com/pschmitt/pykeepass "Pykeepass"
[2]: https://davedavenport.github.io/rofi/ "Rofi"
[3]: https://github.com/purduelug/passhole "Passhole"
[4]: https://keepass.info/help/base/fieldrefs.html "Keepass field references"
[5]: https://github.com/moses-palmer/pynput "pynput"
[6]: https://keepass.info/help/base/autotype.html#autoseq "Keepass 2.x codes"
[7]: https://github.com/Cloudef/bemenu "Bemenu"
[8]: https://hg.sr.ht/~scoopta/wofi "Wofi"
[9]: https://github.com/l4l/yofi "Yofi"
[10]: https://github.com/ReimuNotMoe/ydotool/ "Ydotool"
[11]: https://github.com/atx/wtype "Wtype"
[12]: https://git.sr.ht/~geb/dotool "Dotool"
[13]: https://codeberg.org/dnkl/fuzzel "Fuzzel"
[14]: https://git.sr.ht/~adnano/wmenu "wmenu"
[15]: https://github.com/philj56/tofi "Tofi"