English | 中文
ExWSLC is a native Windows desktop manager for WSL Container, the container runtime built into current WSL releases. It manages Linux containers, images, networks, volumes, registries, logs, exec sessions, and resource statistics without requiring Docker Desktop.
WSL Container and its SDK are currently in preview. ExWSLC checks the installed CLI and SDK at startup and isolates preview-specific behavior behind a runtime interface.
Download the latest self-contained package from GitHub Releases:
win-x64for most Intel and AMD Windows PCs.win-arm64for Windows on Arm devices.
Extract the archive and run ExWSLC.exe. A separate .NET installation is not required for release packages.
- WPF-UI 4.3 Fluent desktop UI with Mica, system/light/dark themes, English and Simplified Chinese.
- Dedicated workspaces for containers, images, networks, volumes, and settings.
- Split container workbench with a searchable list, creation form, quick lifecycle actions, and a detailed selected-container view.
- Container creation with CPU, memory, GPU, ports, environment, network, user, workdir, and volume options.
- Container details for logs, resource usage, networking, mounts, configuration, and raw inspect output.
- Start, graceful stop, force stop, restart, remove, export, live log following, one-shot exec, and Windows Terminal access.
- Pull, build, import, load, save, tag, push, inspect, remove, and prune images.
- Create, inspect, remove, and prune networks; create, remove, and prune named volumes.
- Cancellable runtime operations, registry login through
--password-stdin, and native WSLC settings access. - Persistent application preferences for refresh interval, language, and theme.
The navigation hierarchy and Fluent master-detail composition are inspired by ExHyperV. ExWSLC's views, resources, and product assets are implemented from scratch for the WSL Container workflow.
- Windows 11 with WSL installed and updated to a release that includes
wslc.exe(tested with WSL 2.9.3). - .NET 10 SDK to build from source. Release packages are self-contained.
- Windows Terminal is optional and only required for interactive container terminals.
Run wsl --update and wslc version if the application reports missing components.
dotnet restore ExWSLC.sln
dotnet build ExWSLC.sln
dotnet test ExWSLC.sln
dotnet run --project src/ExWSLC.csprojPublish a self-contained package (replace <RID> with win-x64 or win-arm64):
dotnet publish src/ExWSLC.csproj -c Release -r <RID> --self-contained true -o publish/<RID>The project targets net10.0-windows10.0.19041.0.
Application settings are stored at:
%LocalAppData%\ExWSLC\settings.json
ExWSLC only persists application preferences such as language, theme, and refresh interval. Runtime inventory always comes from WSLC itself.
Safety boundaries:
- Every
wslc.exeargument is passed throughProcessStartInfo.ArgumentList; user input is never concatenated into a shell command. - Registry passwords are sent to
wslc registry login --password-stdinthrough standard input and are not written to settings, task logs, or command displays. - Destructive operations such as remove and prune require explicit UI confirmation.
- Long-running tasks can be cancelled and will try to terminate the complete child process tree.
ExWSLC follows a WPF / MVVM structure:
WPF Views → Page ViewModels → RuntimeWorkspace → IContainerRuntime → wslc.exe
↘ ITaskService
↘ ISettingsService
Startup → IRuntimeCapabilityService → Microsoft.WSL.Containers.WslcService
wslc.exe --format json is currently the source of truth for containers, images, networks, volumes, and resource statistics. Microsoft.WSL.Containers is used for prerequisite detection, version reporting, and user-initiated dependency installation. Once the preview API stabilizes, a fuller native provider can replace the CLI implementation behind IContainerRuntime.
See docs/architecture.md for more design notes.
Unit tests cover:
wslcargument mapping and command-injection boundaries.- Preview JSON field compatibility.
- Task cancellation, task state transitions, and ViewModel error recovery.
- Registry password redaction.
- Settings persistence.
- ViewModel refresh, search, and selection preservation.
- Container inspect, network, and mount parsing and loading behavior.
- Localization resources, XAML bindings, and reusable control behavior.
Run tests:
dotnet test ExWSLC.slnIssues and improvements are welcome. Please read CONTRIBUTING.md before contributing. Because WSL Container is still in preview, runtime behavior changes should include the test environment, wslc version output, and reproduction steps where possible.
Copyright © 2026 ExWSLC contributors.
Licensed under the GNU General Public License v3.0.
