wtmux vs psmux
Both Windows Terminal Multiplexer (wtmux) and psmux are native Windows terminal multiplexers that bring tmux-like functionality without WSL. This page compares the two projects.
Overview
| Aspect | psmux | wtmux |
|---|---|---|
| Language | Rust | C# (Native AOT) |
| Binary size | Small, single binary | ~3.5 MB, single binary |
| Runtime required | None | None (Native AOT) |
| PTY layer | Windows ConPTY | Windows ConPTY |
| IPC model | Client–server | Client–server |
| License | — | MIT |
| Minimum Windows | Windows 10 | Windows 10 2004+ |
Installation
| Method | psmux | wtmux |
|---|---|---|
| Microsoft Store | ❌ | ✅ (MSIX packaged) |
| WinGet | ✅ winget install psmux |
❌ (planned) |
| Scoop | ✅ | ❌ |
| Chocolatey | ✅ | ❌ |
psmux has broader package manager coverage today. wtmux is distributed through the Microsoft Store using MSIX packaging with execution alias registration.
Feature Comparison
| Feature | psmux | wtmux |
|---|---|---|
| Sessions (create/list/attach/detach) | ✅ | ✅ |
| Windows | ✅ | ✅ |
| Pane splitting | ✅ | ✅ |
| Pane navigation | ✅ | ✅ |
| Pane zoom | ✅ | ✅ |
| Status bar | ✅ | ✅ |
| Mouse support | ✅ | ✅ |
Config file (.tmux.conf) |
✅ | ✅ (subset) |
| Custom key bindings | ✅ | ✅ |
| 256/truecolor | ✅ | ✅ |
| Unicode / wide characters | ✅ | ✅ |
| Copy mode | ✅ | ❌ |
| Layouts (tiled, etc.) | ✅ | ❌ |
| Themes | ✅ | Partial (status bar only) |
| Plugin system | ❌ | ✅ (COM + built-in) |
| MSIX AppExtension discovery | ❌ | ✅ |
Ships tmux alias |
✅ | ❌ |
Architecture Differences
Both projects use the Windows ConPTY API and a client–server architecture. Key differences:
- Language: psmux is written in Rust with zero-cost abstractions. wtmux is C# compiled with Native AOT — both produce single-file native binaries with no runtime dependency.
- Plugin system: wtmux has a COM-based plugin API with MSIX AppExtension discovery, allowing language-agnostic plugins. psmux does not expose a plugin API.
- Packaging: psmux integrates with community package managers (winget, scoop, choco, cargo). wtmux uses MSIX packaging with Windows execution alias and targets the Microsoft Store.
- tmux compatibility: psmux aims for high tmux command compatibility and ships a
tmuxalias. wtmux supports a subset of tmux config syntax but does not alias itself astmux.
Unique to wtmux
- COM plugin API — Language-agnostic extensibility via
[GeneratedComInterface] - MSIX AppExtension discovery — Plugins discovered through Windows app extensions
- Built-in plugins — Prefix highlight, session save/restore included
- OSC 9 support — Desktop notifications and progress bar sequences
- Microsoft Store distribution — MSIX packaging for Store publishing
Unique to psmux
- Broad package manager support — winget, scoop, choco, cargo
tmuxalias — Can be used as a drop-intmuxcommand- Higher tmux compatibility — Supports more tmux commands and options
- Copy mode — Scrollback and text selection
- Themes — Full theming support
When to Use Which
- Use psmux if you want the highest tmux compatibility on Windows, need copy mode, or prefer installing via winget/scoop/choco.
- Use wtmux if you want a COM-based plugin system, MSIX packaging, or plan to extend the multiplexer with third-party plugins via AppExtension.