以前の記事で、Windows10のWSL2で Ubuntu 20.04 LTS が使えるようにした。そこで、「X Server」ソフトをインストールし、Xアプリの実行を試したので備忘録を残す。

X410のインストール
Windows用の X Server ソフトは、以前の記事で紹介したWSLの時は VcXsrv で試したが、今回は「X410」を使ってみる。X410は、Microsoftストアからダウンロード&インストールできる有償アプリで5,850円だが、今なら80%OFFの1,150円(税込み)で購入できる。
Microsoftストアで「X410」を検索しインストール。

- Microsoftストアで購入したこのアプリは、最大 10 台 の Windows 10 デバイスにインストールできる。
パブリックアクセスを許可する
X410を初めてインストールした時は、セキュリティ上の理由から、127.0.0.1などのループバックアドレスからの接続のみが許可となっている。WSL2では下記記事で紹介したように、Windowsマシンとは別のネットワークが割り当てられる。

なので X410 サーバは、他ネットワークからのアクセス許可が必要。X410を起動して、右クリックメニューから、[Allow Public Access]をクリックし有効にする。

ただし初回は、以下のウィンドウが表示されるので [OK] する。

続いて、「パブリックネットワーク」をチェックし [アクセスを許可する] を押して許可する。

DISPLAY環境変数の設定
X Serverの接続先を、DISPLAY環境変数にセットしておく必要がある。通常は同じマシン内の場合は「localhost」を利用するのだが、前述したようにWSL2では独自ネットワークの別IPアドレスとなっているので、WSL2側からこのループバックアドレスを指定してもWindows側の X Server には届かない。
そこで、母艦となっているWindowsに割り当てられたIPアドレスを直接使用してもよいのだが、WSL2の「/etc/resolv.conf」ファイルに自動的に追加される内部IPアドレスを使用する。このアドレスは、Windowsを再起動するか、WSL2を再起動すると変更される場合がある。したがって、そのファイルからアドレスを動的に抽出し、それをDISPLAY環境変数に割り当てておく。下記コマンドを、~/.bashrc に追加する。
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0
再ログインして、環境変数が設定されているか確認。
$ echo $DISPLAY
172.30.32.1:0.0
X11アプリケーションの動作確認
必要なパッケージのインストール
WSL2から下記コマンドで関連パッケージをインストール。
$ sudo apt install git build-essential libssl-dev libreadline-dev zlib1g-dev x11-apps x11-utils x11-xserver-utils libsqlite3-dev nodejs fonts-ipafont libxml2-dev libxslt1-dev
- インストール済みのものもあるが、とりあえず入れておく。
xeyesを動かす
Windows側で X410 が実行している事を確認したら、X11appsがインストールされてるので「xeyes」を起動してみる。
$ xeyes &

目玉のGUIアプリケーション(xeyes)が起動すればOK。
X410を自動起動するようにしておく
X410を毎回起動しなくて済むように、X410を自動実行するようにする。
スタートメニュー右クリックの「ファイル名を指定して実行」から、“shell:appsfolder”を実行。

アプリフォルダを開く。

スタートメニュー右クリックの「ファイル名を指定して実行」から、“shell:startup”を実行。

アプリフォルダの「X410」アイコンを、スタートアップフォルダにドラッグ&ドロップする。

これで、Windowsへのログイン時に X410 が自動起動する。
Emacs(GUI版)を試してみる
「Emacs」のインストール手順は下記記事を参照。そこではコンソール版(CUI)のEmacsは動かした。

GUI版のEmacsをWSL2から使いたい。とりあえず起動してみた。
$ emacs sample.c &
一応動いた(下記画面)。

- 漢字は、
CTRL + \キーで、一応は入力できる。 - 操作は、けっこうキビキビ動いて快適。msys2で動かす時よりも格段に速い。
- さすがにWindowsファイルのドラッグ&ドロップは出来ないようである。
WSL2コンソールからemacsclientで呼び出す
私が使っている初期設定ファイルは、GUIで起動していればServerモードを有効にしているので、下記のように、emacsclientコマンドで呼び出す事ができる。(emacsclientは常駐しているソフトを呼び出すだけなので起動が速い)
$ emacsclient -n sample.c
.bashrcに下記のようにalias定義して「e」コマンドで起動できるようにする。
alias e='emacsclient -n'
パソコンのログイン時に、GUI版 Emacsを自動起動して常駐するようにしておけば、「e」の入力だけで高速起動できるので便利。

補足
- Emacsの日本語入力など、まだ調整が必要なようなので、もう少し整備して使いやすくできたら報告していきたい。
2020/7/15追記
git-guiとgitkのGUIアプリを、このXサーバで動かしてみた。

関連記事




コメント