vine-users ML アーカイブ



[vine-users:080107] Re: wnn8le 起動について

  • From: 長南洋一 <cyoichi@xxxxxxxxxxxxxxx>
  • Subject: [vine-users:080107] Re: wnn8le 起動について
  • Date: Sun, 21 Mar 2010 16:21:19 +0900 (JST)
長南です。久しぶりに長文です。

村上さん、返事はどうぞごゆっくり。お帰りになってからで結構です。

少し調べてみたら、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 では不適当なのかもしれません。

-- 
長南洋一