summaryrefslogtreecommitdiff
path: root/dwm-6.3/scripts/passmenu2
diff options
context:
space:
mode:
Diffstat (limited to 'dwm-6.3/scripts/passmenu2')
-rwxr-xr-xdwm-6.3/scripts/passmenu260
1 files changed, 60 insertions, 0 deletions
diff --git a/dwm-6.3/scripts/passmenu2 b/dwm-6.3/scripts/passmenu2
new file mode 100755
index 0000000..3847219
--- /dev/null
+++ b/dwm-6.3/scripts/passmenu2
@@ -0,0 +1,60 @@
+#!/usr/bin/env bash
+
+shopt -s nullglob globstar
+
+typeit=0
+if [[ $1 == "--type" ]]; then
+ typeit=1
+ shift
+fi
+
+
+STARTDIR=${PASSWORD_STORE_DIR-~/.password-store}
+BASEDIR=$STARTDIR
+DONE=0
+LEVEL=0
+PREVSELECTION=""
+SELECTION=""
+
+while [ "$DONE" -eq 0 ] ; do
+ password_files=( "$STARTDIR"/* )
+ password_files=( "${password_files[@]#"$STARTDIR"/}" )
+ password_files=( "${password_files[@]%.gpg}" )
+
+ if [ "$LEVEL" -ne 0 ] ; then
+ password_files=(".." "${password_files[@]}")
+ fi
+ entry=$(printf '%s\n' "${password_files[@]}" | dmenu "$@" -l 15)
+
+ echo "entry: $entry"
+ if [ -z "$entry" ] ; then
+ DONE=1
+ exit
+ fi
+
+ if [ "$entry" != ".." ] ; then
+ PREVSELECTION=$SELECTION
+ SELECTION="$SELECTION/$entry"
+
+ # check if another dir
+ if [ -d "$STARTDIR/$entry" ] ; then
+ STARTDIR="$STARTDIR/$entry"
+ LEVEL=$((LEVEL+1))
+ else
+ # not a directory so it must be a real password entry
+
+ if [[ $typeit -eq 0 ]]; then
+ pass show -c "$SELECTION" 2>/dev/null
+ else
+ xdotool - <<<"type --clearmodifiers -- $(pass show "$SELECTION" | head -n 1)"
+ fi
+ DONE=1
+ fi
+
+ else
+ LEVEL=$((LEVEL-1))
+ SELECTION=$PREVSELECTION
+ STARTDIR="$BASEDIR/$SELECTION"
+ fi
+done
+