I wrap `pinentry` (which is in the dependency trees of gnupg, pacman, gvfs, udisks2 and other software that you can de-facto depend on on desktops) inside my own simple askpass.
$ cat ~/scripts/pinentry-askpass
#!/usr/bin/env bash
pinentry <<INPUT | grep '^D ' | cut -c 3-
SETPROMPT Password:
GETPIN
INPUT
$ cat ~/.bashrc | grep ASKPASS
export SUDO_ASKPASS="$HOME/scripts/pinentry-askpass"
export SSH_ASKPASS="$SUDO_ASKPASS"
It automatically launches the GTK, TTY, or QT version depending on your environment.It's also useful for agents to use sudo, you can write in instructions to tool-call `sudo -A` and you get a GUI popup to enter the password, and the agent continues from there. And since the "prompt" in pinentry can be customised... you can get the agent to set up a temporary askpass, which replaces "Password:" in the prompt with questions like "Can I delete this old log file in /var?" and you enter your password to authorise.