scim and pinentry-gtk2

Marcus Brinkmann marcus.brinkmann at
Fri Jun 19 02:51:20 CEST 2009

Werner Koch wrote:
> On Mon,  7 Apr 2008 21:09, marcus.brinkmann at said:
>> If it can be implemented without linking to any more libraries, I
>> would suggest a command line option to enable external input methods.
> Command line options are cumbersome because we would need to implement
> them in gpg-agent and and gpgconf too.
>> towards more GNOME/Gtk compliance, it might make sense to provide two
>> separate versions of pinentry: A hardened version based on the current
> That's also my suggestion.  Our framework makes it pretty easy to add new
> pinentries

Unfortunately, a binary won't cut it.  This is because the input module is not
selected by the X server or the gtk configuration, but by the client, through
standardized environment variables.  The X server supports many input methods,
even in parallel, and clients can open sessions to one or more of them
according to their own preferences.  This is by design of the X protocol.

The effect is that the input method is selected by the client, not by pinentry
itself, and needs to be passed through gpg-agent in the same manner as the
DISPLAY and locale setting.  In particular, the following environment
variables are responsible:

GTK_IM_MODULE    used by gtk to select gtk input modules (eg "scim-bridge")
XMODIFIERS       used by Xlib to select X input modules (eg "@im=SCIM")
QT_IM_MODUL      used by Qt to select qt input modules (eg "xim")

The fun is that we need to pass through all three variables, because we don't
know which backend the pinentry actually uses.

This is a bigger change that needs to be coordinated across several packages
(gpgme, gnupg, pinentry at least).


More information about the Gnupg-devel mailing list