WSL - Windows Subsystem for Linux
August 8, 2026 ยท View on GitHub
glxinfo
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: Microsoft Corporation (0xffffffff)
Device: D3D12 (NVIDIA GeForce RTX 3070 Laptop GPU) (0xffffffff)
Version: 21.0.3
Accelerated: yes
Video memory: 15138MB
Unified memory: no
Preferred profile: core (0x1)
Max core profile version: 3.3
Max compat profile version: 3.1
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.0
OpenGL vendor string: Microsoft Corporation
OpenGL renderer string: D3D12 (NVIDIA GeForce RTX 3070 Laptop GPU)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 21.0.3
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 3.1 Mesa 21.0.3
OpenGL shading language version string: 1.40
OpenGL context flags: (none)
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 21.0.3
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
Setup Steps
One of these steps is obviously specific to the (Lenovo laptop) hardware it was tested on.
You will need to adapt it to your hardware.
- Create an installer USB stick with Microsoft's media creation tool. Don't use the insider's edition of Windows 11
- Start the Windows install and when shown the question Choose what to keep select Nothing
- After installation, install all Windows updates and restart
- Windows home version doesn't include Bitlocker
- Open https://github.com/microsoft/wslg and install the NVIDIA GPU driver for WSL (get CUDA driver, download GeForce driver)
- Open https://www.lenovo.com/us/en/software/vantage and install Lenovo Vantage and install available updates and reboot if needed.
- Set Windows' timezone
- Install WSL 2
- Open Administrator CMD prompt
wsl --install -d Ubuntu-20.04- Restart Windows, WSL 2 setup continues automatically after restart.
sudo apt update; sudo apt upgrade- Shutdown WSL 2 with
wsl --shutdown - Start WSL 2 again with
bash sudo apt install gedit mesa-utils- Shutdown WSL 2 with
wsl --shutdown - Start WSL 2 again with
bash - Check output of
glxinfo -B
Some extra packages are needed to show the correct output with glxinfo,
those look like they were installed as a dependency of gedit. (perhaps mesa packages)
Enable systemd in WSL 2
https://github.com/damiongans/ubuntu-wsl2-systemd-script
Clone that repository on the Windows host side, then change basic.target to multi-user.target in start-systemd-namespace and enter-systemd-namespace.
To enable systemd in WSL 2, run bash ubuntu-wsl2-systemd-script.sh on the Windows host side.
The next time you run bash, it'll show a line about enabling systemd.
After this run sudo systemctl set-default multi-user.target in WSL 2.
Ensure there will be X0 socket in /tmp/.X11-unix
Create /etc/rc.local and put the following content in it:
#!/bin/bash
ln -s /mnt/wslg/.X11-unix/X0 /tmp/.X11-unix
Then make it executable with chmod +x /etc/rc.local.
Now either run that ln command manually or restart WSL 2 as shown above.
Enable SSH Password Authentication
Edit /etc/ssh/sshd_config and set PasswordAuthentication yes.
Enable ssh with "sudo systemctl enable --now ssh".
Install xpra
Now you can install xpra server in WSL 2 and the xpra client on Windows.
You can see the WSL 2 IP address with ip a in WSL 2.