tmux-config¶
A tmux configuration that is readable, portable, and fast — and documented well enough that you can change any part of it without reading the tmux manual first.
It runs on macOS, Linux, WSL2, and MSYS2/Cygwin from the same files, with no plugins required.
Why another tmux config¶
Most shared tmux configs fall into one of two traps: a 400-line file where every setting is entangled with every other, or a plugin stack where a dozen repositories decide your behaviour and any of them can break on update.
This one takes a different position:
Everything you would normally want to change lives in one file, as a named option with a documented default.
set -g @cfg_theme "catppuccin-mocha"
set -g @cfg_prefix "C-b"
set -g @cfg_mouse "on"
Change a value, press Ctrl+B R, and it applies. You do not need to know
which tmux option, which key table, or which of the seven pane-*-style
settings implements it.
What you get¶
-
One file to configure
Every setting is a named
@cfg_*option with its default, its accepted values, and the reason it is set that way written next to it. -
Six themes, ten variables
Themes define ten colours and nothing else. Writing your own is a twenty-line file that touches no layout.
-
Clipboard that works everywhere
Detects macOS, Wayland, X11, WSL, and Cygwin, plus OSC 52 so copy works over SSH.
-
Degrades instead of breaking
True colour, Unicode glyphs and clipboard route are detected, not assumed. No UTF-8 locale? ASCII separators, automatically.
-
Plugins vendored, not fetched
Pinned inside the repo via
git subtree. No plugin manager, no download at startup, works offline. -
No forks in the hot path
Conditionals resolve at parse time. The status bar runs no subprocesses. Plugins are off by default.
Quick start¶
git clone https://github.com/MichaelWeissDEV/tmux-config.git ~/.config/tmux
cd ~/.config/tmux && ./install.sh
The installer backs up anything already there, checks your tmux version, and verifies the config loads before it finishes. Then:
Full instructions, including the Windows situation, are in Installation.
Windows users, read this first
tmux does not run on native Windows — not in PowerShell, not in
cmd.exe, not in Windows Terminal by itself. It needs WSL2, MSYS2, or
Cygwin. This config supports all three, but the requirement is real and no
configuration can remove it. See the
platform matrix.
The three files that matter¶
| File | What it is for |
|---|---|
config/00-options.conf |
Change settings here. Every tunable, with documented defaults. |
local.conf |
Add your own things here. Gitignored, loaded last, survives git pull. Start from local.conf.example, which ships every recipe commented out. |
tmux.conf |
The loader. You should not need to edit it. |
Everything else is a module that reads your options and applies them.
Requirements¶
- tmux 3.3 or newer. Checked at startup with a clear message if not. (Why 3.3?)
- A UTF-8 locale, for the status bar separators. (What happens without one)
- That is all. No Nerd Font, no Python, no plugin manager.
Where to go next¶
- Never used tmux before? → Installation, then Keybindings
- Want to change how it looks? → Theming
- Want to change how it behaves? → Configuration
- Want ready-made additions to paste in? → Recipes
- Something is broken? → Troubleshooting
- On a weird terminal, or over SSH? → Capabilities
- Using Neovim? → Neovim
- Curious why it is built this way? → Philosophy and Architecture
- Debugging? → Diagnostics