# dpw the dynamic password manager Inspired by [`pass`](https://www.passwordstore.org/) and designed to be partly compatible out of the box. The main point of this is to provide a somewhat familiar command line interface for pluggable backends. For instance, one could write a plugin that talks to Lastpass, Bitwarden Hasicorp's Vault, or similar. There are some mild changes in the interface from `pass`, a full list of commands and options are available with the `-h` command line flag. The environment variable `DPW_BACKEND` defaults to `dpw-gpg` which provides the `pass` compatible backend. Since it's just a call to another executable the backends can be written in any language. I can also highly recommend my blog post on [GnuPG / GPG / PGP on a Yubikey]( https://riedstra.dev/2021/08/pgp-yubikey). That way your private key isn't even exposed to your computer, only the utilization of it is. ## Usage under Wayland Requires `wl-clipboard` package for copying, and `wtype` for the type functionality. If for some reason it doesn't detect wayland try setting `XDG_SESSION_TYPE=wayland`. ## dmenu script There's also a small dmenu script included that makes copying or typing out passwords and OTP tokens very quick and easy If you wish to use something other than `dmenu` it's best to drop a compatible wrapper somewhere earlier in your path. ( This is actually how I use `bemenu` in Wayland whenever a script calls dmenu ) ## Backends The `dpw-gpg` shell script should be short enough to read to give you an idea for implementing your own. That being said the interface is blindingly simple, accept the following four commands: * list * dump a list of the available keys, supporting arguments for sub keys may be preferred by users but isn't necessary, `find` will still work for them. * insert `` * Read from stdin * show `` * Dump to stdout * rm `` * init ( optional ) `dpw` will take care of all the additional commands by wrapping the four above as needed.