Ubuntu 14.04 LTS MATE 改 + IBus の .xprofile の謎

Ubuntu 14.04 LTS を GNOME3 から MATE に入れ替えると、 その段階で Gtk3 と Gtk2 が混在しています。 そこにさらに Qt-5.5 を混ぜて、 日本語入力をフレームワークに関係なくできるようにしました。 なお、 Ubuntu 配布の qt-5.2.1 は 14.04 LTS にアップグレードしたときに試して、 日本語のかな文字が白抜き四角に化けることがあることに気がついて、 すぐに全パッケージを削除してあります。

Qt-5.5.1 を /opt/Qt/ ディレクトリへインストールした直後では、 システムの IBus 設定スクリプトが Qt 5 の IBus プラグインを探せないので、 環境変数ibus になっていません。 そのため、 Qt 5 アプリケーションで日本語入力できません。

日本語入力: MATE 端末 - 可能、 Firefox - 可能、 Qt 5 アプリ - 不可。

$ echo $XMODIFIERS
@im=ibus
$ echo $GTK_IM_MODULE
ibus
$ echo $QT4_IM_MODULE
xim
$ echo $QT_IM_MODULE
xim

セオリー通りに .xprofile で IBus を直接動くように書き込んで、 ログインしなおします。 今度は、 Qt 5 アプリケーションで日本語入力できるようになったのに対して、 Firefox ができなくなりました。 ちなみに、 Firefox は GTk3 アプリケーションです。

日本語入力: MATE 端末 - 可能、 Firefox - 不可、 Qt 5 アプリ - 可能。

$ cat ~/.xprofile
export XMODIFIERS='@im-ibus'
export GTK_IM_MODULE=ibus
export QT4_IM_MODULE=xim
export QT_IM_MODULE=ibus
/usr/bin/ibus-daemon --daemonize --xim

環境変数の設定が足りないのだろうと、 .xprofile を無効にしてログインしなおし、 環境変数を眺めていくと、 TEXTDOMAIN が怪しそうだったのですが、 再び .xprofile を有効にしてログインしなおしても相変わらず日本語入力不能なままでした。

$ TEXTDOMAIN=im-config TEXTDOMAINDIR=/usr/share/locale firefox

他に怪しそうな環境変数には思い当たらず、 .xprofile を諦めて、 最後の手段としてシステムの IBus 設定スクリプトへ /opt/Qt を追加しました。 ログインしなおすと、 今度はすべてで日本語入力が可能になりました。

日本語入力: MATE 端末 - 可能、 Firefox - 可能、 Qt 5 アプリ - 可能。

$ rm .xprofile

IBus 設定スクリプトの次の箇所に探索ディレクトリを追加しています。

# use immodule when available for Qt5
for IM_CONFIG_MARKER in /usr/lib/*/qt5/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so\
        /opt/Qt/5.5/gcc/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so ; do

ログインしなおすと、 QT_IM_MODULE も ibus に変化します。

$ echo $XMODIFIERS
@im=ibus
$ echo $GTK_IM_MODULE
ibus
$ echo $QT4_IM_MODULE
xim
$ echo $QT_IM_MODULE
ibus

システム設定ファイルを書き直すのは筋が悪すぎますが、 .xprofile 設定に足りない環境変数が不明なままなので、 これで動かすことにします。

もう一つのやりかたとして、 Ubuntu 配布の qt-5.2.1 を削除せずにインストールしたままで、 Qt-5.5.1 をインストールするのもありでしょう。 その際、 Qt 5 はデフォルトで実行ファイルの RPATH セクションにライブラリ・パスを設定するようになっているので、 混在させても問題にならない可能性が高かろうと考えられます。