#!/usr/bin/env bash shopt -s nullglob globstar typeit=0 if [[ $1 == "--type" ]]; then typeit=1 shift fi if [[ -n $WAYLAND_DISPLAY ]]; then dmenu=dmenu-wl xdotool="ydotool type --file -" elif [[ -n $DISPLAY ]]; then dmenu=dmenu xdotool="xdotool type --clearmodifiers --file -" else echo "Error: No Wayland or X11 display detected" >&2 exit 1 fi prefix=${PASSWORD_STORE_DIR-~/.password-store} password_files=("$prefix"/**/*.gpg) password_files=("${password_files[@]#"$prefix"/}") password_files=("${password_files[@]%.gpg}") for f in "${password_files[@]}"; do [[ $f == *"otp"* ]] && otp_files+=("$f"); done password=$(printf '%s\n' "${otp_files[@]}" | "$dmenu" "$@") [[ -n $password ]] || exit if [[ $typeit -eq 0 ]]; then pass otp show -c "$password" 2>/dev/null else pass otp show "$password" | { IFS= read -r pass printf %s "$pass" } | $xdotool fi