#keepass #display #hook #interface #back-end #persistent #clipboard

bin+lib rkeep

Persistent KeePass backend with display hooks

2 unstable releases

0.4.1 Nov 28, 2021
0.2.0 Apr 27, 2021

#535 in Authentication

MIT license

15KB
314 lines

rkeep

Persistent KeePass backend with display hooks for most STDIN capable programs, written in Rust. Use dmenu, rofi or similar interfaces to quickly copy your passwords to clipboard.

Editing KeePass is definitely in scope of this project, but it's a todo. PR's are welcome.

Configuration

The configuration may contain multiple sessions, in case you have multiple keepass databases. Default location is ~/.config/rkeep/config.toml, see rkeepd --help and rkeep --help. Copy the sample config for reference when configuring.

Example config

socket = "/tmp/rkeep.sock"

[[session]]
name = "mykeys" # Name of session
database = "/path/to/my.kdbx"
alive = 1800 # Keep database unlocked for (seconds)
clipboard = 10 # Clear clipboard after (seconds)

[session.command]
pass = ["rofi", "-dmenu", "-password", "-p", "Password", "-theme-str", 'entry { placeholder: ""; }']
list = ["rofi", "-dmenu", "-columns", "1", "-no-auto-select", "-i", "-p", "{session.name}"]

[[session]]
name = "myotherkeys"
database = "/path/to/my.other.kdbx"
keyfile = "/path/to/keyfile"
alive = 1800
clipboard = 10

[session.command]
pass = ["rofi", "-dmenu", "-password", "-p", "Password", "-theme-str", 'entry { placeholder: ""; }']
list = ["rofi", "-dmenu", "-columns", "1", "-no-auto-select", "-i", "-p", "{session.name}"]

How to use

Run install.sh or install manually.

Server

Either run rkeepd manually, at startup, or as a user service. Note however that the service may need to be modified to start after your display manager, otherwise programs that require a display server like e.g. rofi may not show up.

Personally I have no valid After= target for the service because I don't use a display manager, so I just add systemctl --user start rkeepd in .xinitrc and omit enabling the service.

Client

Set up a keybind or a shortcut to run e.g. rkeep -s mykeys, or simply run it manually.

Example

With keys as session name.

2021-04-03-1617473165_screenshot_2560x1440

2021-04-03-1617473299_screenshot_2560x1440

Dependencies

~7MB
~126K SLoC