長南です。久しぶりに長文です。 村上さん、返事はどうぞごゆっくり。お帰りになってからで結構です。 少し調べてみたら、Vine 5.1 の X 関係のスクリプトにおかしな箇所を 見つけてしまいました。もしかすると、そのせいかもしれません。 原因は別にあるのかもしれませんけれど。 まず、原因とは関係なさそうな些細な点から。 1) ~/.xwm.msgs は X 起動のたびに初期化されるべきだと思うのですが、 それが行われていません。そのため、.xwm.msgs がどんどん大きく なってしまいます。 2) /etc/X11/xinit/xinitrc.d/setime.sh から、その一。 IMSTYLE=${HOME}/.im_style ---- (中略) ---- if [ -f "${IMSTYLE}" ]; then IM=`cat $IMSTYLE` WNN8_FRONT_END=kinput2 WNN7_FRONT_END=kinput2 WNN6_FRONT_END=kinput2 case "${IM}" in *wnn8le) WNN8_FRONT_END=wnn8le ---- (中略) ---- case "${IM}" in wnn8*|Wnn8*) echo "Wnn8 with ${WNN8_FRONT_END}, server=${WNN8_SERVER}" >> ${LOG} setime wnn8${WNN8_FRONT_END} >> ${LOG} ;; これだと ${HOME}/.im_style が存在して wnn8le だった場合、 setime の行が setime wnn8wnn8le >> ${LOG} になってしまわない でしょうか。実際には、大部分の方のところで ${HOME}/.im_style は 存在しないでしょうから、IM=${XIM_PROG} の方が使われて (と言うか WNN8_FRONT_END は無定義のままで)、問題にはならないでしょうけれど。 # ${HOME}/.im_style って、どういうときに作られるんでしたっけ。 3) /etc/X11/xinit/xinitrc.d/setime.sh から、その二。関数ではなく、 シェルスクリプトの setime が実行されている。 同じ場所ですが、こちらはかなり重大だと思います。 case "${IM}" in wnn8*|Wnn8*) echo "Wnn8 with ${WNN8_FRONT_END}, server=${WNN8_SERVER}" >> ${LOG} setime wnn8${WNN8_FRONT_END} >> ${LOG} ;; これ以後に呼ばれる setime skk とか setime scim の setime は 皆そうですが、この行以前に source /usr/share/vine/imelib は 行われていても、/usr/share/vine/vinelib は読み込まれていない ので、シェル関数の setime ではなく、シェルスクリプト /usr/bin/setime が呼ばれてしまっています。その結果、この setime 以後に設定される 環境変数は、サブシェルで設定されるため、親プロセスに反映されず、 捨てられてしまいます。 # Vine 4.2 までは、/etc/X11/xinitrc や Xsession がログイン # シェルとして実行されていたので、この問題が起きませんでした。 それでは、gnome-terminal などで echo $XMODIFIERS を実行すると、 @im=SCIM と出力されるのは、何故なのか? どうやら、こうした 変数は、/etc/profile --> /etc/profile.d/ime.sh 経由で 設定されているようです。村上さんのところで ~/ine/system/ime で WNN8_SERVER=localhost と指定しているのに、gnome-terminal から setime status を実行すると、WNN8_FRONT_END= や WNN8_SERVER= などと、値がなくなってなってしまうのは、そのためだと思います。 /etc/profile.d/ime.sh に WNN8_FRONT_END や WNN8_SERVER を export している部分がありませんから。 もしかすると、/etc/X11/xinit/xinitrc.d/setime.sh でシェル スクリプトの setime を呼んでいるのは、ミスではなく、意図的 なのかもしれません。そうだとしたら、/etc/profile.d/ime.sh で WNN8_FRONT_END と WNN8_SERVER を export し忘れたという ことなのかも。 # X 端末エミュレータが起動するシェルはログインシェルではない # わけでしょう。だったら、普通は /etc/profile を読み込まない # はずです。それなのに、端末エミュレータに /etc/profile --> # /etc/profile.d/* の設定が反映しているように見えます。 # Vine 4.2 までは xinitrc や Xsession がログインシェルとして # 実行されていたので、X ターミナル・エミュレータに # /etc/profile 以下でやっている設定が反映するのも、納得できた # のですが、Vine 5.x の場合はどういう仕組みになっているのでしょうか。 わたしが X 関係のスクリプトについて気がついたのはこれぐらいです。 それでは、村上さんがどうすればよいかですが、取り合えず、 /etc/X11/xinit/xinitrc.d/setime.sh の source /usr/share/vine/imelib を # source /usr/share/vine/imelib source /usr/share/vine/vinelib としてみたら、どうなるでしょうか。上の 3) が原因なら (つまり、 環境変数の問題なら)、これで直るのではないかと思います。 これをやると、~/.xwm.msgs に余計なゴミが出るようになります。 ですから、もっと上手な指定の仕方というか、上手な指定場所が あるのでしょうけれど。 あるいは、setime.sh はいじらず、/etc/X11/xinit/xinitrc.d/setime.sh に [ -n "$WNN8_FRONT_END" ] && export WNN8_FRONT_END [ -n "$WNN8_SERVER" ] && export WNN8_SERVER の二行を付け加えてもよいかもしれません (ほかにも環境変数を追加 しなければならないのかもしれませんが)。 さて、村上さんのメールに戻ります。まずはこちらから質問。 Vine 4.2 からのアップグレードということですから、Vine 5.1 は 32 bit 版なのですね。 前のメール [vine-users:080103] ですが、 > > wnn7egg での、Emacs での漢字変換、 > scim-wnn を入れて、コンソールでの漢字変換は出来ています。 これは、Wnn8 と wnn7egg や scim-wnn を組み合わせて使える ということですか。 [vine-users:080105] から > > $ ps ax|grep -i wnn > 5495 ? S 0:00 /usr/lib/im/httx -if Wnn8LE -lc_basiclocale > ja_JP -xim htt_xbe > 5496 ? Sl 0:00 htt_xbe -if Wnn8LE -lc_basiclocale ja_JP > 5689 ? S 0:00 WnnPaletteAux > 6678 pts/1 S+ 0:00 grep -i wnn サーバの方も動いていることを確認してください。FreeWnn では jserver と言いましたが、Wnn8 でも同じ名前ですか。 > .xsession-errors ですが、X を落とした後、名前を変更し、再度 startx し > た所、出来ていませんでした。 Vine 5.1 では、startx で X を起動した場合 .xsession-errors に 何も出力しないようです。 > 古い記述を見ると、 > ------------------------------- > Warning: No symbols defined for <SYRQ> (keycode 92) > Warning: No symbols defined for <II65> (keycode 101) > Warning: No symbols defined for <BRK> (keycode 114) > Warning: No symbols defined for <FK13> (keycode 118) > Warning: No symbols defined for <FK14> (keycode 119) > Warning: No symbols defined for <FK15> (keycode 120) 悪いけれど、これはパス。でも、たぶん、今度の問題には関係ない だろうと思います。 ただ、Gnome の「システム」→「設定」→「ユーザ向け」→ 「キーボード・ショートカット」あたりで Control-Space が ほかの機能に割り当てられていないか、調べた方がよいでしょうね。 それから、xev コマンドを使って、Control キーが Control として、 Space キーが Space として、ちゃんと機能しているかどうか、 確かめることも。 > $ more .xwm.msgs > Selecting IME ... Wnn8 with le, server=localhost > setting up wnn8... > WNN8_FRONT_END: le > Configuration finished. > A new configuration is effective on new shells. > To effect this configuration to all applications, You should restart X > Window System. 一応、IME の起動に成功しているみたいですね。しかし、普通は この下の方のメッセージは日本語になるのではないでしょうか。 違いましたっけ。/etc/sysconfig/i18n で (ユーザ個人ではなく) システムの LANG を C になさっているということはありませんか。 もしそうだとすると、Vine の X 関係スクリプトは日本語 IME を 起動してくれないはずなのです。/etc/X11/xinit/xinitrc.d/setime.sh の 記述がそうなっていますから。それで、この setime.sh あたりを 書き変えていらっしゃるのではないかと思うのですが、いかがでしょうか。 あるいは、ご自分で作った X 関係のスクリプトをお使いになって いるとか。もしそうなら、その書き変えたり、作ったりした部分が Vine 4.2 では有効でも、Vine 5.1 では不適当なのかもしれません。 -- 長南洋一