Releases: TykoDev/wslc-gui
Release list
WSL Container GUI for windows beta 0.1.0
The first public build. A Docker-Desktop-style GUI for WSL containers — one window over the
native wsl.exe and wslc.exe command surface.
The rule it's built on: the app invents no commands. Every button maps to a CLI invocation
Microsoft documents, or one your installed wslc binary proved it supports by printing it in
--help. Nothing is guessed. When it can't do something honestly, it disables the control and
tells you which verb is missing.
Before you install — this is a beta
Be clear-eyed about what has and hasn't been proven:
- 166 unit tests pass, and CI compiles the exe on a clean Windows runner. But there are no
integration or E2E tests. The executable, the WebView2 window, the system tray, the native
file dialogs and every realwsl/wslcinvocation are verified by hand. - Exercised on Windows 10 (19045) with WSL 2.9.3. Windows 11 paths are implemented and gated,
but far less travelled. wslc's command surface moves between WSL releases. The app probes--helpat runtime to
cope, but a build I've never seen may still surprise it.- It really does delete things. Unregistering a distribution destroys its filesystem; WSL
shutdown kills every running distro. Both are double-gated and ask you to type the name — but
there is no undo. Export first.
Don't point it at anything you can't afford to lose yet.
Requirements
- Windows 10 build 19041+ (x64 only — that's Deno's only Windows compile target)
- WSL 2. The container pages additionally need a WSL release that ships
wslc— check with
wslc version. Withoutwslcthe app still runs, and the Resources and Settings pages work
fully; Containers/Images/Deploy show an honest "unavailable" state. - WebView2 (ships with Edge). If it's missing, the app opens in your browser instead of failing.
Install
Two downloads — pick one:
| Download | Use when |
|---|---|
wslc-gui.exe |
Normal. Just double-click it. On first launch it fetches two WebView2 DLLs from GitHub (once), then never needs the network again. |
wslc-gui-v0.1.0-beta-offline.zip |
You're offline, air-gapped, or don't want that fetch. Unzip and run — the dll/ folder next to the exe makes launch fully offline from the very first run. |
No installer, no runtime dependencies. The exe is self-contained (~79 MB).
What's in it
-
Containers — list, stop, start*, delete*, logs, inspect, exec, prune, with live
wslc stats
(CPU and memory parsed and merged into the table). -
Deploy — Quick run with a live command preview: the exact
wslc runline assembles as
you type, and that is what gets executed. Plus Stack mode, which compiles a compose subset into
an ordered plan, shows it before running it, and exports standarddocker-compose.yaml. It
imports docker-compose and Kubernetes manifests and tells you, item by item, what it could
not honour. -
Resources — distributions (resize, move, export, import, sparse, unregister), real
ext4.vhdxpaths and sizes read from the registry, container-session disks, swap, volumes*.
Works with nowslcinstalled. -
Images — pull with tag discovery (Docker Hub + OCI v2), inspect, delete*, prune.
-
Settings — a guided
.wslconfigeditor: every documented key with its description and
default, Windows-11-only keys disabled with the reason shown, and a timestamped backup taken
before every write. -
System tray — minimize-to-tray, and Stop / Restart WSL from the context menu.
-
Capability-gated.
container start/rm, explicitpull,image rm, thevolume
lifecycle andrun --entrypointexist in the WSL container API but aren't documented CLI verbs.
The app enables them only whenwslc --helpon your machine actually lists them. If a button
is greyed out, hover it — it names the verb your build is missing. That's not a bug; it's the app
refusing to run a command it can't prove exists.
Known limitations
Honest list. None of these are bugs — they're the boundaries of what wslc can do, or of what
this build has earned the right to claim.
wslccannot build images. A compose service withbuild:and noimage:is rejected.- Private registries aren't supported. Tag discovery is anonymous; public repos only.
wslc volume pruneonly removes anonymous volumes — that'swslc's own semantics, not a
limitation of this app. Unused named volumes survive.- Volumes have no size column.
wslc volume inspectreports neither a size nor a mountpoint,
so a per-volume byte count cannot be obtained — and is not invented. Those bytes are already
counted in the Resources "Container storage" tile. - Container logs are a snapshot, not a follow. Exec is one command per run, not an interactive TTY.
- The app can't report its own version yet. If you file a bug, please say you were on Beta 0.1.
- Windows x64 only. No 32-bit, no ARM64.
- It runs a loopback HTTP server on
127.0.0.1to talk to its own UI. Every request needs a
256-bit token generated fresh each launch, foreign origins are rejected, and only four binaries
(wsl,wslc,reg,explorer) can ever be spawned. The reasoning is in the
security model.
The most useful things you can report
- Parsing bugs.
wsl.exe/wslc.exeoutput varies by version, locale and host, and I can't
test them all. If a distro name, container table or version pill renders wrong, paste the raw
command output — it becomes a test fixture and the fix is usually immediate. - Your
wslc --help, if you're on a WSL version I haven't seen (alsocontainer,image,
runandvolume--help). The capability model is built directly on that output. - Anything the app claims that isn't true. That's the one bug class this project can't tolerate.
Open an issue — the bug template asks for
the capability probe, which answers most "why is that greyed out?" questions outright.
Security issues: privately, please.
📖 Documentation ·
🏗 Architecture ·
🔒 Security model ·
📝 Changelog
Licensed GPL-3.0. Not affiliated with Microsoft or Docker.