Windows に Xサーバーをインストールし、WSL2 上で実行した GUI アプリを表示できるようにする方法です。
環境
- Windows 10
- WSL2:Ubuntu 20.04
Xサーバーのインストール
Windows にXサーバーをインストールします。
私は以下のページを参考に VcXsrv
を入れました。
他には MobaXterm
も良さそうですね。
あとは、ファイアウォールの設定も許可する必要があります。
設定完了後、VcXsrv
起動時に許可を求める画面が表示されるので、そこで全て許可しました。
WSL2 側の設定
Linux ではおなじみの export DISPLAY=:0
では駄目なようで、IPアドレスを指定する必要があるみたいです。
以下のようにすれば IP アドレスを読み込んで環境変数をセットしてくれるようです。
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
これを毎回入力するのも面倒なので、.bashrc
に書いておけば、WSL2 起動時に自動でセットされるようです。
動作確認
VcXsrv
を、Disable access control
にチェックを入れて起動し、WSL2 上で以下のコマンドを実行して確認します。
$ xeyes
VSCode + Remote-Containers を使う場合
WSL2 上で VSCode を実行して Remote-Containers を使う場合、WSL2 の DISPLAY
の値を Retemo-Containers 側にも引き継げば、Retemo-Containers でも GUI の表示が可能です。
{
"runArgs": [
"-e", "DISPLAY=${env:DISPLAY}",
],
"mounts": [
"source=/tmp/.X11-unix/,target=/tmp/.X11-unix/,type=bind",
],
}