@ledsun blog

無味の味は佳境に入らざればすなわち知れず

Windows11のWSL2でchromedriverを使うとWindows上でchromeが起動したように見えるわけ

WSL上のchromeをselenium-webriverで動かすつもりだった俺は - @ledsun blogでWSL上にChromeをインストールして、WSL上のchromedriverを実行したところWindows上でChromeが起動しました。 この不思議さの理由です。

結論。Windows11のWSLはLinuxGUIアプリケーションをサポートしています。

WSLのLinuxGUIアプリケーションサポートについては The Initial Preview of GUI app support is now available for the Windows Subsystem for Linux - Windows Command LineでWSLgと言う名称で紹介されています。

Windows10では、ChromeDriver in WSL2 | Greg Briseboisで次のように紹介されているように、

Download and install VcXsrv in Windows. Once installed, run xlaunch.exe (from the VcXsrv folder in Program Files). You can leave most of the settings as default, but make sure to check “Disable access control”. Allow it through the firewall if prompted when you first run it.

In Linux the DISPLAY environment variable tells GUI applications at which IP address the X Server is that we want to use. Since in WSL2 the IP address of Windows land is not localhost anymore, we need to set DISPLAY to the correct IP address:

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0 I recommend you put this in your .bashrc or whatever the equivalent is for your distro.

Now if you run echo $DISPLAY you should get something like 172.17.35.177:0.0.

Windows上にX Serverを起動して同様のことを実現していました。

WSLgは同様にX Serverを介してLinux上のGUIアプリケーションの画面をWindowsのホスト側で表示する機能が公式にサポートされたものです。 WSLgは以前の方法とことなりX ServerがインストールされているのはWSLです。 WSL2のディストリビューションは2重になっているそうです。 通常ユーザーから見えているのはUser Distro。僕はここにUbuntuを使っています。 その下にWSLg System Distroというのがいます。このなかでX Serverが動いています。 User DistroはこのX Serverと接続します。 X SerevrのなかにWindowsのホストOSと接続する魔法の仕組みが隠されています。 まあ、よくわかっていなので、前述の記事を読んでください。

WSLgはいつから正式サポートされたのでしょうか?

Windows 11 (build 22000.*) or Windows 11 Insider Preview (builds 21362+) GitHub - microsoft/wslg: Enabling the Windows Subsystem for Linux to include support for Wayland and X server related scenarios

Windows11では、なにもしなくてもWSLでLinuxGUIアプリケーションが動かせます。

参考