Dmenu/Rofi frontend for Keepass databases
  • Python 95.4%
  • Roff 2.9%
  • Nix 1.4%
  • Makefile 0.3%
Find a file
2026-06-05 16:56:44 -07:00
.github/workflows Fix failing testpypi uploads 2026-02-06 08:27:43 -08:00
docs Revert to using a 30-second timeout before the clipboard is cleared. This fixes some issues and inconsistencies with copying data on various platforms. Closes #168 2026-06-05 16:56:44 -07:00
keepmenu Revert to using a 30-second timeout before the clipboard is cleared. This fixes some issues and inconsistencies with copying data on various platforms. Closes #168 2026-06-05 16:56:44 -07:00
tests Add --show option to output passwords on the CLI. Closes #150. 2026-02-05 14:04:21 -08:00
.gitignore Update Nix flake setup and workflow 2024-10-14 18:15:44 -07:00
config.ini.example Support {DELAY=x} for autotype typing speed and a configurable global typing speed setting key_delay. Closes #63 and #184 2026-03-22 15:35:59 -07:00
flake.lock Update flake.lock 2026-01-12 12:37:16 -08:00
flake.nix Another flake edit 2024-10-14 20:48:01 -07:00
keepmenu.1 Add --show option to output passwords on the CLI. Closes #150. 2026-02-05 14:04:21 -08:00
keepmenu.1.md Add --show option to output passwords on the CLI. Closes #150. 2026-02-05 14:04:21 -08:00
LICENSE Change license to GPLv3 (which pykeepass uses). Fix #25. Version 0.5.7. 2019-02-03 12:35:17 -08:00
Makefile Update Nix flake setup and workflow 2024-10-14 18:15:44 -07:00
pyproject.toml Fix Python 3.14 compatibility. Closes #180 2026-01-11 15:54:36 -08:00
README.md Revert to using a 30-second timeout before the clipboard is cleared. This fixes some issues and inconsistencies with copying data on various platforms. Closes #168 2026-06-05 16:56:44 -07:00
requirements.txt Support for pykeepass >= 4.0.0. Loses support for lower pykeepass versions. 2021-03-07 13:52:57 -08:00

Keepmenu

PyPI - Python Version PyPI GitHub contributors

Fully featured Bemenu/Dmenu/Wmenu/Fuzzel/Rofi/Tofi/Wofi/Yofi frontend for autotype and managing of Keepass databases.

Inspired in part by Passhole, 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 - Configuration - Usage

Requirements

  1. Python 3.7+
  2. Pykeepass >= 4.0.0 and pynput
  3. Bemenu, Dmenu, Wmenu, Fuzzel, Rofi, Tofi, Wofi, or Yofi
  4. xsel or wl-copy
  5. (optional) Pinentry
  6. (optional) xdotool (for X), ydotool or wtype(for Wayland), dotool 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.
  • 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 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 config.ini as desired.
  • More detailed usage information.

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.

      <tag name on first line>
    
      * Release note 1
      * Release note 2
      * ...