Windows
Linux
CentOS
SSH
VcXsrv

(CentOS/RHEL6.x向け)VcXsrv・MobaXterm(・Xming)を利用してWindowsからLinuxサーバのGUIソフトで日本語入力を行う

More than 1 year has passed since last update.

導入

WindowsからCentOSなどのLinuxサーバにSSHで接続してGUIソフトをX11Forwardingで起動した場合、そのままでは日本語が入力できません。ここでは特にCentOSなどRHEL系サーバでの設定方法を紹介します。但し、CentOS 6.7 + VcXsrv・MobaXtermでの動作確認になりますので、5.x/7.x系、RHEL系以外での動作確認はしていません。また、ここではサーバ側の日本語入力にiBusを使っていることが前提です。(6.x系ではデフォルトでibus-anthyっぽいので大丈夫だと思います)2つのXクライアントで動いたのでXmingでも大丈夫だと思います。

設定方法

tcshなどC Shell系のシェルをログインシェルとして使っている場合、.tcshrcなどに次の文を加えます。

.(t)cshrc
setenv GTK_IM_MODULE xim
setenv QT_IM_MODULE xim
if ( $?XMODIFIERS ) then
else
    setenv XMODIFIERS @im=ibus
    ibus-daemon -drx
endif

BashなどBourne Shell系を使っている場合は次のように入力するといいと思います。但し、動作確認はしていません。

.bashrc
export GTK_IM_MODULE=xim
export QT_IM_MODULE=xim
if [ -z "$XMODIFIERS" ]; then
    export XMODIFIERS=@im=ibus
    ibus-daemon -drx
fi

追記: いつも接続するサーバでいつの間にかできなくなっていましたが、ibus-daemon -dxの部分をibus-daemon -drxに直すと再びできるようになりました。従って、上のシェリスクリプトを修正しました。

仕組み

正直に言ってあまり分かっていないです。1・2行目はximの代わりにscimuimにしろっていうサイトもあるのでximでダメなら試行錯誤してください。3行目以降はLinux(iBusを使用しているもの)から接続した場合にiBusがダブらないようにするための設定です。iBus以外を使用している場合は1・2行目も含め適宜変更してください。

1・2行目ではそれぞれGTK_IM_MODULEQt_IM_MODUleという名前の環境変数にximという値をセットします。3行目以降ではXMODIFIERSという環境変数に値がセットされていなければ値をセットし、ibus-daemonを起動します。iBusを使用しているLinuxから接続する場合は既にセットされているようなので、省いています。

今までで入力できてたのにいつの間にかできなくなった時(追記)

シェルで

$ ibus-daemon -drx

と入力してみてください。
追記: Python2.7をソースビルドするとできなくなることがあります。(ibus-setup &でエラーが出て設定画面が出てこない)

ログアウトしても端末が終了しない

原因不明です。

ちょこっと参考にしたもの

1.WindowsでXサーバを立てる - ふなWiki
他にも数サイト参考にしています。(うまく検索に引っかからないです)