Skip to content

EndoTheDev/WSL-Desktop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WSL Desktop

The native desktop experience for Windows Subsystem for Linux.

A native desktop GUI for managing WSL distributions, containers, and resources.

Features

  • 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) and settings.yaml (wslc) with dropdowns, toggles, and checkboxes for every supported key.

Screenshots

Dashboard Distributions Containers
Images Settings — WSL Settings — Containers

Prerequisites

  • 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)

Getting Started

Build from source

dotnet build src/WslDesktop/WslDesktop.csproj

Then launch for debugging:

winapp.exe run src/WslDesktop/bin/Debug/net8.0-windows10.0.26100.0/win-x64 --detach

Publish self-contained

Produces 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-contained

The exe and all dependencies are in:

src/WslDesktop/bin/Release/net8.0-windows10.0.26100.0/win-x64/publish/

Project Structure

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 converters

Architecture

WinUI (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.cs via Microsoft.Extensions.DependencyInjection.
  • Navigation via NavigationView in MainWindow with Frame.Content swapping.

Disclaimer

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.

License

MIT

About

Docker Desktop for WSL/WSLC

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages