The native desktop experience for Windows Subsystem for Linux.
A native desktop GUI for managing WSL distributions, containers, and resources.
- Dashboard — Per-distro resource overview with CPU, memory, disk, and swap stat cards. Color-coded progress bars (green/yellow/red). Environment summary showing running distros, containers, and images. Auto-refresh toggle. Cards wrap responsively when the window is resized.
- Distributions — List, start, stop, restart, set default, install from the online catalog, and unregister WSL distributions.
- Containers — List, start, stop, restart, delete, and view logs for WSL containers via
wslc.exe. - Images — List, pull, delete, and prune unused container images via
wslc.exe. - Settings — Structured editor for
.wslconfig(WSL) andsettings.yaml(wslc) with dropdowns, toggles, and checkboxes for every supported key.
- Windows 11
- .NET 8 SDK (for building from source)
- WSL with at least one distribution installed
- wslc.exe for container and image management (optional — Dashboard and Distributions work without it)
dotnet build src/WslDesktop/WslDesktop.csprojThen launch for debugging:
winapp.exe run src/WslDesktop/bin/Debug/net8.0-windows10.0.26100.0/win-x64 --detachProduces a runnable WslDesktop.exe with no .NET runtime needed on the target machine:
dotnet publish src/WslDesktop/WslDesktop.csproj -c Release -r win-x64 --self-containedThe exe and all dependencies are in:
src/WslDesktop/bin/Release/net8.0-windows10.0.26100.0/win-x64/publish/src/
├── WslDesktop/ # WinUI 3 application
│ ├── Views/ # XAML pages
│ ├── ViewModels/ # MVVM view models
│ ├── Services/ # Service implementations (wsl.exe / wslc.exe wrappers)
│ ├── MainWindow.xaml # Navigation, custom title bar
│ ├── App.xaml # DI container, converter registration
│ └── WslDesktop.csproj # Project file, NuGet dependencies
└── WslDesktop.Core/ # Class library (no WinUI dependency)
├── Services/ # Service interfaces
├── Models/ # Domain models
└── *Converter.cs # XAML value convertersWinUI (Views)
↓
ViewModels (MVVM)
↓
Service Interfaces (Core)
↓
Service Implementations (WSL CLI / wslc CLI)
↓
wsl.exe / wslc.exe- Two projects:
WslDesktop(WinUI app) +WslDesktop.Core(class library). - UI knows nothing about CLI or WSL internals — those details live in service implementations.
- DI wired in
App.xaml.csviaMicrosoft.Extensions.DependencyInjection. - Navigation via
NavigationViewinMainWindowwithFrame.Contentswapping.
WSL Desktop is an unofficial community project. It is not affiliated with, endorsed by, or sponsored by Microsoft. "WSL" and the WSL penguin logo are trademarks of Microsoft Corporation. This project uses wsl.exe and wslc.exe CLI tools but is independent of their development.
Built on WinUI 3, CommunityToolkit.Mvvm, and the Windows App SDK.





