Windows 10 を host OS, Ubuntu を Gues OS で,virtual box で動かしている.X Server を Windows で動かそうとして,いろいろつまずいた.最終的にはこんな感じ.
まず,X Server はいろいろ選択肢があるようだが,とりあえず Cygwin X server にしてみた.普通のCygwinの部品のインストーラに,Xに関するものも入っている.https://x.cygwin.com/docs/ug/setup.html#setup-cygwin-x-installing の項目15のところに必要なもののリストがある.
ホスト の /etc/hosts に,virtualbox を書いておく.
127.0.0.1 virtualbox
ホスト の ~/.ssh/config に,以下のセクションを入れる.
Host virtualbox User (ゲストのユーザ名) Port 19022 ForwardX11Trusted yes ForwardX11 yes
ゲスト の /etc/ssh/sshd_config
X11Forwarding yes X11DisplayOffset 10 X11UseLocalhost no
virtualboxマネージャの 設定→ネットワーク→高度→ポートフォワーディングに,(ssh,TCP,,19022,,22) を追加.
ログインする時には
$ DISPLAY=:0 ssh virtualbox
これでログインした状態でXのクライアント,たとえば xlogo を打ってみると,ちゃんとX server に表示される.ログイン時に自動的に環境変数DISPLAYに (ホスト名):10.0 が設定されている.
次は,日本語を入力したい.リモート側では,環境変数 XMODIFIERS に値 @im=fcitx が設定されている必要があるようだ.この状態で,リモートで,fcitx コマンドを実行する.コマンド自体は一瞬で返ってくるが,fcitx のデーモンプロセスが起動される.なお,VirtualBoxのウィンドウ(?)で fcitx が動いていても,それは別物なので,ログインしたターミナルでも動かさなくてはいけない.さらに,(XMODIFIERSはもちろん設定されたままで) X クライアント,たとえばemacsを動かすと,そこで日本語を入力することができる.(これらは,ログインした時に自動的に起動するように設定できるはずだと思うが,まだ調べていない.下手に設定すると,VirtualBoxのグラフィカル環境と衝突するのではなかろうか)
keywords: virtualbox, port forwarding network