[proposal] to split individual IM config out of xinitrc xinput script

Jens Petersen petersen at redhat.com
Wed Apr 7 13:09:22 UTC 2004


In order to improve the maintainability of the xinput script
in xinitrc and to make adding new Input Methods (IMs) easier
in the future, Akira Tagoh and I recently came up with the
idea to split all the individual IM code out of xinput and
put it into separate config scriptlets that would be owned
and maintained by the individual IM packages.

The idea is basically to replace all the IM specific code in
xinput by something like this:

  lang_region=$(echo $tmplang | sed -e 's/\..*//')
  XINPUTDIR=/etc/X11/xinit/xinput.d
  if [ -z "$XIM" ]; then
    if [ -r ${XINPUTDIR}/$(LANG) ]; then
      . ${XINPUTDIR}/$(LANG)
    elif [ -r ${XINPUTDIR}/$(lang_region) ]; then
      . ${XINPUTDIR}/$(lang_region)
    fi
  elif [ -r ${XINPUTDIR}/$(XIM) ]; then
    . ${XINPUTDIR}/$(XIM)
  fi

where $XINPUTDIR would contain scriptlets installed with
alternatives by the individual IM packages (htt, chinput,
xcin, nabi, kinput2, skkinput, etc) and alternatives
symlinks for each locale through /etc/alternatives to the
default IM for it.  For example:

  /etc/X11/xinit/xinput.d/hi_IN -> /etc/alternatives/xinput-hi_IN
  /etc/X11/xinit/xinput.d/ja_JP -> /etc/alternatives/xinput-ja_JP
  /etc/X11/xinit/xinput.d/ko_KO -> /etc/alternatives/xinput-ko_KO
  /etc/X11/xinit/xinput.d/zh_CN -> /etc/alternatives/xinput-zh_CN
  /etc/X11/xinit/xinput.d/zh_TW -> /etc/alternatives/xinput-zh_TW

[It is not sure whether it better to support symlinks for
both ll_CC.ENCODING and ll_CC separately or not.  Perhaps
only ll_CC or even just ll is sufficient?]

and then for example there would be symlinks like

  /etc/alternatives/xinput-hi_IN -> /etc/X11/xinit/xinput.d/htt
  /etc/alternatives/xinput-ja_JP -> /etc/X11/xinit/xinput.d/kinput2-canna
  /etc/alternatives/xinput-ko_KO -> /etc/X11/xinit/xinput.d/nabi
  /etc/alternatives/xinput-zh_CN -> /etc/X11/xinit/xinput.d/htt
  /etc/alternatives/xinput-zh_TW -> /etc/X11/xinit/xinput.d/xcin

[For FC the default IM would actually be htt (if installed)
for all these locale, but I just put in various IMs here to
illustrate.]

See https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=119785
for more details and comments.  Unfortunately it is getting
a bit late now for FC2, so this idea may have to wait for
FC3.

The only weakness of this compared to the current xinput
setup that I can think of is that it doesn't allow for any
fallbacks: eg if htt is running use it otherwise use kinput2
with Canna say instead.  But in practice people don't
usually switch IM all the time, and the flexibility gained
outweighs this small loss.  Also users can still easily
override the IM configuration by setting XIM (and optionally
also XIM_PROG and XIM_ARGS) in their ~/.i18n" file or
system-wide in "/etc/i18n".

Comments and feedback on the scheme and design are most welcome.

Cheers, Jens





More information about the devel mailing list