#! /bin/bash GENERATION_HINT="Generate with default config" # Generate a new password if ROFI_DATA is given by last execution if [ -n "${ROFI_DATA}" ]; then PASSWORD="${ROFI_DATA}" export ROFI_DATA= # If custom arguments for password generation is given # Set environment variable if [ ${ROFI_RETV} -eq 2 ]; then extra_arguments="${1}" fi # Generate password in a new process # And Use current script to copy the values info X11 selections coproc ( pass generate ${PASSWORD} ${extra_arguments} $0 ${PASSWORD} ) exit 0 fi # Give rofi available passwords and exit if [ $# -eq 0 ]; then # Specify rofi prompt as 'Get' echo -e "\0prompt\x1fGet" find $HOME/.password-store -name '*gpg' -printf %P\\n | \ sed 's/.gpg$//' exit 0 fi # Test password exists or not RESULT="$(pass $1)" set -x if [ -n "$RESULT" ]; then # Copy the given password into PRIMARY selection and kill it in 30s echo "$RESULT" | sed -n 1p | tr -d '\n' | xsel -i -t 30000 # Copy the second line (most of the time, account name) into CLIPBOARD selection echo "$RESULT" | sed -n 2p | tr -d '\n' | xsel -ib # And show extra message EXTRA="$(echo; echo; echo "$RESULT" | sed '1d' | sed '1{/^$/d}')" coproc ( rofi -e "Copied: $1$EXTRA" ) elif [ -f "$HOME/.password-store/$1.gpg" ]; then coproc ( rofi -e "GPG passphase is not chached" \ -theme-str '#window { font: "hacker 40"; }' ) else # Password doesn't exist yet # Go to next rofi execution echo -e "\0prompt\x1f$1" echo -e "\0message\x1fThis password doesn't exist, generate with custom arguments?" echo -e "\0data\x1f$1" echo ${GENERATION_HINT} fi