1
0
Fork 0
dotfiles/simpleDots/bin/fzpass
2023-05-22 14:37:59 +02:00

35 lines
1.2 KiB
Bash
Executable file

#!/bin/bash
## A wrapper for pass to use fzf to find passwords.
prefix=${PASSWORD_STORE_DIR:=~/.password-store}
prefixlength=${#prefix}
## Get all the gpg files in all directories and subdirs...
## remove the prefix, some 3 extra chars and the .gpg ending
password_files=$( find $prefix -name '*.gpg' \
| cut --characters ${#prefix}- \
| cut --characters 3- \
| rev | cut --characters 5- | rev
)
## Send the filelist to fzf,
## disable the fzf mouse to use the primary selection
password=$( printf '%s\n' "${password_files[@]}" \
| fzf --bind='ctrl-s:toggle-preview' \
--bind='ctrl-u:execute(pass git pull)+execute(pass git push)' \
--bind='ctrl-e:execute(pass edit {} < /dev/tty > /dev/tty)' \
--preview='pass show {}' \
--preview-window="hidden" \
--no-mouse \
--header='
Ret: Copy password & show OTP; C-s: Show entry; C-e: Edit entry
C-u: Update repo (Pull & Push)'
$@ \
)
## Exit if nothing was selected
test "_$password" = "_" && exit
pass show -c "$password" 2>/dev/null
pass otp "$password" 2>/dev/null