WSL2でX Server(VcXsrv)を使いたい!


背景

WLS2上でのX Serverの設定について解説します。
何番煎じという感じですが、インターネット上の記事を参考に設定したところ、自分の環境では動かなかったので、自分なりのやり方を記しておきます。

必要なもの

X Serverの設定

VcXsrv設定は以下のページがとても丁寧に解説されているので、ご参照ください。VcXsrvの設定ですがXmingでもほとんど同様のはずです。
WSL2におけるVcXsrvの設定 #VcXsrvの自動起動設定

WSL2の設定

ここがインターネット上に載っているやり方では、自分の環境では動かなかった箇所になります。
インターネット上では、環境変数DISPLAYに

  • ipconfig.exeの”イーサネット アダプター vEthernet (WSL)”のIPv4アドレス
  • /etc/resolv.confのnameserver

などを設定すると良いとありますが、自分の環境ではX Serverへの出力時に
Error: Can't open display: [IPアドレス]
となってしまいました。

そこで、ipconfig.exeのWindows側(”イーサネット アダプター イーサネット”)のIPv4アドレスを記載したところ、正常に動作しました。
シェル起動時に自動で設定するコマンドは下記です。

~/.bashrc
export DISPLAY=`ipconfig.exe | awk '/IPv4.*192.168.[0-9]{,3}.[0-9]{,3}/ {sub("\r", "", $NF); printf("%s:0.0", $NF);}'`

まとめ

Windows上でX Serverを起動しているので、当たり前といえば当たり前かもしれませんが、Windows側のIPアドレスを環境変数DISPLAYに設定することで、X Serverが動作しました。
むしろ、ほかの方々はなぜWSL2のIPアドレスを設定してX Serverが動作しているのか分かりません。。。
ご存じの方がいらっしゃいましたら、教えていただけると幸いです。