tmux
tmux CLI Skill
Use tmux commands via Bash to manage terminal sessions, windows, and panes.
Do NOT use the tmux MCP server — use the CLI directly.
All commands below are safe to run and do not require user confirmation unless they kill sessions or panes containing unsaved work.
Session Management
tmux list-sessions # list all sessions (alias: tmux ls)
tmux new-session -d -s myapp # create detached session
tmux new-session -d -s myapp -c ~/project # create with working directory
tmux kill-session -t myapp # kill a session (confirm first)
tmux rename-session -t old new # rename a session
tmux has-session -t myapp 2>/dev/null # check if session exists (exit code)
Window Management
tmux new-window -t myapp # new window in session
tmux new-window -t myapp -n build # new window with name
tmux new-window -t myapp -n build -c ~/src # with name and working directory
tmux rename-window -t myapp:0 main # rename window
tmux select-window -t myapp:1 # switch to window by index
tmux kill-window -t myapp:1 # kill a window (confirm first)
tmux list-windows -t myapp # list windows in a session
Pane Management
tmux split-window -t myapp -h # split horizontally (side by side)
tmux split-window -t myapp -v # split vertically (top/bottom)
tmux split-window -t myapp -h -c ~/src # split with working directory
tmux select-pane -t myapp:0.1 # select pane (session:window.pane)
tmux kill-pane -t myapp:0.1 # kill a pane
tmux list-panes -t myapp:0 # list panes in a window
tmux resize-pane -t myapp:0.1 -R 20 # resize pane right by 20 cells
tmux resize-pane -t myapp:0.1 -D 10 # resize pane down by 10 cells
# Resize directions: -U (up), -D (down), -L (left), -R (right)
Command Execution
# Send a command to a specific pane
tmux send-keys -t myapp:0.0 'make build' Enter
# Send keys without pressing Enter (useful for partial input)
tmux send-keys -t myapp:0.0 'echo hello'
# Send Ctrl-C to interrupt a running process
tmux send-keys -t myapp:0.0 C-c
# Run a command in a new window directly
tmux new-window -t myapp -n tests 'go test ./...'
Content Capture
# Capture visible pane content
tmux capture-pane -t myapp:0.0 -p
# Capture with scrollback history (last 100 lines)
tmux capture-pane -t myapp:0.0 -p -S -100
# Capture entire scrollback
tmux capture-pane -t myapp:0.0 -p -S -
# Check if a command is still running (look for shell prompt in output)
tmux capture-pane -t myapp:0.0 -p | tail -5
Layouts
tmux select-layout -t myapp:0 even-horizontal # equal columns
tmux select-layout -t myapp:0 even-vertical # equal rows
tmux select-layout -t myapp:0 main-horizontal # large top, small bottom panes
tmux select-layout -t myapp:0 main-vertical # large left, small right panes
tmux select-layout -t myapp:0 tiled # equal grid
Target Syntax
Targets follow the pattern session:window.pane:
myapp— session named "myapp"myapp:0— first window in "myapp"myapp:0.1— second pane in first window of "myapp"myapp:build— window named "build" in "myapp"
Common Workflows
Run a background process and check on it
tmux new-session -d -s bg
tmux send-keys -t bg 'long-running-command' Enter
# ... later ...
tmux capture-pane -t bg -p | tail -20 # check output
Start roachdev claude in a new pane with a prompt
tmux new-session -d -s dev -c ~/project
tmux send-keys -t dev "roachdev claude --prompt 'fix the failing tests'" Enter
Monitor a long-running command
tmux new-window -t dev -n watch
tmux send-keys -t dev:watch 'watch -n 5 curl -s http://localhost:8080/health' Enter
# Check on it later:
tmux capture-pane -t dev:watch -p
Multi-pane development layout
tmux new-session -d -s work -c ~/project
tmux split-window -t work -h # editor | terminal
tmux split-window -t work:0.1 -v # editor | terminal / logs
tmux send-keys -t work:0.1 'make watch' Enter
tmux send-keys -t work:0.2 'tail -f app.log' Enter
tmux select-layout -t work:0 main-vertical
Wait for a command to finish
# Poll until the shell prompt reappears
while ! tmux capture-pane -t myapp:0.0 -p | tail -1 | grep -q '\$'; do
sleep 2
done
echo "Command finished"
tmux capture-pane -t myapp:0.0 -p | tail -20
More from arjunmahishi/dotfiles
acli-jira
Use acli to manage Jira tickets -- search, view, create, edit, transition, assign, comment, and more from the command line.
147pup
Use pup to query Datadog metrics and logs -- search, query, aggregate, list, and analyze observability data from the command line.
8tsq
Use tsq to extract structured code information with tree-sitter queries, symbols, outlines, and references across languages.
8excalidraw-obsidian
Create or update Excalidraw diagrams in the Obsidian vault as .md files compatible with the obsidian-excalidraw-plugin.
6playwright-cli
Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages.
2