blob: 714ab7c52344ad2395ce81a76323f1a730e316fe (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#! /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 'otp.gpg' |
awk -F / -v PASSWORD_STORE_DIR="$PASSWORD_STORE_DIR" '
{ n = length(PASSWORD_STORE_DIR "/") }
$NF == "otp.gpg" {
print substr($0, 1 + n, length($0)-length("/otp.gpg")-n)
}
' |
exec fzf \
--history=/dev/null \
--no-sort \
--prompt='OTP: ' \
)
then
export FZMENU_PHASE=2
export FZMENU_RESULT="$result"
setsid -f "$0"
fi
;;
2)
# Specify a font, so xvkbd doesn't use the potentially missing
# lucidatypewriter, causing a warning to be printed to stderr.
font='-*-clean-*-*-*-*-*-*-*-*-*-*-iso10646-1'
pass=$(pass otp code "$FZMENU_RESULT/otp")
printf %s "$pass" |
xvkbd -xrm "xvkbd*Font: $font" -xsendevent -file -
;;
*)
echo "$0: error: bad phase: $FZMENU_PHASE" >&2
exit -1
esac
|