From 1966bcf4111bfa5219c37bb8ecf7fe31aabdd5bd Mon Sep 17 00:00:00 2001 From: Colin Powell Date: Tue, 13 Jan 2026 17:51:01 -0500 Subject: [PATCH] [bin] Try fixing pinentry wrapper --- bin/.bin/pinentry-wrapper | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/bin/.bin/pinentry-wrapper b/bin/.bin/pinentry-wrapper index 9f29764..c57e06a 100755 --- a/bin/.bin/pinentry-wrapper +++ b/bin/.bin/pinentry-wrapper @@ -1,23 +1,29 @@ #!/bin/sh -# Pick a working pinentry for this machine/session. -# Preference order: Emacs pinentry (if in Emacs), mac GUI pinentry, GTK/QT, curses. +# Deterministic, context-aware pinentry selector -# If you use pinentry-emacs and want it when Emacs is running: -if command -v pinentry-emacs >/dev/null 2>&1; then +# 1. Emacs — only when actually inside Emacs +if [ -n "$INSIDE_EMACS" ] && command -v pinentry-emacs >/dev/null 2>&1; then exec pinentry-emacs "$@" fi -# macOS GUI pinentry (Homebrew paths) +# 2. macOS GUI if [ "$(uname -s)" = "Darwin" ]; then if [ -x /opt/homebrew/bin/pinentry-mac ]; then exec /opt/homebrew/bin/pinentry-mac "$@"; fi if [ -x /usr/local/bin/pinentry-mac ]; then exec /usr/local/bin/pinentry-mac "$@"; fi fi -# Common Linux GUI pinentries -if command -v pinentry-gnome3 >/dev/null 2>&1; then exec pinentry-gnome3 "$@"; fi -if command -v pinentry-gtk-2 >/dev/null 2>&1; then exec pinentry-gtk-2 "$@"; fi -if command -v pinentry-qt >/dev/null 2>&1; then exec pinentry-qt "$@"; fi +# 3. Linux GUI — only if a GUI session exists +if [ -n "$WAYLAND_DISPLAY" ] || [ -n "$DISPLAY" ]; then + if command -v pinentry-gnome3 >/dev/null 2>&1; then exec pinentry-gnome3 "$@"; fi + if command -v pinentry-gtk-2 >/dev/null 2>&1; then exec pinentry-gtk-2 "$@"; fi + if command -v pinentry-qt >/dev/null 2>&1; then exec pinentry-qt "$@"; fi +fi -# Fallback (may fail in dumb/no-tty contexts) -if command -v pinentry-curses >/dev/null 2>&1; then exec pinentry-curses "$@"; fi +# 4. TTY fallback +if command -v pinentry-curses >/dev/null 2>&1; then + exec pinentry-curses "$@" +fi + +# 5. Last resort exec pinentry "$@" +