2017年6月20日火曜日

X から日本語入力(fcitx の起動)

今現在、日本語入力の環境を整えたのは gemini / cancer の2つだ。
これらを、Windows(pegasus)上の teraterm / VcXsrv から利用している。
イメージ的には以下のような状態だ。
pegasusからgemini/cancerを利用


そのため、gemini 上で動く virt-manager と、cancer 上で動く virt-manager、いずれも同じように pegasus には表示されるが、別アプリケーション(別マシンで動いているアプリケーション)だ。
それぞれのアプリケーションに日本語入力を行うためには、それぞれに fcitx と mozc が必要だと思…う…。

というわけで確認をしてみる。

まず、gemini / cancer で fcitx が動いていたら止める。
$ ps -ef | grep fcitx | grep -v grep
動いているプロセスを kill すること。

両方(gemini / cancer)のsshセッションで、環境変数 XMODIFERS が設定されているか確認。
$ env | grep XMODIFIERS

両方で virt-manager を起動し、それぞれ仮想マシンの設定を適当に開いておく。
$ virt-manager
まだ現時点では、日本語入力は出来ないはずだ。

この状態で、gemini で fcitx を起動する。
(gemini) $ fcitx

起動が出来たら、gemini / cancer 両方で起動した virt-manager に日本語入力を試してみる。
gemini のウィンドウには入力可能だけど、cancer のウィンドウには入力出来ない。

では、cancer 上で fcitx を起動してみる。
(cancer) $ fcitx
エラーが発生する。エラーメッセージは
--
(ERROR-NNNNN /build/fcitx-PSoVA1/fcitx-4.2.9.1/src/frontend/xim/xim.c:240) XIM  開始エラー: fcitx という他の XIM が動いていませんか?
(ERROR-NNNNN /build/fcitx-PSoVA1/fcitx-4.2.9.1/src/lib/fcitx/instance.c:440) Exiting.
--
というものだ。(NNNNN は fcitx のプロセスNo.のようだ)
cancer 上では fcitx は動かしていないにも関わらず、fcitx が動いていないか?というエラーが出るのだ。
しかし、エラーが出たにも関わらず、この状態で cancer 上で稼働させている virt-manager には日本語入力が出来る。
これは一体どういうことなんだろうか…?

今現在は、gemini / cancer いずれも fcitx は稼働している。
$ ps -ef | grep fcitx | grep -v grep

mozc は?
$ ps -ef | grep mozc | grep -v grep
両方のマシンで mozc_server が動いているようだ。

もう一度、cancer 上で fcitx を停止(kill)しておこう。
fcitx を kill したら、mozc_server も停止したはずだ。念のために確認し、もし mozc_server が稼働していたら kill しておこう。

これで今は、
  • gemini : fcitx 稼働 / mozc_server 稼働
  • cancer : fcitx 停止 / mozc_server 停止
の状態になった。
今の状態で、それぞれの virt-manager に日本語入力が可能か再確認を。
予想通り、gemini 側には入力可能、cancer 側には入力不可、だ。

では、cancer で mozc_server だけを起動してみたら…?
(cancer) $ /usr/lib/mozc/mozc_server &
(cancer) $ ps -ef | grep mozc | grep -v grep
これでも入力は出来ないな…。

cancer で fcitx を起動すれば、日本語入力は可能になる。
(相変わらずエラーは表示されるが…)

となると、先程出た
--
(ERROR-NNNNN /build/fcitx-PSoVA1/fcitx-4.2.9.1/src/frontend/xim/xim.c:240) XIM  開始エラー: fcitx という他の XIM が動いていませんか?
(ERROR-NNNNN /build/fcitx-PSoVA1/fcitx-4.2.9.1/src/lib/fcitx/instance.c:440) Exiting.
--
というエラーはどういう意味なんだろうか?

恐らくは、「gemini の fcitx」→「pegasus の VcXsrv」というセッションがあるのに、「cancer の fcitx」→「pegasus の VcXsrv」というセッションを作ろうとして、cancer が「あれ?pegasus の VcXsrv、既にセッションあるよ?」と言っているんだと思うんだが…。
であれば、cancer 上の virt-manager に対して、gemini の fcitx を使って日本語入力出来てもいいような気がするんだが…。

良くわからない。
まぁとりあえず、必要に応じて fcitx を起動すれば、とりあえず日本語入力出来るので、一旦はコレでヨシとしておくか…。

日本語入力に関しては、Xサーバ側をWindowsのVcXsrvで実装しているので、Linux Xサーバ(+GNOME)とかだったらどうなるんだろうか?
ちょっと気になる。
次回は、Ubuntu Desktop を作って、そちらから gemini / cancer にログインしてみることにしよう。

0 件のコメント:

コメントを投稿