Building a tmux like pane manager for windows with Rust.
- Side-by-Side Panes: Automatically splits the screen as you add more panes.
- Dynamic Layout: Recalculates pane sizes on addition or removal.
- Event-Driven: Uses an asynchronous event loop for handling input and process exits.
- Native Windows Support: Leverages the official Windows Pseudo Console (ConPTY) for high fidelity.
Ensure you have Rust installed.
# Clone the repository (if applicable)
cd term_mux
# Run the application
cargo runterm_mux uses Ctrl+A as the command prefix, similar to tmux (which often uses Ctrl+B).
| Keybinding | Action |
|---|---|
Ctrl+A, c |
Create a new pane |
Ctrl+A, n |
Next pane (cycle focus) |
Ctrl+A, x |
Close (kill) the active pane |
Ctrl+A, q |
Quit term_mux |
Ctrl+A, Ctrl+A |
Send a literal Ctrl+A to the shell |
PaneManager: Manages the collection of panes and recalculates layouts.Pane: Encapsulates the ConPTY, process handles, and input/output pipes.AnsiInterpreter: Parses ANSI escape codes to maintain an internal buffer of the screen state.InputHandler: Intercepts key presses and manages the prefix state machine.
- Flexible Splits: Support for horizontal splits (
Ctrl+A,") and vertical splits (Ctrl+A,%). - Pane Resizing: Adjust pane boundaries using keyboard shortcuts or mouse dragging.
- Status Bar: Add a customizable status bar at the bottom showing system stats or current pane info.
- Configuration: Allow customizing keybindings and default shells via a
.jsonor.tomlfile. - Scrollback: Implement a scrollable buffer for each pane.
- Color Themes: Support for terminal color schemes (e.g., Solarized, Nord).
- Unicode Improvements: Enhanced support for complex emojis and wide characters.
MIT