Skip to content
Yash-Kumar-techPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

term_mux

Building a tmux like pane manager for windows with Rust.

Features

  • 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.

Getting Started

Ensure you have Rust installed.

# Clone the repository (if applicable)
cd term_mux

# Run the application
cargo run

Keybindings

term_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

Architecture

  • 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.

Future Roadmap

  • 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 .json or .toml file.
  • 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.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages