im-config for Debian                     Osamu Aoki <osamu@debian.org>

Please also read

* https://wiki.debian.org/Keyboard
* https://www.debian.org/doc/manuals/debian-reference/ch08.en.html#_the_keyboard_input

The modern keyboard input to a GUI application has 3 components:

* Linux kernel to accept incoming signal from connected input devices
  including keyboard.
* Input method (IM) framework to generate a sequence of characters from
  data accepted by Linux kernel.
* Application to read a sequence of characters from IM via specified
  data path.

The IM framework can generate sequence of over 130,000 characters in the
ISO/IEC 10646 using inputs using less than 90 keys.  The actual data
flow conversion is offloaded from IM framework to IM engines.  Simple IM
engines are ones which generate accented Latin characters (This can
emulate xmodmap(1) based mapping).  More elaborate IM engines are ones
which generate CJK (Chinese, Japanese, Korean) characters.  There are
IM engines supporting inputs of Arabic, Cyrillic, Ethiopic, Georgian,
Greek, Hebrew, Indic, Thai, ...  characters.

There are a few popular general purpose IM frameworks:

* iBus   -- default for GNOME Desktop (Yes, I use this)
* Fcitx5 -- good alternative (used by Chinese task)
* uim    -- good alternative (used by Japanese task)

You can install all these IM framework packages simultaneously but you
can activate only one IM framework for one desktop session.

This im-config package is a meta-framework to manage these IM frameworks
by offering:

* automatic selection of system wide best IM framework choice
* manually configurable system wide IM framework choice
* automatic selection of user's best IM framework choice
* manually configurable user's best IM framework choice

If only one IM framework is installed, that is used automatically as the
IM framework choice.

The activation of IM framework involves staring daemon for communication
and setting up pertinent environment variables to let the application
know data protocol and connection (IM framework specific data protocol
over dBus connection, or xim data protocol over X connection) to use to
obtain input data sequence.

The activation of IM engines is out of scope for this im-config package.
You must activate IM engines using configuration mechanism offered by
the IM framework.  (Some IM engine packages come with installation
script to activate it upon installation.)

In order to ensure im-config settings and IM engine setting to be
updated, you should restart the session or reboot the system.  (Yes, you
should be able to use systemctl but it is prone for problems.)

NOTE:
When adding support for Wayland GUI environment, GNOME decided to
integrate iBus IM infrastructure tightly by hard-coding environment
variable setting and start of daemon process in its startup code and by
writing its own IM engine configuration mechanism as a part of
"Settings".  So im-config does nothing for iBus under GNOME.

For specific IM environment set up, see Debian wiki pages.
* iBus   -- https://wiki.debian.org/I18n/ibus
* Fcitx5 -- https://wiki.debian.org/I18n/Fcitx5
* uim    -- https://wiki.debian.org/I18n/uim

You should consult the im-config(8) manage for the details of this
command behavior.

For some rare GUI programs run under Wayland which don't use any of X,
GTK, or Qt, im-config may not set up input method framework for you.
See README.Debian of ketty package for the work around example which
sets specific environment variable to enable access to the IM framework.

For the technical inner details of im-config, please read
README.internal.

 -- Osamu Aoki <osamu@debian.org>,  2021-12-06T14:10:15+00:00

# vim: set tw=72 sts=4 sw=4 ai si et:
