
XDA argued this year that Ubuntu on Windows is on track to become more popular than Ubuntu itself, and the reason is boring in the best way. WSL2 stopped being a curiosity and became the default way to touch Linux on a work laptop that has to run Teams, an EDR agent, and a corporate VPN. The upgrade path is a single command, the kernel is real, and the network stack finally behaves. What is still missing is the surrounding kit: an editor that treats the Linux side as first class, a terminal that does not fight tmux, a container runtime that respects the WSL2 backend, and a prompt that tells the truth about git state. This roundup covers the best apps for Ubuntu on WSL development on desktop, based on daily driver use across Windows 11 24H2 and Ubuntu 24.04 LTS inside WSL.
What to look for in a WSL dev app
Not every Linux tool is a good WSL tool. The ones that fit share four traits. First, they respect the WSL filesystem boundary, so heavy I/O work stays on the Linux side (~/), not on /mnt/c/, where cross-VM calls stall. Second, they either run natively on Windows and reach into WSL cleanly, or they run inside Ubuntu and speak to Windows through wslg for GUI apps and localhost forwarding for services. Third, they play nicely with corporate constraints: no kernel drivers, no requirement to disable Hyper-V, no proxy hostility. Fourth, they save state across restarts of the WSL VM, which happens more often than most guides admit. Pick tools that pass all four and the environment stops feeling like a stack of workarounds.
Quick comparison
| App | Best for | Runs on | Free plan | Starting price | License |
|---|---|---|---|---|---|
| Visual Studio Code + WSL extension | The default editor for most WSL work | Windows, reaches into WSL | Yes, fully | Free | MIT (with Microsoft telemetry) |
| Windows Terminal | Terminal shell for WSL, PowerShell, and Command Prompt in one window | Windows 11 (ships built-in) | Yes, fully | Free | MIT |
| Docker Desktop | Containers with the WSL2 backend | Windows (uses WSL2 VM) | Yes, personal use | $9 per user per month for business | Proprietary |
| JetBrains Toolbox (IntelliJ, PyCharm, WebStorm, GoLand, Rider) | Language-aware IDEs that see Linux paths | Windows, project inside WSL | 30-day trial | Around $16.90 per month for IntelliJ Ultimate individual | Proprietary |
| oh-my-posh | A prompt that shows git, k8s, and Python context on bash, zsh, and PowerShell | Ubuntu (WSL) and Windows | Yes, fully | Free | MIT |
| tmux | Session persistence and split panes inside the WSL shell | Ubuntu (WSL) | Yes, fully | Free | ISC |
| GitHub CLI | Everyday GitHub work without leaving the terminal | Ubuntu (WSL) and Windows | Yes, fully | Free | MIT |
| Warp | A modern terminal with AI command help | Ubuntu (WSL) and Windows | Yes, individual free tier | $15 per user per month for Warp Teams | Proprietary |
The apps
1. Visual Studio Code with the WSL extension, best for the default WSL editing setup
Visual Studio Code for WSL development is not really an editor plus a plugin, it is a two-process arrangement where the UI runs in Windows and the language servers, git, and integrated terminal all run inside Ubuntu. Install the Remote Development extension pack, run code . from a WSL shell, and the extension will drop a small server into the Linux side, symlink the project, and open a window that behaves as if the whole toolchain is native. Debug adapters, tasks, ports forwarded to localhost, and Copilot completions all cross the boundary without extra config.
Where it falls short: the Windows-side extension host and the Linux-side server can drift out of sync when the WSL kernel updates, which forces a manual server reinstall. Very large monorepos hit a memory ceiling faster than they would in a native Linux VS Code because the two processes both hold a working copy.
Pricing:
- Free: everything in the editor, plus the WSL and Remote Development extensions.
- Paid: Copilot is a separate subscription starting at $10 per user per month.
Platforms: Windows, macOS, Linux (in this article, Windows host reaching into Ubuntu on WSL).
Download: Microsoft Store or Visual Studio Code site.
Bottom line: the default choice for most WSL work, and the one to install first before deciding anything else.
2. Windows Terminal, best free foundation for a WSL shell
Windows Terminal ships with Windows 11, opens a fresh WSL Ubuntu tab from a dropdown, and renders text on the GPU, which matters when a journalctl -f scrolls fast. Profiles cover WSL distros, PowerShell 7, and legacy Command Prompt in one window, and each profile carries its own starting directory, font, color scheme, and environment variables. The settings.json file is checked into a dotfiles repo without any porting, and split panes make it easy to keep a build in one pane and a log tail in the other.
Where it falls short: the settings UI still lags behind the JSON, and there is no built-in session save and restore like tmux, so a Windows reboot loses the pane layout.
Pricing:
- Free: the whole product, including the preview channel.
- Paid: none.
Platforms: Windows 10 build 19041 and later, Windows 11 (default).
Download: Microsoft Store or GitHub.
Bottom line: the terminal to keep pinned to the taskbar; every other terminal in this list still runs inside it or beside it.
3. Docker Desktop, best for containers with the WSL2 backend
Docker Desktop on Windows uses WSL2 for its Linux VM, which means Docker and the Ubuntu distro share the same kernel and the same dockerd. Enabling WSL integration for the Ubuntu distro exposes the docker and docker compose CLIs directly in the Ubuntu shell, with no docker.exe shim in between, and volume mounts from /home/<user>/... hit near-native disk speed. Buildx, Kubernetes, and image scanning are all in the tray app.
Where it falls short: Docker Desktop is only free for individuals, education, and small companies (under 250 employees and under $10M in annual revenue). Larger teams need a paid subscription. It also consumes several gigabytes of RAM even when idle because the WSL VM stays warm.
Pricing:
- Free: personal, small business, and open source use.
- Paid: Pro at $9 per user per month, Team at $15, Business at $24.
Platforms: Windows 10/11 (WSL2 backend), macOS, Linux.
Download: Docker site.
Bottom line: the path of least resistance for containers on WSL, unless the team is large enough to trigger the paid tier, in which case Podman Desktop or plain docker inside Ubuntu are worth pricing against it.
4. JetBrains Toolbox, best for language-aware IDEs that understand WSL
JetBrains Toolbox installs and updates IntelliJ IDEA, PyCharm, WebStorm, GoLand, Rider, and the rest of the JetBrains lineup, and each IDE has WSL2 support built in. Open a project stored under \\wsl$\Ubuntu\home\<user>\... and the IDE runs its indexing, build, and test runners inside Ubuntu via a headless backend, with the UI on the Windows side. That matches how VS Code works, so file watchers stay on the Linux side of the boundary and the JVM does not have to argue with NTFS.
Where it falls short: the paid IDEs are the point, and prices add up if a project touches multiple languages. Indexing a large monorepo across the WSL boundary can take longer on first open than it would on a bare-metal Linux install.
Pricing:
- Free: IntelliJ IDEA Community Edition, PyCharm Community, Android Studio, and the Toolbox launcher.
- Paid: individual subscriptions start at around $9.90 per month for smaller IDEs and $16.90 per month for IntelliJ IDEA Ultimate, with annual discounts and the All Products Pack at around $28.90 per month.
Platforms: Windows, macOS, Linux (Toolbox as the manager, IDE backends inside WSL Ubuntu).
Download: JetBrains site.
Bottom line: the right choice when the language deserves an IDE rather than an editor, and worth the money for teams already invested in the JetBrains stack.
5. oh-my-posh, best for a prompt that survives shell switches
oh-my-posh is a single Go binary that renders a themable prompt for bash, zsh, fish, PowerShell, and nushell, using one JSON or YAML config across all of them. On WSL that pays off twice: the same prompt shows up in an Ubuntu bash session and in a Windows PowerShell tab of Windows Terminal, so the visual anchors (git branch, dirty state, current cluster, virtualenv, exec time) are identical no matter which shell holds the current job. Themes are actively maintained and Nerd Font glyphs render cleanly with Cascadia Code NF.
Where it falls short: slow git status on huge repositories can add a few hundred milliseconds per prompt render, which is fixable by tuning the git segment but is on by default. The config is JSON, not a shell script, which is a learning curve for anyone coming from a hand-rolled PS1.
Pricing:
- Free: entire project, MIT licensed.
- Paid: none.
Platforms: Ubuntu (WSL), Windows, macOS.
Download: GitHub.
Bottom line: the smallest change with the largest quality-of-life return, and worth installing on day one of a new WSL setup.
6. tmux, best for session persistence inside WSL
tmux solves the two problems that break flow inside WSL: losing a shell session when the WSL VM restarts, and running out of horizontal space in a single terminal window. A running tmux server keeps every pane, window, and running process alive across reconnects, and tmux attach picks up exactly where the last session left off. Split panes give a build in one column, a log tail in another, and a scratch shell in a third, all inside a single Windows Terminal tab.
Where it falls short: the default keybindings are famously unfriendly, so most users rewrite them, and clipboard integration with the Windows host needs a helper like wl-copy or clip.exe wired into .tmux.conf.
Pricing:
- Free:
sudo apt install tmuxon Ubuntu. - Paid: none.
Platforms: Linux (native inside WSL Ubuntu), macOS.
Download: GitHub or install via apt on Ubuntu.
Bottom line: the pick for anyone who runs long jobs, SSHes into remote hosts from WSL, or wants the pane layout to survive a laptop reboot.
7. GitHub CLI, best for GitHub work without leaving the shell
GitHub CLI (gh) turns pull request creation, review, checkout, and CI log inspection into single commands that run inside Ubuntu on WSL. Authenticate once with gh auth login, and the same token works for cloning private repos, opening PRs, and triggering workflows. Because it runs in Ubuntu, it plays with git, jq, fzf, and every other CLI in the Linux ecosystem without shell translation.
Where it falls short: GitHub-only, so teams on GitLab or Bitbucket need glab or bb respectively. Some newer web features (Copilot chat in PRs, Projects V2 views) trail their web counterparts.
Pricing:
- Free: the CLI itself.
- Paid: none; GitHub subscription tiers apply separately if the account uses them.
Platforms: Ubuntu (WSL), Windows, macOS.
Download: GitHub or install via apt from the GitHub CLI repo on Ubuntu.
Bottom line: the fastest way to close the loop between a local branch in WSL and a merged PR on GitHub, especially in scripted release flows.
8. Warp, best for a modern terminal with AI baked in
Warp is a Rust-based terminal with GPU rendering, block-based command output, and an AI panel that suggests, explains, and rewrites shell commands. On WSL it runs two ways: as a Linux application inside Ubuntu (rendered through wslg) or as a native Windows client that opens a WSL profile the same way Windows Terminal does. Command blocks are individually shareable and searchable, and the AI has access to the recent block history, so error output goes into a question with one keystroke.
Where it falls short: the AI features send prompt context to Warp’s servers, which is a hard blocker in some regulated environments. Individual and team tiers require an account to unlock most features, which is more friction than Windows Terminal.
Pricing:
- Free: individual plan with a monthly AI request cap.
- Paid: Warp Pro at around $15 per user per month; Warp Teams and Enterprise available.
Platforms: macOS, Linux (native), Windows (native), and inside WSL Ubuntu.
Download: Warp site.
Bottom line: the pick for developers who want AI help without alt-tabbing to a chat window, provided the data-flow policy is acceptable.
How to pick the right one
If a Windows laptop is fresh and the goal is a full WSL dev environment by lunchtime, install Windows Terminal, then VS Code with the WSL extension, then Docker Desktop, in that order. That covers editing, shelling, and containers.
If the work is Python, Go, or JVM heavy: add PyCharm Pro, GoLand, or IntelliJ Ultimate from JetBrains Toolbox. The refactoring and debugger UX still beats VS Code for those stacks.
If the budget is zero: skip Docker Desktop and JetBrains, and install docker.io inside Ubuntu with rootless mode, plus IntelliJ IDEA Community for JVM work or PyCharm Community for Python. Pair with oh-my-posh, tmux, and GitHub CLI, all free.
If a workflow lives in long-running SSH sessions or background builds: tmux is not optional. Configure it before doing anything else, because retrofitting sessions later means losing the current one.
If AI in the terminal is the priority and the corporate policy allows it: Warp, both on the Windows side and inside Ubuntu.
If the environment is locked down and cannot install anything with a Windows kernel driver: everything in this list still works, because none of them install kernel drivers. Docker Desktop and Warp are the only ones with a paid tier worth pricing.
FAQ
What is the best free apps for Ubuntu on WSL development? Windows Terminal, Visual Studio Code with the WSL extension, oh-my-posh, tmux, and GitHub CLI are all free and cover shell, editor, prompt, session persistence, and GitHub work. Docker Desktop is free for personal and small-business use and covers containers.
Is Docker Desktop still worth paying for on WSL?
For teams above the free tier thresholds, yes, because the WSL2 backend integration, Kubernetes, and dev environments save real setup time. For solo developers or teams that already run docker.io in Ubuntu with a script that starts the daemon on WSL launch, the answer is no.
Do I need JetBrains IDEs if I already have VS Code? Not for most work. VS Code with the WSL extension covers Node, Python, Go, and Rust well enough that a paid JetBrains license is only worth it when the codebase is large enough that indexing, refactoring, and language-specific debugging pay for themselves. JVM and .NET stacks are the clearest wins.
Can I use these tools without WSL2, on plain Windows? Windows Terminal, Docker Desktop, VS Code, JetBrains, oh-my-posh, GitHub CLI, and Warp all run on Windows without WSL. tmux does not, and its closest Windows-native replacements (ConEmu, ZellijW) are not equivalent. If the goal is a Linux shell workflow, WSL2 is still the shortest path.
Which apps for Ubuntu on WSL development are open source? Windows Terminal, Visual Studio Code (the base editor, not the Microsoft-branded builds), oh-my-posh, tmux, and GitHub CLI are open source. Docker Desktop, JetBrains IDEs, and Warp are proprietary, with free tiers.
How do I stop WSL from feeling slow?
Keep project files inside the Linux filesystem (~/) rather than on /mnt/c/, cap WSL memory in .wslconfig so the VM does not swap the host, and turn off Windows Defender real-time scanning for the WSL VHDX file. Combined, those three changes remove most of the slowness people blame on WSL itself.