#! /bin/sh set -efu #PATH= case ${FZMENU_PHASE-0} in 0) export FZMENU_PHASE=1 exec setsid -f terminal dash "$0" ;; 1) if result=$( PASSWORD_STORE_DIR=${PASSWORD_STORE_DIR-$HOME/.password-store} FZF_DEFAULT_OPTS=${FZMENU_FZF_DEFAULT_OPTS-} if test -n "$FZF_DEFAULT_OPTS"; then export FZF_DEFAULT_OPTS fi find -L "$PASSWORD_STORE_DIR" -type f -name '*.gpg' | awk -F / -v PASSWORD_STORE_DIR="$PASSWORD_STORE_DIR" ' { n = length(PASSWORD_STORE_DIR "/") } $NF == "otp.gpg" { next } /.*\.gpg$/ { print substr($0, 1 + n, length($0)-length(".gpg")-n) } ' | exec fzf \ --history=/dev/null \ --no-sort \ --prompt='pass: ' \ ) then export FZMENU_PHASE=2 export FZMENU_RESULT="$result" setsid -f "$0" fi ;; 2) pass=$(pass show "$FZMENU_RESULT") printf %s "$pass" | xdotool type -f - ;; *) echo "$0: error: bad phase: $FZMENU_PHASE" >&2 exit -1 esac