長南です。久しぶりに長文です。
村上さん、返事はどうぞごゆっくり。お帰りになってからで結構です。
少し調べてみたら、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 では不適当なのかもしれません。
--
長南洋一