Giter Club home page Giter Club logo

rkeep's Introduction

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

rkeep's People

Contributors

leaty avatar tfheen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

rkeep's Issues

Key file to unlock

Hello, I use both a keyfile and a password to unlock the database, but i don't see any option for this in the config file. Is this something you would consider adding?

Clipboard is cleared more than once

Copying a password should invalidate all previous reasons to clear clipboard, otherwise the first clear might come too early (after e.g. copying two passwords from different sessions in rapid succession).

building on windows

Trying to build on windows with x86_64-pc-windows-msvc causes 2 errors.
first there is a problem with git_version(). this could be something related to my git installation (github desktop)
and secondly there are Unix io calls which can't be accessed on windows (for obvious reasons).

sadly I don't have any Rust expierence so I can't fix the second error without getting into a completly new language

Upload 0.4.1 to crates.io?

It seems like one gets 0.2.0 (which doesn't seem to compile for me) when doing cargo install rkeep. Would it be possible to have the latest version uploaded there as well, so people aren't getting out-of-date versions?

Reset alive timer when used

Currently, the session will close after the alive timeout is reached, regardless if the session has been used again. It should probably reset after reuse so that in case of frequent usage, it remains open.

Default value for socket?

Could socket by default just live in $XDG_RUNTIME_DIR/rkeep.sock (or similar), if $XDG_RUNTIME_DIR is set?

Support for ~ in paths

It would be useful if database = ~/foo.kdbx worked in config.toml, rather than having to hard code the location of the home directory.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.