#!/bin/sh
# https://kevinlocke.name/bits/2019/07/31/prefer-terminal-for-gpg-pinentry
-set -Ce
-graphics="gtk-2 gtk qt x11 gnome"
-tty="curses tty"
+set -C
+gfx="qt gnome gtk-4 gtk-3 gtk-2 gtk bemenu dmenu x11"
+tty="curses-ss curses tty"
case "${PINENTRY_USER_DATA-}" in
- *USE_TTY=1*) list="$tty $graphics";;
- *) list="$graphics $tty";;
+ # prefer tty unless USE_TTY is 0
+ *USE_TTY=0*) list="$gfx $tty";;
+ *) list="$tty $gfx";;
esac
for x in $list; do
- p=which "pinentry-$x" 2>/dev/null
+ p=$(command -v "pinentry-$x")
if [ $? = 0 ]; then
exec "$p" "$@"
fi
done
+# fallback
+exec pinentry "$@"
+
echo "No pinentry program found" >&2