Skip to content
WSLNews Published Updated 3 min readViews unavailable

WSLg Ships, Letting Linux GUI Apps Run Directly on the Windows Desktop

Announced at Build 2020 and previewed to Insiders in spring 2021, WSLg let a Linux GUI application's window appear on the Windows desktop like any native app.

Announced at Build 2020 alongside WSL2’s new GPU compute capabilities, WSLg (Windows Subsystem for Linux GUI) reached Windows Insiders as its first public preview via Windows 10 Insider Preview Build 21364, released April 21, 2021, and was more broadly showcased at Microsoft’s Build 2021 conference.

What WSLg actually let people do

Before WSLg, running a Linux GUI application inside WSL required a separately configured X server on the Windows side and manual environment configuration — an extra setup step most casual users never bothered with. WSLg removed that barrier entirely: a Linux GUI application, once launched from a WSL terminal, simply appeared as its own window on the Windows desktop.

What was actually running to make this possible

WSLg bundled a complete Wayland compositor, an X server for compatibility with non-Wayland-native applications, and a PulseAudio server, all running inside the Linux environment and tunneling rendered output to Windows over an RDP-based transport — substantial infrastructure made to feel invisible to the end user.

Why this was more than a convenience feature

Prior to WSLg, developers wanting to use Linux-native GUI development tools, or run Linux graphical applications for testing, generally needed a separate virtual machine or dual-boot setup entirely. WSLg meaningfully expanded what “just use WSL” could cover, beyond command-line and server-style workloads into full graphical application use.

How this built directly on WSL2’s architecture

WSLg’s compositor and audio server run as genuine processes inside the WSL2 Linux kernel environment — another capability, like GPU compute, that depended entirely on WSL2’s real-kernel architecture rather than being something WSL1’s syscall translation layer could have supported.

The specific open-source components underlying the preview

The initial preview’s architecture, as later documented in detail by Microsoft, was built around Weston (the Wayland project’s own reference compositor) extended with an RDP backend using RAIL (Remote Application Integrated Locally) technology to remote individual application windows rather than an entire virtual desktop, with the Windows side handled by Windows’s own built-in mstsc.exe Remote Desktop client running invisibly in the background. None of this required end users to configure anything themselves — the entire stack was designed to start automatically the moment a GUI application was launched from a WSL terminal.

Why Insider preview timing mattered for this specific feature

Releasing GUI application support first to Windows Insiders, rather than directly to general availability, gave Microsoft a real-world testing period across a genuinely wide range of graphics hardware and driver combinations — an area where compatibility issues are notoriously hard to fully anticipate in internal testing alone, given how much display and GPU driver behavior varies across the diverse hardware the broader Windows installed base actually runs on.

From Insider preview to broad general availability

Following its initial April 2021 Insider preview, WSLg’s GUI application support subsequently became broadly available and was later folded into the WSL 1.0 general-availability release distributed through the Microsoft Store, extending it to Windows 10 as well as Windows 11 rather than remaining exclusive to whichever Windows version had originally hosted the earliest preview builds.

The build behind the preview is itself public

Microsoft publishes the actual system-distro build that makes WSLg work as open source, in the microsoft/wslg GitHub repository — including the Dockerfile and supporting tooling used to assemble Weston, XWayland, and PulseAudio into the ext4 VHD image Windows loads as WSLg’s system distro. That repository, rather than just the announcement blog posts, is the authoritative reference for exactly which component versions any given WSLg release actually bundles.

Related:

Sources:

Comments