wmux.
Open source · Native Windows

tmux, on Windows.

Split a terminal into panes, walk between them with h j k l, close the window and find everything still running when you come back. PowerShell, cmd and WSL all live inside panes, with every keystroke arriving intact.

MIT · Windows 10 1809 or newer · one 3 MB exe

A wmux session: splitting panes, zooming, the pane menu, the window picker, detaching and attaching again
One session, recorded end to end: split, move, zoom, the pane menu, switch windows, detach, attach again.
1file to install
0Cygwin / WSL needed
126automated tests
MITlicensed
01

Panes, the way you already know

C-b % splits left and right, C-b " top and bottom. Move with the vim keys or the arrows, and keep pressing: movement and resizing repeat without the prefix.

Three panes: a shell on the left, wmux list-panes top right, a build loop bottom right
02

Full screen, a list, or a menu

C-b z blows the current pane up to the whole window and back. C-b w opens the tree of sessions and windows: j k to move, g G for top and bottom, digits to jump, Enter to go. C-b > puts the pane commands in a menu, so nothing has to be remembered.

A zoomed pane filling the window, Z on the status line
The choose-tree picker listing a session and its windows
The pane menu: split, swap, break out, zoom, respawn, kill, each with a letter
A popup box over the window running a command, with the pane behind it still visible
03

Close the terminal. Nothing dies.

C-b d detaches and the programs keep running in the background. wmux attach picks the session up again, from any terminal window.

Back at a plain shell after detaching
The same layout after attaching again
04

The job that finished while you were elsewhere

A window you are not looking at can say so: monitor-activity marks it with # when it prints, ! on a bell, ~ when it has been silent too long. C-b M-n jumps to the next window that has something to report.

A background job finishes in another window, the status line marks it, C-b M-n jumps there, a failing command leaves its pane in place, and a popup shows the window list
A deploy finishes in window 1 while window 0 carries on; the flag appears in the status line and in list-windows; a command that fails leaves its pane and its exit code behind.
05

Your .tmux.conf, more or less

The same command names on the command line, in the : prompt and in the config file. Options tmux has but wmux does not are accepted and ignored, so an existing config is a starting point.

set -g prefix C-a
set -g default-shell wsl          # pwsh (default), powershell, wsl, cmd, or a path
set -g mouse on
set -g repeat-time 500            # how long a `bind -r` key keeps working

set -g monitor-activity on        # mark a background window that prints
set -g remain-on-exit on          # keep a pane whose program died

bind -r h select-pane -L          # -r: press h h h after one prefix
bind | split-window -h
bind -n M-Right next-window       # -n: no prefix at all
set -g status-right "#{pane_current_path} %H:%M"
06

Install

Installer

The .msi puts wmux in Program Files, on the system PATH, and in "Apps & features".

Get it

Portable

The .zip is the same single exe. Unzip it anywhere and run it.

Get it

From source

cargo install --git \
  https://github.com/newdee/wmux --locked

Split it. Walk away. Come back.