| Crates.io | term-wm |
| lib.rs | term-wm |
| version | 0.5.1-alpha |
| created_at | 2026-01-06 20:02:15.865123+00 |
| updated_at | 2026-01-09 16:59:30.164046+00 |
| description | A cross-platform window manager for terminal shells. |
| homepage | |
| repository | https://github.com/jzombie/term-wm |
| max_upload_size | |
| id | 2026682 |
| size | 594,016 |
WORK IN PROGRESS.
A cross-platform terminal multiplexer, window manager, and Ratatui component library.
It is controllable via mouse and keyboard and works the same over SSH, Mac, Linux, and Windows.

term-wm serves two distinct purposes:
term-wm is heavily inspired by the utilitarian beauty of 90's Unix user interfaces (like CDE) and the cooperative tiling of Windows 1.0.
It bridges the gap between standard terminal multiplexers and full desktop environments by adapting GUI metaphors to the command line.
Working with the terminal grid, the project aims to provide a rich window management experience despite the architectural constraints of a text-based terminal. Since terminals lack pixel-perfect positioning and rely on a rigid character cell grid, term-wm employs creative layout algorithms to make borders, resizing, and overlapping layers feel fluid and natural, even within the strict boundaries of ANSI/VT standards.
As a standalone application, term-wm allows you to manage multiple shell sessions, panes, and floating windows with a philosophy centered on zero-conflict key bindings with your running applications.
Esc)Unlike other multiplexers that require complex prefix chords (like Ctrl+b), term-wm uses Esc as a context-aware modifier. This ensures that sub-shells and embedded apps (like vim, tmux, screen, etc.) retain their own keybindings without fighting the window manager.
Should the
Esckey need to be sent to a child window, pressingEsctwice (double-Esc) will route it to the window as a single key press.
| Context | Action | Behavior |
|---|---|---|
| App Focused | Press Esc | Enters WM Mode. An overlay appears; keys now control the window manager. |
| WM Mode | Press Esc | Dismisses overlay; focus returns to the app. |
| Any | Double-tap Esc | Routes a single Esc through to the focused child window. |
term-wm exports its core logic as a crate, allowing you to build complex terminal user interface (TUI) applications without reinventing view navigation or layout engines.
It provides a framework to render Ratatui components in a fashion that automatically handles focus routing and view lifecycle, letting you focus on component creation while term-wm enforces consistent layout.
The library uses Layout Contracts to define how screen real estate is negotiated between your application logic and the term-wm engine:
By using term-wm primitives, your application gains:
git clone https://github.com/jzombie/term-wm.git
cd term-wm
cargo build --release
There is also a published Rust crate at: https://crates.io/crates/term-wm
The easiest way to run the latest build is via Cargo, which handles platform differences automatically:
cargo run --release
To install term-wm as an executable system command, you can install it directly to your system.
cargo install --path .
To uninstall:
cargo uninstall term-wm
The project emphasizes high-throughput rendering. Included in the repository is term-bench, a tool designed to stress-test terminal emulators and window managers.
1. Standalone (Native Terminal Performance)
cargo run -p term-bench --release -- --duration 15 --fps 120
2. Managed (Inside term-wm) This launches the window manager and immediately feeds the benchmark into the first pane.
cargo run --release -- "./target/release/term-bench --duration 15 --fps 120"
The benchmark reports frame pacing, render times (avg/1% lows), and cell-update throughput.
term-wm is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).
See LICENSE-APACHE and LICENSE-MIT for details.