如果你搜索“WSL 运行 Linux 图形程序”,很容易翻到一堆老教程:安装 VcXsrv,打开 XLaunch,防火墙放行,手动设置DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0。这些教程不是错,只是很多已经不适合现在的 WSLg 了。今天在 Windows 11 上跑 Ubuntu,装个xeyes或gedit,很多时候什么都不用配:sudo apt install x11-apps gedit -y xeyes gedit窗口会直接出现在 Windows 桌面上,能 Alt+Tab,能复制粘贴,像普通 Windows 程序一样和其他窗口排在一起。这件事表面上像“微软帮你内置了一个 X Server”。但 WSLg 真正做的事要绕一点:它不是倒退回 X11,而是把 Wayland、XWayland、Weston、PulseAudio 和 RDP 拼成了一条桥。理解这条桥,很多 WSL GUI 问题就不再玄学。从xeyes开始看协议,而不是看窗口先跑一个最老派的 X11 小程序:sudo apt install x11-apps -y xeyes再跑一个现代一点的 GTK 程序:sudo apt install gedit -y gedit两个窗口都能显示在 Windows 桌面上,但它们走的路线可能不同。xeyes是典型 X11 程序。它和 X server 说话。gedit这样的 GTK 程序,在现代 Linux 桌面上可以走 Wayland,也可以回退到 X11。在 WSLg 里,Wayland 程序通常直接和 Weston 这个 compositor 交互;X11 程序则先经过 XWayland,再交给 Weston。你可以看一下环境变量:echo "$WAYLAND_DISPLAY" echo "$DISPLAY" ls -la /mnt/wslg在 WSLg 正常工作时,WAYLAND_DISPLAY和DISPLAY往往都存在。很多人看到DISPLAY就以为“还是 X11”。其实这个变量更多是在照顾旧程序。新的主路是 Wayland,X11 通过 XWayland 兼容。这个图可以帮你纠正一个直觉误差:WSLg 不是只维护一条“X11 到 Windows”的路。现代应用和旧应用可能从不同入口进来,但最后都要经过 Weston 这个合成器,再被投递到 Windows 侧。X11 的强项:把显示当成网络服务X11 很老,但它的设计有一种今天看仍然大胆的味道。在 X11 里,