Skip to content

wimux v0.1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 27 Jul 14:22
v0.1.0
bc750a7

wimux is a terminal multiplexer built for Windows from the ground up.
tmux and zellij are Unix-first — on Windows they only really live inside
WSL, detached from the native shell. wimux speaks ConPTY, drives PowerShell
natively, and keeps your sessions alive when every client is gone.

This is the first public release. It works, and it has rough edges.

Install

scoop bucket add wimux https://github.com/fabperso/wimux
scoop install wimux

Or grab the installer (wimux-0.1.0-x64-setup.exe) or the portable zip below.
The installer bundles the daemon and starts it for you on first launch —
nothing else to set up.

What's in it

  • Persistent, detached sessions. One per-user server owns your sessions and
    survives any client closing. wimux new -s dev → close the window →
    wimux attach dev, everything is still running.
  • Three clients, one server. A lightweight TUI, a native GUI, and a fully
    scriptable CLI (send-keys, capture-pane, list-panes) all attach to the
    same daemon.
  • tmux-style muscle memory. Ctrl-b prefix, splits, windows, zoom, a
    vi-style copy mode with search, mouse support.
  • Browser panes. A pane can embed your dev server's preview — or drive a
    real Chromium over CDP: navigate, snapshot (accessibility tree with
    stable refs), click, type, eval.
  • AI sub-agent orchestration. wimux agent spawns agents into their own
    journaled panes; wimux batch fans a task out across isolated git worktrees
    so you can compare attempts and keep the winner.

How it's built (the Rust part)

A Cargo workspace of five crates plus a Tauri app:

Crate Role
wimux-protocol Wire protocol: serde + postcard, length-framed over Windows named pipes with overlapped I/O (so a client can read and write the same handle concurrently)
wimux-vt Terminal/VT emulation, server-side
wimux-server The daemon: sessions, windows, panes, ConPTY children via portable-pty, and the browser engine (chromiumoxide)
wimux-client Shared attach logic
wimux-cli The wimux binary

The GUI is Tauri v2 (WebView2 + xterm.js), the TUI is crossterm. The
server is the single source of truth: it emulates the terminals and pumps raw
PTY output to whichever clients are attached.

Three problems from this cycle that were more interesting than expected:

  • Display corruption with multiple panes. Splitting a pane sends a burst of
    intermediate sizes to the PTY; full-screen TUI apps redraw at each one and
    their incremental redraws leave orphaned glyphs behind. Capturing the
    server-side VT proved the corruption existed before xterm.js ever saw it —
    the fix was to debounce resizes so the PTY only ever sees the settled size.
  • Typing lag. Every PTY chunk became its own IPC message, flooding the
    GUI's single JS thread. Coalescing consecutive same-pane output in the
    daemon's pump fixed it.
  • A lost keystroke. Clicking a non-focusable sidebar item drops document
    focus to <body>, and the new pane only gets focus after a server
    round-trip — 500 ms during which everything typed vanished. Now a keystroke
    with no focused field belongs to the active pane, and keys typed mid-switch
    are buffered and replayed into the pane you switched to.

Verifying this release

The binaries are not code-signed (a publicly trusted certificate is a
recurring cost that's hard to justify for a free project), so SmartScreen will
warn on first run. Installing via Scoop avoids that entirely — it verifies the
hash itself.

Every artifact is listed in SHA256SUMS.txt, and each one carries a build
provenance attestation:

gh attestation verify .\wimux-0.1.0-x64-setup.exe --repo fabperso/wimux

Known limitations

  • Windows 10/11, x64 only.
  • Embedded browser panes are <iframe>s: sites that send X-Frame-Options or
    a restrictive frame-ancestors will refuse to render, and moving a pane in
    the layout reloads the page.
  • Agent orchestration expects the claude CLI on your PATH.

MIT licensed. Feedback and issues very welcome.