CentOS 7.4 の Emacs 上で ibus (xim) による入力ができない場合があることへの対処


TL;DR

DISCLAIMER: 不確定の情報もあるので,あくまで参考情報としてまとめています.

  • CentOS7 (Gnome Desktop) で,ibusによる日本語入力が基本的にできるようになったにもかかわらず,Emacs上では ibus (xim) による日本語入力が全くできないことが起こってしまった.
  • 力技として,セッションが立ち上がるタイミングで gdm による ibus-x11 プロセスを kill すると解決する場合がある.
# echo 'pkill -Ugdm ibus-x11' >> /etc/gdm/PreSession/Default

環境

  • Windows 10 Pro (1803)
    • Vagrant 2.2.2
  • CentOS 7.4 (bento/centos-7.4)
    • ibus-1.5.17-2.el7.x86_64
    • gdm-3.28.2-10.el7.x86_64
    • emacs-24.3-22.el7.x86_64

Summary

  • 現象
    • CentOS 7.4をインストールし,GNOME Desktopibus-anthyをインストールする
    • gnome-terminal等では日本語入力ができるが,emacsだけできない
    • 再現しないこともあるらしい
  • 原因(と思われるもの)
    • ログイン画面(gdm)による ibus-daemon と,ログインしたユーザの ibus-daemon の2つが立ち上がっている
    • 参考:"ibus-x11 --kill-daemon" dies without killing ibus-daemon when I log out a desktop environment. · Issue #1907 · ibus/ibus
    • gdmibus-daemon はログイン画面起動時に立ち上がり,ユーザログイン後には別のプロセスIDで立ち上がっている
    • ibus-daemon プロセスは,自身が行方不明の時に自動起動するようになっており,ユーザのログイン処理中に一度 gdm の ibus-daemon は落ちたものの,また立ち上がってしまっている?
      • ibus-daemonibus-x11 が本当は落としてくれる?
  • 場当たり的な対処
    • ユーザのログイン後に gdm による ibus-daemon を kill する
      • ただし,ibus-x11killすれば,それに合わせて落ちてくれる.
    • 場合によっては,ユーザの ibus-daemon を再起動する
$ sudo -ugdm pkill ibus-x11
$ ibus restart

未検証

  • ibusを1.59以降にアップデートすればよいのでは?(パッチが1.59で取り込まれているっぽい)