Gtkアプリだけ日本語入力できないケースを直す November 21, 2007
Rating: 2.5

最近のメジャーなディストリビューションは、マルチバイト圏の人が開発に加わっているから「日本語IMが上がらない!」というような派手な難点はなくなった。

それだけにpdaXiiのようにややマニアックなモバイル向けディストリビューションを使うと、設定がうまくいかずに苦労したりする。

今回はGtkアプリケーションからuimが使えない、というパターンだった。 いまにして考えてみれば、ディストリビューションアップグレード時に設定変更されなかったのが原因。 このトラブルのケースでは、IM側は立ち上がっているのにGtkが入力を拾わないという現象が起こっていた。 uim-xim(IMサーバ)は正常に立上がり、ターミナルでuim-fepを起動するとC-jでちゃんと日本語モードに切り替わっている。

この中途半端な状況の原因と対策は以下の3点で、要するにGtkが適切なIM用モジュールを読めていないということだ。

  • /usr/lib/gtk-2.0/2.x.y/immoduleにim-uim.soなどのIM通信ライブラリがない。これはIMのパッケージを再インストールすれば入ると思う。僕の場合は旧版Gtkのディレクトリに残っていたim-uim.soを安直にコピーしたら動いている。
  • /etc/gtk-2.0/gtk.immodulesで正しく↑のモジュールを設定できていない(ディストリビューションによっては別のディレクトリかもしれない。findコマンドで探せ)。このファイルはテキストの設定ファイルなので、読んで確認できる。gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodulesというコマンドを実行するとこの自動検索でファイルが更新される。
  • 環境変数GTK_IM_MODULEが適切に設定されていない。IMごとの環境変数を設定すれば良い。

UIライブラリは普段仕組みを気にしないところなだけに、いざトラブルが起こると直すのはけっこうマニアックな作業だと実感した。

One Comments

pdaXiiで256色emacs…

Zaurus(pdaXiiv2)でEmacsをできるだけ快適に使えるように設定を詰めてみた。 やってみて、まさにこれだ!と思った。 以前、Emacsを直ブートするLinuxの作り方で書いたように、求めていたPDAとは…