aboutsummaryrefslogtreecommitdiff
path: root/.local/bin/pass-menu
diff options
context:
space:
mode:
Diffstat (limited to '.local/bin/pass-menu')
-rwxr-xr-x.local/bin/pass-menu27
1 files changed, 27 insertions, 0 deletions
diff --git a/.local/bin/pass-menu b/.local/bin/pass-menu
new file mode 100755
index 0000000..7f0a306
--- /dev/null
+++ b/.local/bin/pass-menu
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+# LICENSE: GPLv2+
+# https://git.zx2c4.com/password-store/tree/contrib/dmenu/passmenu
+
+set -eo pipefail
+shopt -s nullglob globstar
+
+printf "\n" | $copy
+
+copy='xsel --input --primary'
+menu='dmenu -f -i -b -nhf #ffeb3b -sf #ffeb3b -p ⠀:::⠀passwords⠀:::'
+_paste () { xdotool type "$(xsel --output --primary)"; }
+
+prefix=${PASSWORD_STORE_DIR-~/.password-store}
+password_files=("$prefix"/**/*.gpg )
+password_files=("${password_files[@]#"$prefix"/}")
+password_files=("${password_files[@]%.gpg}")
+password=$(printf '%s\n' "${password_files[@]}" | $menu)
+
+[ -n "$password" ] || exit
+
+{ pass show "$password" 2>/dev/null | $copy && _paste; } ||
+{ notify-send --urgency=critical --expire-time=5000 "Failed to copy $password to primary clipboard." && exit 1; }
+
+printf "\n" | $copy
+
+notify-send "Copied $password to primary clipboard."