# Scripting & Automation psmux supports tmux-compatible commands for scripting and automation. ## Window & Pane Control ```powershell # Create a new window psmux new-window # Split panes psmux split-window -v # Split vertically (top/bottom) psmux split-window -h # Split horizontally (side by side) # Navigate panes psmux select-pane -U # Select pane above psmux select-pane -D # Select pane below psmux select-pane -L # Select pane to the left psmux select-pane -R # Select pane to the right # Navigate windows psmux select-window -t 1 # Select window by index (default base-index is 1) psmux next-window # Go to next window psmux previous-window # Go to previous window psmux last-window # Go to last active window # Kill panes and windows psmux kill-pane psmux kill-window psmux kill-session ``` ## Sending Keys ```powershell # Send text directly psmux send-keys "ls -la" Enter # Send keys literally (no parsing) psmux send-keys -l "literal text" # Special keys supported: # Enter, Tab, Escape, Space, Backspace # Up, Down, Left, Right, Home, End # PageUp, PageDown, Delete, Insert # F1-F12, C-a through C-z (Ctrl+key) ``` ## Pane Information ```powershell # List all panes in current window psmux list-panes # List all windows psmux list-windows # Capture pane content psmux capture-pane # Display formatted message with variables psmux display-message "#S:#I:#W" # Session:Window Index:Window Name ``` ## Paste Buffers ```powershell # Set paste buffer content psmux set-buffer "text to paste" # Paste buffer to active pane psmux paste-buffer # List all buffers psmux list-buffers # Show buffer content psmux show-buffer # Delete buffer psmux delete-buffer ``` ## Pane Layout ```powershell # Resize panes psmux resize-pane -U 5 # Resize up by 5 psmux resize-pane -D 5 # Resize down by 5 psmux resize-pane -L 10 # Resize left by 10 psmux resize-pane -R 10 # Resize right by 10 # Swap panes psmux swap-pane -U # Swap with pane above psmux swap-pane -D # Swap with pane below # Rotate panes in window psmux rotate-window # Toggle pane zoom psmux zoom-pane ``` ## Session Management ```powershell # Check if session exists (exit code 0 = exists) psmux has-session -t mysession # Rename session psmux rename-session newname # Respawn pane (restart shell) psmux respawn-pane ``` ## Format Variables The `display-message` command supports these variables: | Variable | Description | |----------|-------------| | `#S` | Session name | | `#I` | Window index | | `#W` | Window name | | `#P` | Pane ID | | `#T` | Pane title | | `#H` | Hostname | ## Advanced Commands ```powershell # Discover supported commands psmux list-commands # Server/session management psmux kill-server psmux list-clients psmux switch-client -t other-session # Config at runtime psmux source-file ~/.psmux.conf psmux show-options psmux set-option -g status-left "[#S]" # Layout/history/stream control psmux next-layout psmux previous-layout psmux clear-history psmux pipe-pane -o "cat > pane.log" # Hooks psmux set-hook -g after-new-window "display-message created" psmux show-hooks ``` ## Target Syntax (`-t`) psmux supports tmux-style targets: ```powershell # window by index in session psmux select-window -t work:2 # specific pane by index psmux send-keys -t work:2.1 "echo hi" Enter # pane by pane id psmux send-keys -t %3 "pwd" Enter # window by window id psmux select-window -t @4 ```