# https://kevinlocke.name/bits/2019/07/31/prefer-terminal-for-gpg-pinentry
set -C
-gfx="gnome qt gtk-4 gtk-3 gtk-2 gtk bemenu dmenu x11"
+gfx="qt gnome gtk-4 gtk-3 gtk-2 gtk bemenu dmenu x11"
tty="curses-ss curses tty"
case "${PINENTRY_USER_DATA-}" in
# prefer tty unless USE_TTY is 0
fi
done
+# fallback
+exec pinentry "$@"
+
echo "No pinentry program found" >&2
export GPG_TTY=$(tty)
if [[ ( -v DISPLAY || -v WAYLAND_DISPLAY ) &&
${PINENTRY_USER_DATA/USE_TTY=0} == $PINENTRY_USER_DATA ]]
- export PINENTRY_USER_DATA=USE_TTY=$((
- ${+DISPLAY} + ${+WAYLAND_DISPLAY} == 0))
- # XXX: don't know if gpg-agent supports comments after directives
- # XXX: path could have #
+ export PINENTRY_USER_DATA=USE_TTY=0
# XXX: we are assuming this is our pinentry from .local/bin
- sed -Ei 's#^([[:space:]]*pinentry-program[[:space:]]).*$#\1'$HOME'/.local/bin/pinentry#' \
+ sed -Ei 's\1f^([[:space:]]*pinentry-program[[:space:]]).*$\1f\1'$HOME'/.local/bin/pinentry\1f' \
${GNUPGHOME:-~/.gnupg}/gpg-agent.conf 2>/dev/null
# XXX: could check for changes before doing this to save perf
gpg-connect-agent RELOADAGENT UPDATESTARTUPTTY /bye >/dev/null 2>&1
if {$p} {
gpg-connect-agent /subst /serverpid \
- "/echo pid \${get serverpid} on $GPG_TTY" /bye 2>/dev/null
+ "/echo pid \${get serverpid} on ${WAYLAND_DISPLAY:-${DISPLAY:-$GPG_TTY}}" /bye 2>/dev/null
print -nP '%f'
}
} elif {$p} {