Archived
1
0
Fork 0
This repository has been archived on 2024-10-31. You can view files and clone it, but cannot push or open issues or pull requests.
dotfiles/simpleDots/bin/fzpass

56 lines
1.7 KiB
Text
Raw Normal View History

2022-02-18 22:48:34 +01:00
#!/bin/bash
## A wrapper for pass to use fzf to find passwords.
prefix=${PASSWORD_STORE_DIR:=~/.password-store}
## 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- \
2022-04-23 20:54:44 +02:00
| rev | cut --characters 5- | rev
2022-02-18 22:48:34 +01:00
)
2023-07-08 14:04:43 +02:00
## Some functions to call from inside the fzf menu
fzpass_update () {
echo "--Pulling..." 2>&1 >/dev/tty
pass git pull 2>&1 >/dev/tty
echo "--Pushing..." 2>&1 >/dev/tty
pass git push 2>&1 >/dev/tty
echo "--Any key to continue..." 2>&1 >/dev/tty
read
}
export -f fzpass_update
2023-05-22 14:37:59 +02:00
## Send the filelist to fzf,
## disable the fzf mouse to use the primary selection
2022-02-18 22:48:34 +01:00
password=$( printf '%s\n' "${password_files[@]}" \
2023-07-08 14:04:43 +02:00
| fzf --bind='ctrl-s:toggle-preview' \
--bind='ctrl-u:execute(fzpass_update)' \
2023-08-11 15:05:20 +02:00
--bind='ctrl-r:execute(pass rm {})' \
2023-05-22 14:37:59 +02:00
--bind='ctrl-e:execute(pass edit {} < /dev/tty > /dev/tty)' \
2022-02-22 10:55:54 +01:00
--preview='pass show {}' \
--preview-window="hidden" \
--no-mouse \
2023-05-22 14:37:59 +02:00
--header='
2023-07-08 14:04:43 +02:00
Ret: Copy pass, show OTP; C-s: Show entry; C-e: Edit entry
2023-08-11 15:05:20 +02:00
C-u: Update (pull, push); C-r: Remove'
2022-02-22 10:55:54 +01:00
$@ \
2022-02-18 22:48:34 +01:00
)
2023-07-08 14:04:43 +02:00
2022-02-18 22:48:34 +01:00
## Exit if nothing was selected
test "_$password" = "_" && exit
2024-06-22 19:21:42 +02:00
## Disable clipman
command -v clipctl >/dev/null && clipctl disable
2023-07-08 14:04:43 +02:00
## Copy pass and show otp, exit silently if anything fails
2024-10-23 09:15:27 +02:00
pass show -c "$password"
2023-07-08 14:04:43 +02:00
pass otp "$password" 2>/dev/null || exit 0
2023-05-22 14:37:59 +02:00
2024-06-22 19:21:42 +02:00
## Re-Enable clipman
command -v clipctl >/dev/null && clipctl enable