diff options
| -rwxr-xr-x | X11/rofi/pass.get | 70 |
1 files changed, 36 insertions, 34 deletions
diff --git a/X11/rofi/pass.get b/X11/rofi/pass.get index ffe7988..7bec799 100755 --- a/X11/rofi/pass.get +++ b/X11/rofi/pass.get | |||
| @@ -1,54 +1,56 @@ | |||
| 1 | #! /bin/sh | 1 | #! /bin/sh |
| 2 | 2 | ||
| 3 | OPTIONS_NEW=( 'NO' 'YES' 'YES, and edit it' ) | 3 | GENERATION_HINT="Generate with default config" |
| 4 | 4 | ||
| 5 | # Generate a new password | 5 | # Generate a new password if ROFI_DATA is given by last execution |
| 6 | if [ -n "${ROFI_DATA}" ]; then | 6 | if [ -n "${ROFI_DATA}" ]; then |
| 7 | [ "$1" == "${OPTIONS_NEW[1]}" ] && \ | 7 | PASSWORD="${ROFI_DATA}" |
| 8 | coproc ( | 8 | export ROFI_DATA= |
| 9 | export POST=false | 9 | |
| 10 | pass generate ${ROFI_DATA} --clip | 10 | # If custom arguments for password generation is given |
| 11 | rofi -e "Generate and Copied: ${ROFI_DATA}" | 11 | # Set environment variable |
| 12 | ) | 12 | if [ ${ROFI_RETV} -eq 2 ]; then |
| 13 | 13 | extra_arguments="${1}" | |
| 14 | [ "$1" == "${OPTIONS_NEW[2]}" ] && \ | 14 | fi |
| 15 | coproc ( | 15 | |
| 16 | export POST=false | 16 | # Generate password in a new process |
| 17 | pass generate ${ROFI_DATA} --clip | 17 | # And Use current script to copy the values info X11 selections |
| 18 | rofi-sensible-terminal -e pass edit ${ROFI_DATA}; \ | 18 | coproc ( |
| 19 | ) | 19 | pass generate ${PASSWORD} ${extra_arguments} |
| 20 | 20 | $0 ${PASSWORD} | |
| 21 | exit 0 | 21 | ) |
| 22 | |||
| 23 | exit 0 | ||
| 22 | fi | 24 | fi |
| 23 | 25 | ||
| 24 | # Give rofi available passwords and exit | 26 | # Give rofi available passwords and exit |
| 25 | if [ $# -eq 0 ]; then | 27 | if [ $# -eq 0 ]; then |
| 26 | # Specify rofi prompt as 'Get' | 28 | # Specify rofi prompt as 'Get' |
| 27 | echo -e "\0prompt\x1fGet" | 29 | echo -e "\0prompt\x1fGet" |
| 28 | 30 | ||
| 29 | find ~/.password-store -name '*gpg' -printf %P\\n | \ | 31 | find ~/.password-store -name '*gpg' -printf %P\\n | \ |
| 30 | sed 's/.gpg$//' | 32 | sed 's/.gpg$//' |
| 31 | 33 | ||
| 32 | exit 0 | 34 | exit 0 |
| 33 | fi | 35 | fi |
| 34 | 36 | ||
| 35 | # Test password exists or not | 37 | # Test password exists or not |
| 36 | RESULT="$(pass $1)" | 38 | RESULT="$(pass $1)" |
| 37 | if [ -n "$RESULT" ]; then | 39 | if [ -n "$RESULT" ]; then |
| 38 | # Copy the given password into clipboard | 40 | # Copy the given password into PRIMARY selection and kill it in 30s |
| 39 | echo "$RESULT" | sed -n 1p | tr -d '\n' | xsel -i -t 30000 | 41 | echo "$RESULT" | sed -n 1p | tr -d '\n' | xsel -i -t 30000 |
| 40 | echo "$RESULT" | sed -n 2p | tr -d '\n' | xsel -ib | 42 | # Copy the second line (most of the time, account name) into CLIPBOARD selection |
| 43 | echo "$RESULT" | sed -n 2p | tr -d '\n' | xsel -ib | ||
| 44 | |||
| 45 | # And show extra message | ||
| 46 | EXTRA="$(echo; echo; echo "$RESULT" | sed '1d' | sed '1{/^$/d}')" | ||
| 47 | coproc ( rofi -e "Copied: $1$EXTRA" ) | ||
| 41 | 48 | ||
| 42 | # And show extra message | ||
| 43 | EXTRA="$(echo; echo; echo "$RESULT" | sed '1d' | sed '1{/^$/d}')" | ||
| 44 | coproc ( rofi -e "Copied: $1$EXTRA" ) | ||
| 45 | # Password doesn't exist yet | 49 | # Password doesn't exist yet |
| 46 | # Go to next rofi execution | 50 | # Go to next rofi execution |
| 47 | else | 51 | else |
| 48 | echo -e "\0prompt\x1f$1 doesn't exist, generate it?" | 52 | echo -e "\0prompt\x1f$1" |
| 49 | echo -e "\0data\x1f$1" | 53 | echo -e "\0message\x1fThis password doesn't exist, generate with custom arguments?" |
| 50 | 54 | echo -e "\0data\x1f$1" | |
| 51 | for i in "${OPTIONS_NEW[@]}"; do | 55 | echo ${GENERATION_HINT} |
| 52 | echo $i | ||
| 53 | done | ||
| 54 | fi | 56 | fi |