diff options
Diffstat (limited to '')
-rwxr-xr-x | .local/bin/dmpass | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/.local/bin/dmpass b/.local/bin/dmpass index 8fd3568..53d148c 100755 --- a/.local/bin/dmpass +++ b/.local/bin/dmpass @@ -1,9 +1,8 @@ #!/bin/sh -typeit=0 -if [ "$1" = "--type" ]; then - typeit=1 - shift +full=0 +if [ "$1" = "--full" ]; then + full=1 fi if [ -n "$WAYLAND_DISPLAY" ]; then @@ -11,7 +10,7 @@ if [ -n "$WAYLAND_DISPLAY" ]; then xdotool="ydotool type --file -" elif [ -n "$DISPLAY" ]; then dmenu=dmenu - xdotool="xdotool type --delay 25 --clearmodifiers --file -" + xdotool="xdotool type --delay 20 --clearmodifiers --file -" else echo "Error: No Wayland or X11 display detected" >&2 exit 1 @@ -19,13 +18,18 @@ fi prefix=${PASSWORD_STORE_DIR-~/.local/share/pass} rprefix=$(printf "%s" $prefix | sed 's/\//\\\//g') -password_files=$(ls "$prefix"/**/*.gpg | sed 's/^'${rprefix}'\///g' | sed 's/\.gpg//g') +password_files=$(ls "$prefix"/*.gpg "$prefix"/*/*.gpg | sed 's/^'${rprefix}'\///g' | sed 's/\.gpg//g') password=$(printf "%s\n" "${password_files}" | "$dmenu" -i -l 15 -m 0) [ -n "$password" ] || exit -if [ $typeit -eq 0 ]; then - pass show -c "$password" >/dev/null 2>&1 -else +if [ $full -eq 1 ]; then + id=$(printf "%s" "$password" | sed 's/.*___//') + printf "%s\n" $id | { IFS= read -r pass; printf %s "$id"; } | $xdotool + xdotool key Tab pass show "$password" | { IFS= read -r pass; printf %s "$pass"; } | $xdotool + xdotool key Return + exit fi + +pass show "$password" | { IFS= read -r pass; printf %s "$pass"; } | $xdotool |