|
#!/usr/bin/env bash
|
|
|
|
shopt -s nullglob globstar
|
|
|
|
typeit=1
|
|
if [[ $1 == "--type" ]]; then
|
|
typeit=1
|
|
shift
|
|
fi
|
|
|
|
prefix=${PASSWORD_STORE_DIR-~/.password-store}
|
|
password_files=( "$prefix"/**/*.gpg )
|
|
password_files=( "${password_files[@]#"$prefix"/}" )
|
|
password_files=( "${password_files[@]%.gpg}" )
|
|
|
|
# Show urls open in firefox on top
|
|
open_urls="$($HOME/.local/bin/exfirefoxtabs.py | awk -F/ '{print $3}' | sort | uniq | sed 's/$//g' | sed ':a;N;$!ba;s/\n/|/g')"
|
|
pfiles="$(printf "%s\n" ${password_files[@]})"
|
|
list="$(echo "$pfiles" | grep -E "$open_urls")\n$(echo "$pfiles" | grep -Ev "$open_urls")"
|
|
entry=$(echo -e "$list" | dmenu -l 7 -p "Pass" -i "$@")
|
|
|
|
[[ -n $entry ]] || exit
|
|
|
|
action=$(echo -e "Login\nUsername\nPassword\nTOTP" | dmenu -p "Entry" -i )
|
|
case "$action" in
|
|
Login)
|
|
username=$(echo "$entry" | rev | cut -d"/" -f 1 | rev)
|
|
password=$(pass show "$entry")
|
|
printf %s "$username" | xargs | xdotool type --clearmodifiers --file -
|
|
xdotool key Tab
|
|
printf %s "$password" | { IFS= read -r pass; printf %s "$pass"; } | xargs |
|
|
xdotool type --clearmodifiers --file -
|
|
xdotool key Return
|
|
;;
|
|
Username)
|
|
username=$(echo "$entry" | rev | cut -d"/" -f 1 | rev)
|
|
printf %s "$username" | xclip -selection clipboard
|
|
printf %s "$username" | xargs | xdotool type --clearmodifiers --file -
|
|
notify-send -a " Password Manager" "Username copied to clipboard";;
|
|
Password)
|
|
password=$(pass show "$entry")
|
|
printf %s "$password" | xclip -selection clipboard
|
|
printf %s "$password" | { IFS= read -r pass; printf %s "$pass"; } | xargs |
|
|
xdotool type --clearmodifiers --file -
|
|
notify-send -a " Password Manager" "Password copied to clipboard";;
|
|
TOTP)
|
|
otp=$(pass otp "$entry")
|
|
printf %s "$otp" | xclip -selection clipboard
|
|
printf %s "$otp" | { IFS= read -r pass; printf %s "$pass"; } |
|
|
xdotool type --clearmodifiers --file -
|
|
notify-send -a " Password Manager" "TOTP copied to clipboard"
|
|
xdotool key Return
|
|
;;
|
|
esac
|
|
|