summaryrefslogtreecommitdiff
path: root/passmenu.sh
diff options
context:
space:
mode:
Diffstat (limited to 'passmenu.sh')
-rwxr-xr-xpassmenu.sh43
1 files changed, 43 insertions, 0 deletions
diff --git a/passmenu.sh b/passmenu.sh
new file mode 100755
index 0000000..a7bd8cb
--- /dev/null
+++ b/passmenu.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+prefix=${PASSWORD_STORE_DIR:-~/.password-store}
+
+get_password() {
+ dmenu -i -p pass
+}
+
+get_passwords() {
+ find -s "$prefix" -type f -name '*.gpg'
+}
+
+trim_prefix() {
+ while read line
+ do
+ printf '%s\n' "${line##$prefix/}"
+ done
+}
+
+trim_suffix() {
+ while read line
+ do
+ printf '%s\n' "${line%%.gpg}"
+ done
+}
+
+copy_pass() {
+ [ -n "$1" ] || return
+
+ otp=''
+
+ case "$1" in
+ totp*)
+ otp=otp
+ ;;
+ esac
+
+ pass $otp show --clip "$1" 2>/dev/null
+}
+
+password=$(get_passwords | trim_prefix | trim_suffix | get_password)
+[ -n "$password" ] || exit 0
+msg=$(copy_pass "$password")
+notify-send passmenu "$msg"