Build767での日本語入力

olpc-ja MLでもちょっと書いたのですが、新しい8.2-767上で日本語入力の設定を調べてみました。

普通にSCIMを入れてみる

以前のバージョンで行っていた手順SCIMを入れます。
しかし、Ctrl-Spaceを押してもIMEが上がってきません。SCIMのデーモンは動いているように見えます。
Fedora9になって依存関係が変わったようで、なにやらたくさんのrpmも一緒にインストールされるのが気に入りません。

ibusを入れてみる

SCIMの直し方のヒントが見つからなくて、検索した際にFedora9で動いたと記述があった、ibusibus-anthy)を試してみました。
ibusは、RedHatの人が中心になって開発している新しいInputMethodのフレームワークです。SCIMとの大きな違いとして、dbusベースのAPIを使用していることが大きな特徴です。詳細は、http://ibus-user.googlegroups.com/web/ibus.pdf に説明があります。

今回ibusを試したもう一つの理由は、ibusが XOの将来のOSでのInputMethodの候補としても検討されていることです。直近のバージョンではSCIMが候補ですが、ibusへの移行の容易さも考慮されたようです。

まだいろいろ開発中ではありますが、Fedora9ではyumで普通に入りました。
.xsessionは次のように書きます。

export XMODIFIERS=@im=ibus
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
ibus &

あと、ibus-setupでAnthyを使うように指定しましたが、この指定が効いているかどうかは不明です。

ibusでもやはりCtrl-SpaceでIMEが上がってきませんでした。しかし、色々試しているうちに、TerminalアクティビティだけはIMEが起動されて入力できることがわかりました。

Terminal以外でも入力できるようにするには?

OLPCでは子供に安全に自由に使ってもらうために、セキュリティを大変重要視しています。IvanのBitfrost platformのサブセットである、アクティビティ間の分離機能をRainbowをOS上のサービスの一部として実装しています。8.2-767が前バージョンの8.1と大きく変わった点の一つとして、このRainbowによる分離がデフォルトでONになっていることがあり、これが怪しい気がします。
通常のユーザ向けアクティビティと異なり、Terminalはいろんな管理作業を行えるよう、セキュリティ上の扱いが異なります。TerminalアクティビティだけIMEが動くというのは、重要なヒントです。

そこで、実験的にアクティビティ分離を停止して試してみます。
アクティビティ分離の停止方法は、Wikiのここに説明があります。
その結果、Terminal以外でもibus-anthyIMEによる入力ができました。

再度SCIMに挑戦する

ibusでの回避手段を見つけたことに気をよくして、再度SCIMに挑戦してみます。
Fedora9での事例やscimのエラーメッセージでいろいろ検索した結果、scim-lang-japaneseをインストールした上で、
.xsessionはこのように変更したら、動くようになりました。

export LC_TYPE="ja_JP.UTF-8"
export XMODIFIERS=@im=SCIM
export GTK_IM_MODULE=scim-bridge
export QT_IM_MODULE=scim
export USE_XOPENIM=t
scim -d &

この場合でも、アクティビティ分離を停めないとTerminal以外でのIME入力はできません。

今後の課題

実験的な回避手段としては使えると思いますが、Rainbowを停めていることで動かないアクティビティがあったり、本来のセキュリティではないので、このままでは実用には耐えられませんので、MichaelやSayaminduに相談して、Rainbowの中で動作できるように研究してみたいと思います。