Session Management Cheatsheet ============================= Terminal session management with tmux and workspace patterns Date: February 8, 2026 # Session Management Cheatsheet ## Tmux Session Operations ### Session Creation | Key | Action | |-----|--------| | `Alt+Escape` | Popup: create new workspace | | `Ctrl+T` | Todo list session (nvim) | | `tmux new -s name` | Manual session creation | ### Session Navigation | Key | Action | |-----|--------| | `Alt+Space` | Popup: attach to workspace | | `Ctrl+J` | Fuzzy-find any session | | `Alt+T` | Workspace in current directory | | `J` | tmux session tree browser | ### Quick Session Access | Key | Target | |-----|--------| | `Ctrl+W` | ~/work directory | | `Alt+W` | ~/work directory | | `Ctrl+G` | ~/git directory | | `Ctrl+P` | ~/project directory | ### Session Management | Key | Action | |-----|--------| | `Ctrl+K` | Popup: kill sessions | | `tmux ls` | List all sessions | | `tmux kill-session -t name` | Kill specific session | ## Workspace Patterns ### Project Workspace ```bash # Create project-specific session Alt+T # Creates workspace in current dir # Session structure: # Window 1: nvim (code) # Window 2: gitui (version control) # Window 3: lf (file management) # Window 4: shell (commands) ``` ### Scratch Sessions | Key | Session Type | |-----|--------------| | `Alt+G` | Small scratch session | | `Alt+Shift+G` | Large scratch session | ### Todo Session | Key | Purpose | |-----|---------| | `Ctrl+T` | Todo management (nvim with 3 files) | | | - backlog.md | | | - doing.md | | | - done.md | ## Window Management ### Window Creation | Key | Action | |-----|--------| | `tmux: Prefix+c` | Create new window | | `tmux: Prefix+"` | Split horizontal | | `tmux: Prefix+%` | Split vertical | ### Window Navigation | Key | Action | |-----|--------| | `tmux: Prefix+n` | Next window | | `tmux: Prefix+p` | Previous window | | `tmux: Prefix+0-9` | Go to window number | | `tmux: Prefix+ hjkl` | Navigate panes | ### Window Naming | Key | Action | |-----|--------| | `tmux: Prefix+,` | Rename window | | `tmux: Prefix+&` | Kill window | ## Session Templates ### Development Session ```bash # Window 1: Code Editor nvim . # Window 2: Git Operations gitui # Window 3: File Manager lf # Window 4: Terminal/Testing # Open for commands ``` ### Review Session ```bash # Window 1: PR/Code Review nvim files-to-review # Window 2: Git Status git status # Window 3: Build/Testing # Run tests, builds ``` ### Debug Session ```bash # Window 1: Code with issues nvim problem-file # Window 2: Logs/Terminal tail -f logs/app.log # Window 3: Shell for debugging # Commands, inspection ``` ## Session Persistence ### What Persists - tmux sessions survive reboots - Working directories maintained - Window layouts preserved - Running processes continue ### What Doesn't Persist - Shell history (managed by zsh) - Temporary files - Clipboard contents ### Backup Sessions ```bash # Save session configuration tmux list-windows -t session-name > session-backup.txt # Recreate session from backup # Use saved layout to rebuild ``` ## Workflow Patterns ### Context Switching ```bash # Switch to different project Alt+Space # Select workspace session # Quick scratch for temporary work Alt+G # Open scratch session # Return to main work Ctrl+J # Fuzzy-find main session ``` ### Collaborative Sessions ```bash # Share session with pair programming tmux new -s pair-programming # Other person: tmux attach -t pair-programming ``` ### Automated Sessions ```bash # Session for specific task tmux new -s task-name \; \ send-keys 'nvim file1' Enter \; \ new-window \; \ send-keys 'cd project && git status' Enter ``` ## Quick Reference **Start work:** `Alt+Space` → select workspace **Quick scratch:** `Alt+G` → temporary session **Project hopping:** `Ctrl+J` → fuzzy-find **Kill session:** `Ctrl+K` → select → confirm **Todo time:** `Ctrl+T` → task management **File browse:** `Alt+C` → find directory → `lf` ## Session Health ### Clean Up Sessions ```bash # List all sessions tmux ls # Kill dead sessions tmux kill-session -t dead-session # Clean up detached tmux list-sessions | grep detached ``` ### Session Monitoring ```bash # Check session activity tmux list-sessions -F '#{session_name}: #{session_attached}' # Monitor long-running processes # In session: jobs -l ``` ## Best Practices 1. **One session per project** - Keeps context organized 2. **Name sessions meaningfully** - Easy identification 3. **Use consistent window layouts** - Muscle memory 4. **Kill unused sessions** - Prevent clutter 5. **Backup important layouts** - Quick recreation