How Can You Use tmux on Windows? WSL vs Native Options Compared
Updated
There is no official native tmux build for Windows, so you have two practical paths: run real tmux inside WSL, or use a native Windows terminal multiplexer such as psmux. Choose WSL if you need the full Linux toolchain and exact tmux behavior; choose a native tool if you want tmux-style panes and sessions directly in PowerShell, cmd.exe, or Windows Terminal with no Linux layer.
The two approaches at a glance
| Dimension | WSL + tmux | Native multiplexer (psmux) |
|---|---|---|
| What runs | Real tmux on Linux inside WSL | A Windows binary built in Rust, described as tmux-compatible |
| Install path | Enable WSL, install a distro, install tmux via the distro's package manager | Install the Windows binary and launch it from your shell |
| Shell integration | Linux shells inside WSL; Windows paths need translation | Runs in Windows Terminal, PowerShell, and cmd.exe |
| Linux toolchain | Full access | Not provided; you stay in Windows |
| Config file | tmux's own config inside the Linux home directory | Per the product's documentation; confirm the expected location before relying on it |
| Best fit | Linux-centric workflows, scripts, and tooling | Windows-first workflows that only need panes, sessions, and windows |
The compatibility and shell-support claims for psmux come from its own project description, so treat "full tmux compatibility" as a starting point to verify against the shortcuts and commands you actually use.
Option 1: Real tmux through WSL
Use this when your work already assumes Linux: build scripts, package managers, or dotfiles written for tmux.
- Enable WSL. In an elevated PowerShell window, run
wsl --install. This enables the required Windows features and installs a default distribution. A reboot is often required. - Verify the distro. Run
wsl -l -vand confirm your distribution shows version 2. If it shows version 1, convert it withwsl --set-version <DistroName> 2. - Install tmux inside the distro. Open the distro (
wsl), then use its package manager, for examplesudo apt update && sudo apt install tmux. - Start and verify. Run
tmux, then create a split withCtrl-b %(vertical) orCtrl-b "(horizontal). Detach withCtrl-b dand reattach withtmux attach. - Set your default shell. tmux starts the shell configured for your Linux user; change it inside the distro, not in Windows settings.
Expected result: a tmux session running in a WSL terminal tab, with panes and detach/reattach behaving exactly as on Linux.
Common snags with WSL
wsl --installfails or WSL won't start: virtualization is usually disabled in firmware. Enable it in BIOS/UEFI, then retry.- tmux not found after install: you installed it in a different distro than the one you launched; check with
wsl -l. - Odd rendering or broken colors: the terminal emulator may not handle the escape sequences tmux emits. Try Windows Terminal rather than older consoles.
- Shortcut conflicts:
Ctrl-bcan collide with terminal or shell bindings. Remap the prefix in your tmux config if needed.
Option 2: A native Windows multiplexer such as psmux
Use this when you want panes, windows, and sessions without installing Linux, and your work lives in PowerShell or cmd.exe.
- Install the binary using the instructions on the project site. The site does not publish pricing or licensing details in the material available here, so confirm those terms yourself before deploying it widely.
- Launch it from your shell. Start it inside Windows Terminal, PowerShell, or cmd.exe, as the project states these are supported hosts.
- Learn the prefix and core commands. Because it is presented as tmux-compatible, expect a tmux-style prefix and commands for splitting, switching windows, and detaching. Verify each command you depend on rather than assuming parity.
- Locate the configuration file. Check the project documentation for the expected config path and syntax before porting an existing tmux config; a Linux
~/.tmux.confwill not be read automatically on Windows. - Verify the basics. Split a pane, create a second window, detach, and reattach. If all four work, the core workflow is sound.
Expected result: tmux-like session management in a normal Windows terminal, with no WSL dependency.
Common snags with native tools
- Escape-sequence rendering: some consoles handle alternate-screen and color sequences poorly. Windows Terminal is the safer host.
- Keybinding collisions: PowerShell's PSReadLine and Windows Terminal both bind keys; if a prefix or shortcut does nothing, check those layers first.
- Config portability: paths, shell commands, and plugins written for Linux tmux may not translate. Start from a minimal config and add pieces one at a time.
- Compatibility gaps: "tmux-compatible" rarely means every option and plugin works. Test the specific features your workflow relies on.
How to decide
- Pick WSL + tmux if you need genuine tmux behavior, Linux tooling, or existing tmux configs and scripts to work unchanged, and you can accept the extra setup and a Linux layer.
- Pick a native multiplexer like psmux if your daily work is in PowerShell or cmd.exe, you want no WSL overhead, and tmux-style panes and sessions are enough.
- Pick neither if you only occasionally need two panes; Windows Terminal's built-in split panes may cover that without a multiplexer.
First-run checklist for either path
- Confirm your terminal host is Windows Terminal for the most reliable rendering.
- Decide your prefix key early and check it against shell and terminal bindings.
- Keep an initial config minimal, then add options incrementally and test after each change.
- Verify detach and reattach before trusting the tool with long-running work.