2007年05月16日

M17N の scim-bridge その2

えー、何か記事を書けば書くほど一緒に恥もかいてる気がしますが、気にせずに行きます。

本来の流れで行けば前回のエントリのコメント欄に書くべきなんですが、長くなるのでこちらに書かせて頂きます。

# 何か seesaa の動きが怪しいな…大丈夫か?

まず、scim-bridge に濡れ衣を着せてしまったので、それを晴らすことから。

> pkg-configでqt-mtのprefixを取得してそこから割出していますが、

とのことでしたので、

 $ pkg-config --variable=prefix qt-mt

とやってみたら、

 /usr/lib/qt3/

が返ってきますた orz
「マジ???」と思って /usr/lib64/pkgconfig/qt-mt.pc も確認してみたら、やはり「prefix=/usr/lib/qt3/」となっていました(当たり前)。

というわけで、大力さんのおっしゃるとおり、suse のせいでした。ごめんなさい m(__)m

「しかし何で /usr/lib ?」と思ってもう少し調べてみたら、さらに衝撃的な事実が…。
何と、/usr/lib64/qt3/ は /usr/lib/qt3/ へのシンボリックリンクになっていますた orz

 mv /usr/lib/qt3/plugins/inputmethods/im-scim-bridge.so /usr/lib64/qt3/plugins/inputmethods/

とかしてた俺は大マヌケ… もう、死のうかしら…

ちなみに、fedora7 x86_64 の scim-bridge-qt-0.4.10-1.fc7.x86_64.rpm では im-scim-bridge.so のインスコ先は /usr/lib64/qt-3.3/plugins/inputmethods/ で、qt-mt の prefix は /usr/lib64/qt-3.3 になってました。
これが普通だと思うんですが、何で suse は /usr/lib/qt3/ なの?ちゃんと理由があるんだろうとは思うんですが…。

というわけで、suse では x86_64 な環境で 32bit と 64bit の QT アプリ両方で scim-bridge を使う術はない、ということになるんでしょうかね。どっちか片方だけしかダメと。
まぁ、firefox や thunderbird がある GTK とは違って、QT アプリには 64bit 環境で敢えて 32bit のアプリを使うようなことはまずなさそうなので、そもそもどうでもいいことなのかもしれませんが。
fedora7 x86_64 にも scim-bridge-gtk には x86_64 と i386 の両方が用意されてたけど、scim-bridge-qt には x86_64 のパッケージしかなかったしなぁ。

<追記>
書いてるうちに大力さんからまたコメントを頂きました。
それによると、suse ではサフィックスで 32bit と 64bit の区別をしてるそうです。
何ともアレですねぇ…


次に、私が ~/.xim に

 export GTK_IM_MODULE=scim

と書いている件ですが、混乱させてしまったようですみません。
通常は、

 export GTK_IM_MODULE=scim-bridge

としておけば、64bit の gedit だろうが firefox だろうが OOo だろうが、どんな GTK アプリでも困ることはないので、こうしておくのがベターだと思います。

それを知った上で敢えて「scim」にしているのには、実は大した理由はありません(ぉ
「scim だけで使えるものは scim-bridge 噛まさずに scim で使おう」というのが理由といえば理由です。

で、これまで(10.2 を入れなおす前まで)は「export GTK_IM_MODULE=scim」としていても、firefox、thunderbird、OOo(日本ユーザ会版)では自動的に scim-bridge が起動していたんですが、今回何で使えなくなっちゃったんだろう?というのが疑問なのです。
scim-bridge を m17n から入れた以外はほぼ同じ環境なはずなのに…、と。

もうちょっと詳しく言うと、自分の理解では、

 1. ~/.xim には「export GTK_IM_MODULE=scim」を設定
   従って、gedit(x86_64)や leafpad(x86_64)等 64bit GTK アプリでは scim が使われる

 2. scribes(i586)等 32bit GTK アプリを起動
   scim-32bit は入れていないので、「GTK_IM_MODULE=scim」は無効になる(設定されていないのと同じになる)。
   従って、system-wide な設定に従って IM が選択される。
   つまり、/etc/X11/xim.d/ja/ 以下を見て、49-scim-bridge が一番先なのでこれが選択される。

これが多分 mike さんの説明で、実際 scim-bridge が選択されます。

なので、「export GTK_IM_MODULE=scim」と設定するのは必ずしも間違いというわけではないと思います。(もちろん「export GTK_IM_MODULE=scim-bridge」にした方が問題が生じなくていいので、通常はそうすべきだと思います)

で、今回の疑問はここからで、

 3. mozilla 本家から落としてきた firefox(32bit) を起動
   2. と同じ状況になるはずと思いきや(mikeさんもそう考えてるが)、scim-bridge は選択されず、kinput2 が選択される。

これが何故なのか、ということです。
しかも、以前は scim-bridge が起動していたのに。
さらに言うと、以前は自分で scim-bridge を入れていたのですが、その際、「/etc/X11/xim.d/」以下に scim-bridge のエントリを作っていなかったのですが、それなのに scim-bridge が起動していたわけで、2. ともまた違う状況だったのです。

3. の現象が起こるのは firefox、thunderbird、OOo で、どれも windows と linux でソースを共有しているものなので、特殊なんだろうとは思いますが、そもそもこれらはどういうプロセスで IM が選択されているんだろうかと。

posted by vagus at 23:57| 東京 ☀| Comment(5) | TrackBack(0) | 日本語入力 - アプリ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
/etc/X11/xinitrc.common読むと判るんですが、
$HOME/.xim用意しちゃうと$HOME/.ximしか読みません。
/etc/X11/ximおよび/etc/X11/xim.d/xxを読みに行くのは
$HOME/.ximが無い時です。
Posted by 通りすがりのSUSEユーザ at 2007年05月17日 01:11
/etc/X11/xinit/xinitrc.common読むと判りますが
$HOME/.ximを用意してしまうと、$HOME/.ximを読み込むだけで、/etc/X11/xim及び/etc/X11/xim.d/以下に用意されているロジックが読み込まれずに無視されます。
Posted by 通りすがりのSUSEユーザ at 2007年05月17日 01:15
うわ....。重複コメントになってしまいました。ごめんなさい。
Posted by 通りすがりのSUSEユーザ at 2007年05月17日 01:19
firefox(32bit)などは、何故かXIM($XMODIFIERS)経由での入力になり、GTK_IM_MODULEが効きませんね。
私のamd64なGentooも同じです。構築環境の違いでしょうか。よくわかってませんが。

なので、私はXMODIFIERS=@im=SCIMを設定してます。
Posted by matsuu at 2007年05月17日 08:58
通りすがりのSUSEユーザさん
> 重複コメントになってしまいました
何か seesaa おかしくて、一々強制リロードしないとダメみたいですねぇ。

> /etc/X11/ximおよび/etc/X11/xim.d/xxを読みに行くのは
> $HOME/.ximが無い時です。
はい。ただ、それはログイン時の IM 起動の際の話なので、2. や 3. の場合とは違うと思うんですよ。2. や 3. は「ログイン後に GTK_IM_MODULE 等に指定された値(IM)が有効でなかった(使えなかった)場合」の話なので。
とは言え、ちょっと試してみたところ、この場合も /etc/X11/xim.d/xx を読みに行かないことに変わりはなさそうなので、2. で書いたことは多分間違ってますね(^^;

matsuu さん
情報感謝です。
> GTK_IM_MODULEが効きませんね
んー、「GTK_IM_MODULE=scim-bridge firefox」みたいにして起動するとちゃんと scim-bridge が使えるので「効かない」というわけでもなさそうです。
また、「XMODIFIERS=@im=scim-bridge」にした状態で起動しても kinput2/canna になってしまうんですよねぇ。

この辺、自分の環境とかもちゃんと書いてなかったので、もうちょっと整理してもう一度きちんと書き直します。
Posted by vagus at 2007年05月17日 11:54
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。