プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2022/01/16

WSL2 で GUI を表示する

event_note2022/01/15 17:15

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",
	],
}