以前の記事で、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サーバで動かしてみた。
コメント