# ============================================================================ # Project-specific tmux session configuration # ============================================================================ # Place this file as .tmuxido.toml in your project root directory # # This configuration will be used when opening this specific project. # If this file doesn't exist, the global default_session from # ~/.config/tmuxido/tmuxido.toml will be used. # # Compatible with any tmux base-index setting (0 or 1) # ============================================================================ # ============================================================================ # BASIC EXAMPLE: Single window with one pane # ============================================================================ # [[windows]] # name = "editor" # panes = [] # Empty = just open a shell in the project directory # ============================================================================ # INTERMEDIATE EXAMPLE: Single window with multiple panes and layout # ============================================================================ # This creates the classic layout: # - Main pane on top (nvim) # - Two smaller panes below, side by side # # [[windows]] # name = "editor" # layout = "main-horizontal" # panes = [ # "nvim .", # Pane 0: Opens nvim in project root # "clear", # Pane 1: Shell ready for commands # "clear" # Pane 2: Another shell # ] # ============================================================================ # ADVANCED EXAMPLE: Multiple windows for a complete workflow # ============================================================================ # Window 1: Editor with side terminal [[windows]] name = "editor" layout = "main-vertical" panes = [ "nvim .", # Main pane: Editor "clear" # Side pane: Terminal for quick commands ] # Window 2: Development server [[windows]] name = "server" panes = [ "npm run dev" # Auto-start dev server ] # Window 3: Git operations [[windows]] name = "git" panes = [ "git status", # Show current status "lazygit" # Or use lazygit if installed ] # Window 4: Database/Logs [[windows]] name = "logs" layout = "even-horizontal" panes = [ "tail -f logs/development.log", "docker-compose logs -f" ] # ============================================================================ # PRACTICAL EXAMPLES BY PROJECT TYPE # ============================================================================ # --- Frontend React/Vue/Angular Project --- # [[windows]] # name = "code" # layout = "main-horizontal" # panes = ["nvim .", "clear", "clear"] # # [[windows]] # name = "dev" # panes = ["npm run dev"] # # [[windows]] # name = "test" # panes = ["npm run test:watch"] # --- Backend API Project --- # [[windows]] # name = "editor" # layout = "main-vertical" # panes = ["nvim src/", "cargo watch -x run"] # For Rust # # Or: panes = ["nvim .", "nodemon server.js"] # For Node.js # # Or: panes = ["nvim .", "python manage.py runserver"] # For Django # # [[windows]] # name = "database" # panes = ["psql mydb"] # Or mysql, redis-cli, etc # # [[windows]] # name = "logs" # panes = ["tail -f logs/app.log"] # --- Full Stack Project --- # [[windows]] # name = "frontend" # layout = "main-horizontal" # panes = [ # "cd frontend && nvim .", # "cd frontend && npm run dev" # ] # # [[windows]] # name = "backend" # layout = "main-horizontal" # panes = [ # "cd backend && nvim .", # "cd backend && cargo run" # ] # # [[windows]] # name = "database" # panes = ["docker-compose up postgres redis"] # --- DevOps/Infrastructure Project --- # [[windows]] # name = "code" # panes = ["nvim ."] # # [[windows]] # name = "terraform" # panes = ["terraform plan"] # # [[windows]] # name = "k8s" # layout = "even-vertical" # panes = [ # "kubectl get pods -w", # "stern -l app=myapp", # Log streaming # "k9s" # Kubernetes TUI # ] # --- Data Science/ML Project --- # [[windows]] # name = "jupyter" # panes = ["jupyter lab"] # # [[windows]] # name = "editor" # panes = ["nvim ."] # # [[windows]] # name = "training" # layout = "even-vertical" # panes = [ # "python train.py", # "watch -n 1 nvidia-smi" # GPU monitoring # ] # ============================================================================ # AVAILABLE LAYOUTS # ============================================================================ # Layout determines how panes are arranged in a window: # # main-horizontal: Main pane on top, others stacked below horizontally # ┌─────────────────────────────┐ # │ Main Pane │ # ├──────────────┬──────────────┤ # │ Pane 2 │ Pane 3 │ # └──────────────┴──────────────┘ # # main-vertical: Main pane on left, others stacked right vertically # ┌──────────┬──────────┐ # │ │ Pane 2 │ # │ Main ├──────────┤ # │ Pane │ Pane 3 │ # └──────────┴──────────┘ # # tiled: All panes in a grid # ┌──────────┬──────────┐ # │ Pane 1 │ Pane 2 │ # ├──────────┼──────────┤ # │ Pane 3 │ Pane 4 │ # └──────────┴──────────┘ # # even-horizontal: All panes in a row, equal width # ┌────┬────┬────┬────┐ # │ P1 │ P2 │ P3 │ P4 │ # └────┴────┴────┴────┘ # # even-vertical: All panes in a column, equal height # ┌──────────────┐ # │ Pane 1 │ # ├──────────────┤ # │ Pane 2 │ # ├──────────────┤ # │ Pane 3 │ # └──────────────┘ # ============================================================================ # TIPS & TRICKS # ============================================================================ # 1. Commands are executed with "Enter" automatically # 2. Use "clear" to just open a clean shell # 3. Commands run in the project directory by default # 4. Use "cd subdir && command" to run in subdirectories # 5. First pane in array is pane 0 (uses the window's initial pane) # 6. Subsequent panes are created by splitting # 7. Layout is applied after all panes are created # 8. Empty panes array = single pane window # 9. You can have as many windows as you want # 10. Compatible with tmux base-index 0 or 1 (auto-detected) # ============================================================================ # COMMON PATTERNS # ============================================================================ # Pattern: Editor + horizontal terminal split # [[windows]] # name = "work" # layout = "main-horizontal" # panes = ["nvim .", "clear"] # Pattern: Vertical split with commands side by side # [[windows]] # name = "dev" # layout = "even-vertical" # panes = ["npm run dev", "npm run test:watch"] # Pattern: Monitoring dashboard # [[windows]] # name = "monitor" # layout = "tiled" # panes = [ # "htop", # "watch -n 1 df -h", # "tail -f /var/log/syslog", # "docker stats" # ] # Pattern: Simple workflow (no special layout needed) # [[windows]] # name = "code" # panes = [] # # [[windows]] # name = "run" # panes = [] # # [[windows]] # name = "git" # panes = []