#!/usr/bin/env bash . $HOME/.bin/_config set -x shopt -s nullglob globstar 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[@]}" | $DMENU_CMD -p Password) [[ -n $password ]] || exit # read password file password_out=$(pass "$password" 2> /dev/null) copy_password() { # copy password line printf "%s" "$password_out" | head -1 | xclip -r # extract additional information password_info=$(printf "%s" "$password_out" | grep -Ei -m 1 'login|user|email') #url_info=$(printf "%s" "$password_out" | grep -Ei '^url' | awk -F"[ :]*" '{ $1=""; print $0 }' ) # show desktop notification if [[ -n $password_info ]]; then NOTIFY_CMD "$(printf '%s' "$password_info")" else NOTIFY_CMD "No username provided." fi } copy_otp() { password_otp=$(pass otp "$password" 2> /dev/null) printf "%s" "$password_otp" | xclip -r NOTIFY_CMD "$password_otp" } if echo "$password_out" | grep -q otpauth then sel=$(printf 'Copy Password\nCopy OTP' | $DMENU_CMD -p Copy) case $sel in *Password) copy_password; ;; *OTP) copy_otp; ;; esac else copy_password fi