/pmwrap

Primary LanguageGoOtherNOASSERTION

Password Manager Wrapper

A wrapper arround password manager to make it easier to copy a password to your clipboard with minimal user interaction.

Install

Installing on Archlinux

rm -rf ~/.cache/packages/pmwrap && mkdir -p ~/.cache/packages
git clone 'https://github.com/vitorqb/pmwrap-pkgbuild.git' ~/.cache/packages/pmwrap
( cd ~/.cache/packages/pmwrap && makepkg -si )

Manual Install

Make sure ~/.local/bin is in your PATH.

mkdir -p ~/.local/bin && cd ~/.local/bin
curl -L 'https://github.com/vitorqb/pmwrap/releases/latest/download/pmwrap.tar.gz' | tar -zx

Install: Dependencies

dmenu (or alternatives)

In order to query an user to select an item (e.g. an account, a password to copy, etc.), pmwrap requires dmenu or a similar command to be available. Look for dmenu in Configuration.

pinentry (or similar)

In order to ask the user for a pin, pmwrap requires pinentry, which usually comes with gnupg. Look for pinentry in Configuration.

In order to send user notifications, we rely on the notify-send command which comes with libnotify.

Usage

# See help and usage
pmwrap --help

# Set's the active account. Run this before anything else. Interactive.
pmwrap select-account

# Copies a password to the clipboard (interactive)
pmwrap copy-password

# Copies a password to the clipboard. Exact match by name or ID. (non-interactive).
pmwrap copy-password -n Github

Configuration

A configuration file is expected in ~/.config/pmwrap.yaml.

# Customize the dmenu command used to query the user for selecting an item.
# Used for item names and accounts.
DmenuCommand: ["dmenu", "-i"]

# Customize the pinentry command used to query the user for a pin.
PinEntryCommand: ["pinentry-qt"]

# Customize the program used for notify-send
NotifySendCommand: "libnotify"

Development

Run

./scripts/run.sh -h
./scripts/run.sh -- --help
./scripts/run.sh -- copy-password -n Foo

Test

./scripts/test.sh -h
./scripts/test.sh
./scripts/test.sh -t TestSomethingSpecific
./scripts/test.sh -v

Lint/Format

./scripts/format.sh -h
./scripts/format.sh

Build

./scripts/build.sh -h
./scripts/build.sh