tmuxrs
A modern, Rust-based tmux session manager with centralized configuration and directory-aware execution.
tmuxrs is a drop-in replacement for tmuxinator that solves the scattered configuration problem while maintaining full compatibility. Manage all your tmux sessions from a centralized location with automatic project detection.
✨ Key Features
- 🔄 Drop-in tmuxinator replacement - Use existing configs without changes
- 📁 Centralized configuration - All configs in
~/.config/tmuxrs/ - 🎯 Directory-aware execution - Auto-detects sessions from current directory
- ⚡ Rust performance - Faster session creation than Ruby tmuxinator
- 🔗 TTY-aware attachment - Seamless terminal takeover
- 🏗️ Layout support - Complex window layouts with multiple panes
- 🛠️ Modern CLI - Better error messages and user experience
💡 Philosophy
tmuxrs is built on three core principles:
Configuration as Code
- Define your entire workspace layout in YAML files
- Version control your development environments
- Share consistent setups across teams
Zero Friction Context Switching
- Switch between projects with a single command
- Automatically restore complex window/pane layouts
- Maintain project-specific environments
Tmuxinator Compatibility
- Drop-in replacement for tmuxinator
- Use existing configuration files without modification
- Familiar commands and workflow
🚀 Quick Start
Installation
# Install from crates.io
# Or from source
# Install man page (optional)
Basic Usage
# Create a config file
# Start the session
# Or auto-detect from directory
# List available sessions
# Stop a session
🔄 Migration from tmuxinator
tmuxrs is designed as a drop-in replacement for tmuxinator:
# Your existing tmuxinator configs work unchanged
# Same commands, better performance
🏗️ Configuration
Simple Window Configuration
name: simple-project
root: ~/code/simple-project
windows:
- editor: vim
- server: rails server
- shell: bash
Advanced Layout Configuration
name: complex-project
root: ~/code/complex-project
windows:
- main:
layout: main-vertical
panes:
- vim src/main.rs
- cargo watch -x run
- monitoring:
layout: tiled
panes:
- htop
- iostat 2
- tail -f /var/log/system.log
- netstat -i
Available Layouts
main-vertical- Side-by-side with main pane on leftmain-horizontal- Top/bottom with main pane on toptiled- All panes equally sized in grideven-horizontal- All panes equal widtheven-vertical- All panes equal height
🎯 Core Innovation: Centralized + Directory-Aware
The Problem with tmuxinator
tmuxinator requires either:
- Manual project specification:
tmuxinator start webapp - Scattered config files:
.tmuxinator.ymlin every project directory
This creates friction - you either lose convenience or end up with config files scattered across projects.
tmuxrs Solution: Best of Both Worlds
Centralized Configuration:
~/.config/tmuxrs/
├── webapp.yml
├── api-server.yml
└── mobile-app.yml
Directory-Aware Execution:
📖 Command Line Interface
# Session management
# Examples
🔧 Development
# Clone and build
# Run tests
# Install locally
🤝 Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
📄 License
This project is licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
🙏 Acknowledgments
- tmuxinator - The original inspiration
- tmux - The amazing terminal multiplexer
Happy tmuxing! 🚀