docs: rebuild KB in OKF v0.1 with live-verified facts

Copy of the legacy ~/.pi/agent/docs tree rebuilt as the command-center
knowledge base: concept files promoted to path identity, index listings
stripped of frontmatter, all wikilinks/relative links resolved, every
checkable claim verified against the live fleet (Dankserver = Ryzen 7
7700X + RTX 3090; Strix Halo is Dankclaw), unverifiable claims tagged.
kb-lint exits 0.
This commit is contained in:
Frank
2026-08-28 07:57:13 -07:00
parent 552d1ef8bf
commit 02883d3ed2
116 changed files with 13008 additions and 0 deletions
+409
View File
@@ -0,0 +1,409 @@
---
type: reference
title: tmux
description: Terminal multiplexer configuration, extended-keys setup, keyboard input best practices, and reload/restart procedures.
tags:
- terminal
- multiplexer
- tmux
timestamp: 2026-08-06
---
# tmux Configuration Guide
Complete reference for tmux keyboard configuration, extended-keys, and best practices.
**Verified for tmux 3.6** (June 2026)
---
## Table of Contents
1. [Extended Keys Configuration](#extended-keys-configuration)
2. [Best Practices for Keyboard Input](#best-practices-for-keyboard-input)
3. [Reloading vs. Restarting tmux](#reloading-vs-restarting-tmux)
4. [Essential Configuration Reference](#essential-configuration-reference)
5. [Troubleshooting](#troubleshooting)
---
## Extended Keys Configuration
### What is `extended-keys`?
The `extended-keys` option enables tmux to forward modified key combinations (keys pressed with Shift, Ctrl, Alt/Meta, or other modifiers) to applications running inside tmux. Without this configuration, tmux strips modifier information from certain keys by default.
### Why is it needed?
By default, tmux cannot distinguish between many modified key combinations:
| Key | Without extended-keys | With extended-keys (csi-u) |
|-----|----------------------|---------------------------|
| Enter | `\r` | `\r` |
| Shift+Enter | `\r` (indistinguishable!) | `\x1b[13;2u` |
| Ctrl+Enter | `\r` (indistinguishable!) | `\x1b[13;5u` |
| Alt/Option+Enter | `\x1b\r` | `\x1b[13;3u` |
This affects:
- Applications that rely on modified Enter keys (like Pi, Neovim, etc.)
- Custom keybindings using Shift+Enter, Ctrl+Enter, etc.
- Any application using the Kitty keyboard protocol or CSI-u format
### The Recommended Configuration
Add these lines to `~/.tmux.conf`:
```tmux
# Enable extended key reporting
set -g extended-keys on
# Use CSI-u format (requires tmux 3.5+)
set -g extended-keys-format csi-u
```
### Why `csi-u` format is recommended
tmux supports two formats for extended keys:
1. **xterm (default)**: Uses `modifyOtherKeys` format
- `Ctrl+C` → `\x1b[27;5;99~`
- `Ctrl+D` → `\x1b[27;5;100~`
- `Ctrl+Enter` → `\x1b[27;5;13~`
2. **csi-u (recommended)**: Uses CSI-u format
- `Ctrl+C` → `\x1b[99;5u`
- `Ctrl+D` → `\x1b[100;5u`
- `Ctrl+Enter` → `\x1b[13;5u`
The `csi-u` format is more reliable and is the modern standard. Applications like Pi automatically request extended key reporting when Kitty keyboard protocol is not available.
### Requirements
- **tmux 3.5 or later** for `extended-keys-format csi-u`
- Check version: `tmux -V`
- For tmux 3.2–3.4, omit the `extended-keys-format` line. The default xterm format still works
- A terminal emulator that supports extended keys:
- Ghostty
- Kitty
- iTerm2
- WezTerm
- Windows Terminal
---
## Best Practices for Keyboard Input and Keybindings
### Essential Settings
```tmux
# Fix Vim ESC delay (tmux 3.5+ already defaults to 10ms)
set -sg escape-time 0
# Increase scrollback buffer
set -g history-limit 50000
# Start windows and panes at 1, not 0
set -g base-index 1
setw -g pane-base-index 1
# Enable mouse support
set -g mouse on
# Enable focus events for vim autoread
set -g focus-events on
# Set terminal with proper colors
set -g default-terminal "tmux-256color"
set -as terminal-features ",xterm-256color:RGB"
# Aggressive resize for multi-client
setw -g aggressive-resize on
```
### Prefix Key Customization
The default prefix `C-b` is awkward. Common alternatives:
```tmux
# Option 1: Change to Ctrl+a (common, but conflicts with readline)
unbind C-b
set -g prefix C-a
bind-key C-a send-prefix
# Option 2: Use Alt+w or another comfortable combination
set -g prefix M-w
bind-key M-w send-prefix
```
### Intuitive Split Commands
Replace the default `"` and `%` with visual separators:
```tmux
# Split panes using | and -
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %
```
### Vim-Style Pane Navigation
```tmux
# Switch panes using Alt+arrow without prefix
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Or use vim-style hjkl (requires prefix)
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
```
### Copy Mode Configuration
```tmux
# Use vi keys in copy mode
setw -g mode-keys vi
# Vi-style copy bindings
bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi y send -X copy-pipe-and-cancel "xclip -selection clipboard -i" # Linux
# bind -T copy-mode-vi y send -X copy-pipe-and-cancel "pbcopy" # macOS
```
### Quick Config Reload Binding
```tmux
# Reload config with C-a r (or your prefix + r)
bind r source-file ~/.tmux.conf \; display-message "Config reloaded!"
```
---
## Reloading vs. Restarting tmux
### Reloading Configuration (Preserves Sessions)
For most configuration changes, you can reload without losing sessions:
**Method 1: Command-line**
```bash
tmux source-file ~/.tmux.conf
```
**Method 2: From within tmux**
1. Press your prefix key (default `C-b`)
2. Type `:` to open the command prompt
3. Enter: `source-file ~/.tmux.conf`
**Method 3: Using a keybinding** (recommended)
```tmux
bind r source-file ~/.tmux.conf \; display-message "Config reloaded!"
```
Then press `C-b r` (or your configured prefix + r).
### When Full Restart is Required
Some changes require a complete tmux server restart:
- `extended-keys` and `extended-keys-format` changes
- `default-terminal` changes
- Server-level options like `message-limit`
- Changes to terminal features
**Full restart procedure:**
```bash
# 1. Detach from current session (if attached)
# Press: C-b d
# 2. Kill the tmux server (ends all sessions)
tmux kill-server
# 3. Start fresh
tmux
```
**Alternative: Restart while preserving sessions** (tmux 3.2+)
```bash
# 1. Save session state (requires tmux-resurrect plugin)
# Press: C-a C-s
# 2. Kill server
tmux kill-server
# 3. Restart and restore
tmux
# Press: C-a C-r (to restore sessions)
```
### Quick Reference: Reload vs. Restart
| Change Type | Reload OK? | Restart Required? |
|-------------|------------|-------------------|
| Keybindings | ✅ Yes | ❌ No |
| Status bar styles | ✅ Yes | ❌ No |
| Mouse settings | ✅ Yes | ❌ No |
| Copy mode bindings | ✅ Yes | ❌ No |
| `extended-keys` | ❌ No | ✅ Yes |
| `extended-keys-format` | ❌ No | ✅ Yes |
| `default-terminal` | ❌ No | ✅ Yes |
| `escape-time` | ⚠️ Sometimes | ✅ Yes (for full effect) |
---
## Essential Configuration Reference
### Complete Production-Ready `~/.tmux.conf`
```tmux
# ============================================
# ESSENTIAL SETTINGS
# ============================================
# Extended keys (required for modern applications)
set -g extended-keys on
set -g extended-keys-format csi-u
# Fix Vim ESC delay
set -sg escape-time 0
# Increase scrollback buffer
set -g history-limit 50000
# Start windows and panes at 1, not 0
set -g base-index 1
setw -g pane-base-index 1
# Enable mouse support
set -g mouse on
# Enable focus events for vim autoread
set -g focus-events on
# Set terminal with proper colors
set -g default-terminal "tmux-256color"
set -as terminal-features ",xterm-256color:RGB"
# Aggressive resize for multi-client
setw -g aggressive-resize on
# ============================================
# KEY BINDINGS
# ============================================
# Change prefix to Ctrl+a (more ergonomic)
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# Reload config
bind r source-file ~/.tmux.conf \; display "Config reloaded!"
# Better pane splitting (and keep current path)
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
# Vim-style pane navigation
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Vim-style pane resizing
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
# ============================================
# COPY MODE
# ============================================
# Use vi keys
setw -g mode-keys vi
# Vi-style copy bindings
bind -T copy-mode-vi v send -X begin-selection
# Linux:
bind -T copy-mode-vi y send -X copy-pipe-and-cancel "xclip -selection clipboard -i"
# macOS:
# bind -T copy-mode-vi y send -X copy-pipe-and-cancel "pbcopy"
```
---
## Troubleshooting
### Modified keys still not working
1. **Check tmux version:**
```bash
tmux -V
```
Must be 3.5+ for `extended-keys-format csi-u`.
2. **Verify configuration is loaded:**
```bash
tmux show-options -g extended-keys
tmux show-options -g extended-keys-format
```
3. **Ensure terminal supports extended keys:**
- Test in Ghostty, Kitty, iTerm2, WezTerm, or Windows Terminal
- Some older terminals do not support the CSI-u format
4. **Full restart required:**
```bash
tmux kill-server
tmux
```
### Configuration changes not taking effect
- **Most changes:** Use `tmux source-file ~/.tmux.conf`
- **Extended keys changes:** Must restart with `tmux kill-server`
- **Check for errors:** Look at the first session created after restart for error messages
### Escape key delay
If you experience delay when pressing Escape:
```tmux
set -sg escape-time 0
```
### Mouse scrolling not working in copy mode
```tmux
bind -n WheelUpPane copy-mode -e
bind -n WheelDownPane copy-mode -e
```
### Clipboard not working
For Linux:
```tmux
bind -T copy-mode-vi y send -X copy-pipe-and-cancel "xclip -selection clipboard -i"
```
For macOS:
```tmux
bind -T copy-mode-vi y send -X copy-pipe-and-cancel "pbcopy"
```
---
## References
- [tmux Manual Page](https://man7.org/linux/man-pages/man1/tmux.1.html)
- [tmux GitHub Wiki](https://github.com/tmux/tmux/wiki)
- [Pi tmux Setup Documentation](https://pi.dev/docs/latest/tmux)
---
*Documentation last updated: June 2026*
*Tested with tmux 3.6b*