wslm is a terminal-based utility designed to manage Windows Subsystem for Linux (WSL) distributions efficiently. It provides a comprehensive interface for listing distros with their state, version, and size; starting or stopping them; opening shells inline or in a new tab; monitoring live memory and CPU usage; exporting and importing using tar or vhdx formats; installing from an online catalog; and editing configuration files.
Key features of wslm include:
Managing WSL distributions with detailed insights into their state, version, and disk usage.
Monitoring real-time resource consumption for efficient performance tracking.
Accessing shells directly or in a new tab for seamless workflow integration.
Securely exporting and importing distros to streamline backups and transfers.
Installing new distros from an online catalog to expand your WSL environment.
Editing configuration files to tailor settings without hassle.
Ideal for developers, system administrators, and advanced users who rely on WSL, wslm offers a streamlined management experience that enhances productivity. By staying within the terminal, it minimizes context switching, saving time and effort while maintaining robust functionality. Install via winget for quick setup and start managing your WSL distributions with ease.
README
wsl-manager-tui (wslm)
Sponsor
wslm is free and open source. If it saves you time, you can support continued
development:
A terminal UI to manage Windows Subsystem for Linux (WSL) distributions —
list, start/stop, launch shells, monitor memory and CPU, transfer, and edit
configuration — all from a single screen.
╭ wslm — WSL Manager ──────────────────────────────────── EN ╮
│ NAME STATE VER DEFAULT DISK │
│ ▌Debian ● Running 2 ★ 4.2 GB │
│ Ubuntu-24.04 ○ Stopped 2 8.1 GB │
╰─────────────────────────────────────────────────────────────╯
╭ Debian ─────────────────────────────────────────────────────╮
│ State ● Running Default ★ │
│ Version 2 Disk 4.2 GB │
│ Path C:\Users\me\…\Debian\LocalState │
│ VM Mem 1.8 GB / 8.0 GB ▕██████░░░░░░░░▏ 23% │
│ VM CPU 4.7 % ▕█░░░░░░░░░░░░░▏ │
│ Trend Mem ▁▂▃▅▇▆▄▃ CPU ▁▁▂▁▃▂▁▁ │
╰─────────────────────────────────────────────────────────────╯
⏎ shell · w tab · x stop · d default · e export · m import
↑↓/jk move · / filter · ? help · q quit
The detail pane, footer, and theme are illustrative — colors (a teal accent,
green/amber/red gauges) don't show here. The bottom two lines are a
context footer (the actions available for the selected distro's state) and
a global hint line.
Features
List every registered distro with state, WSL version, default flag and
on-disk size. State is detected without parsing localized strings, so it is
correct under any Windows display language.
Lifecycle: start, stop (terminate), shut down the whole VM, set default,
and unregister (with a type-the-name confirmation).
Shells: open a shell inline (the TUI suspends and resumes on exit) or in
a new Windows Terminal tab.
Managed export/import: e exports the selected distro into
%USERPROFILE%\wsl-manager\exports\ (the file extension selects the format:
.tar, .tar.gz, .tar.xz, or .vhdx); m opens a picker over that
folder — press c for a custom archive path or d to delete an entry.
Imported distros are stored under installed\\ inside the same managed
root (configurable via manage_dir in config.toml). Long operations show a
cancellable progress dialog. Install new distros from the online catalog with
i.
Resource monitor: WSL VM memory and CPU usage as inline gauges with live
sparklines (the WSL2 VM is shared by all distros, so these are machine-wide).
When a running distro is selected, its in-distro disk usage (df) is sampled
once and shown too.
Config editor: edit .wslconfig and a distro's wsl.conf with a
known-key form or raw text; unknown keys and comments are preserved, and the
previous file is backed up to *.bak.
Bilingual UI: switch between English and Japanese at runtime (L).
Filter the list incrementally (/) and an in-app help overlay (?).
Keybindings
Key
Action
j / k, ↑ / ↓
Move selection
/
Filter the list (Esc clears)
Enter
Open an inline shell (exit returns to wslm)
w / Shift+Enter
Open a shell in a new Windows Terminal tab
s
Start (boot) the distro
x
Stop (terminate) the distro
X
Shut down the whole WSL VM
d
Set as default
u
Unregister — delete (type the name to confirm)
e
Export to the managed folder (extension selects format)
m
Import — pick from the managed folder (c custom path, d delete)
i
Install from the online catalog
c / C
Edit .wslconfig / wsl.conf
L
Toggle English / Japanese
r
Refresh now
?
Help
q
Quit (Ctrl+C forces quit)
In the config editor: Tab toggles the form/raw view, Ctrl+S saves.
Requirements
Windows 10/11 with WSL2
Rust toolchain 1.96+ (pinned via rust-toolchain.toml)
Install / build
Download a release
Grab the prebuilt wslm.exe from the
Releases page (each
v* tag publishes one), drop it anywhere on your PATH, and run wslm. It is
a single self-contained executable with no install step.
Installs the wslm binary from crates.io
(a Windows host with WSL2 is required to run it).
Build from source
cargo run # build and run `wslm` from source
cargo build --release
The release build produces a single, dependency-free target/release/wslm.exe
(stripped, LTO).
Options
wslm --lang # override the saved UI language
wslm --poll-interval # override the refresh interval
Preferences (language, poll interval, history length, keybinding style, and the
default Enter shell-launch mode) are saved to
%APPDATA%\wsl-manager-tui\config.toml. For example:
Integration tests that invoke the real wsl.exe / registry are marked
#[ignore]; run them with cargo test -- --ignored.
Contributing
Unless you explicitly state otherwise, any contribution intentionally submitted for
inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual
licensed as below, without any additional terms or conditions.