tmux
tmux plugins: TPM, and the five worth installing
TPM installs tmux plugins via prefix + I; the real shortlist is tmux-resurrect, tmux-continuum, tmux-sensible, vim-tmux-navigator and tmux-yank.
TPM (Tmux Plugin Manager) is how you install tmux plugins: clone it once, list plugins as
set -g @plugin lines in ~/.tmux.conf, then press prefix and a capital I to fetch them.
Most tmux setups only need three or four plugins — session persistence and pane/vim navigation
cover almost everything people actually reach for. None of this changes the actual tmux commands
covered in tmux commands; plugins add bindings on top, they don't replace
what's already there.
Installing TPM
Clone TPM
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpmList your plugins at the bottom of ~/.tmux.conf
The run line has to come last — everything above it is just a list TPM reads.
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
run '~/.tmux/plugins/tpm/tpm'Reload the config
tmux source-file ~/.tmux.conf (or restart tmux). This makes TPM aware of the plugin list — it
doesn't fetch anything yet.
Install with prefix, then capital I
Press prefix, release, then Shift-i. Not lowercase — that's the gotcha almost everyone
hits once.
Capital I, not lowercase i
prefix I (shift held) installs plugins and reloads the tmux environment. prefix i is unbound
and does nothing. Pressing prefix, then i, and seeing no reaction isn't a bug — it's the wrong
key.
The plugins worth installing
| Plugin | What it does |
|---|---|
| tmux-resurrect | Saves the current layout, panes and running programs; prefix Ctrl-s to save, prefix Ctrl-r to restore |
| tmux-continuum | Autosaves on an interval and can restore automatically when tmux starts — builds on resurrect, doesn't replace it |
| tmux-sensible | A bundle of defaults nearly everyone agrees on: bigger history-limit, shorter escape-time, aggressive-resize |
| vim-tmux-navigator | Ctrl-h/j/k/l cross between vim splits and tmux panes as if they were one grid |
| tmux-yank | Copies a copy-mode selection straight to the system clipboard, detecting pbcopy, xclip, xsel or wl-copy for you |
Session persistence: resurrect and continuum
These are two separate plugins that are almost always installed together, and it's worth being
precise about which one does what. tmux-resurrect is the save/restore mechanism — prefix
Ctrl-s writes the current state to disk, prefix Ctrl-r reads it back. On
its own it's a manual snapshot, not automatic.
tmux-continuum sits on top of it: it calls resurrect's save on a timer, and can call its restore automatically the moment tmux starts.
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-restore 'on'
set -g @continuum-save-interval '15'One caveat worth knowing before you rely on this: continuum restores state once a tmux server
exists, it doesn't itself get tmux running again after a reboot. If your goal is "reboot the box
and the session is just there," you still need something outside tmux — a systemd unit or a
cron @reboot line — to start tmux in the first place. Continuum's own docs cover that wiring;
don't assume it happens for free.
Staying oriented: vim-tmux-navigator and tmux-yank
vim-tmux-navigator is the one people install after they've spent a week hitting prefix then an
arrow key to move out of vim and into the next pane, and getting tired of it. The full config —
both the tmux side and the vim/Neovim side — is in tmux and vim, since it needs
changes in both places to work.
tmux-yank is smaller in scope but removes a real annoyance: without it, a copy-mode selection
only lands in tmux's own paste buffer, and getting it to the system clipboard means piping
through pbcopy or xclip by hand in your config. tmux-yank does that detection for you.
One status-bar theme, if you want one
Plenty of tmux status-bar plugins exist, and most of them are cosmetic — the actual value is in the plugins above, not in the status line. If you want a themed status bar, catppuccin/tmux is a current, actively maintained option worth looking at rather than something abandoned since 2019. Treat this one as taste, not signal.
Most people need three plugins, not thirty
Dotfiles repos with forty-line plugin lists are usually the result of years of "I'll try this" commits that never got removed, not a considered setup. A reasonable core is TPM itself plus tmux-sensible, tmux-resurrect and tmux-continuum, and vim-tmux-navigator if you use vim or Neovim. Add tmux-yank if you copy out of tmux often. Add a status theme if you care what it looks like. Stop there — every additional plugin is something you now have to remember exists when something behaves oddly.
Plugins are why tmux feels slow to start
If tmux takes a visible moment to draw its first prompt, plugins are almost always the cause, not
tmux itself. TPM's run line, and any run-shell hook a plugin registers, execute every time the
first client attaches — each one is a process fork, and they add up linearly with plugin count.
Status-bar segments that shell out on every refresh (battery, CPU, weather-style plugins) cause a
second, separate kind of lag: redraw stutter rather than startup delay, but it reads the same to
the person hitting it.
To find the culprit, comment plugins out of ~/.tmux.conf one at a time and reload, or start a
throwaway session with a stripped config (tmux -f /dev/null) to confirm a plugin-free tmux is
instant — if it is, the slowdown is in the list, not in tmux.
Once tmux-continuum is actually keeping a session alive across reboots, the next question is
usually whether it worked — and checking that from somewhere that isn't the machine itself is the
same problem tmux ssh covers for connections in general. If you'd rather glance
at a session from a browser than reattach over SSH to confirm, that's what mtmux
(npm i -g mtmux) does.
What is TPM in tmux?
Tmux Plugin Manager — a small tmux plugin, installed like any other tool, that reads
set -g @plugin lines from ~/.tmux.conf and fetches, updates and loads the plugins listed
there.
How do I install tmux plugins?
List them as set -g @plugin 'owner/repo' lines in ~/.tmux.conf, reload the config, then press
prefix followed by a capital I inside a tmux session.
Why isn't prefix + I installing my plugins?
The two most common causes: pressing lowercase i instead of I, or the run '~/.tmux/plugins/tpm/tpm' line missing or not being the last line in the config. Reload with
tmux source-file ~/.tmux.conf after any edit and try again.
What's the difference between tmux-resurrect and tmux-continuum?
tmux-resurrect saves and restores state on demand via key bindings. tmux-continuum automates that — it saves on a timer and can restore automatically when tmux starts. Continuum requires resurrect; it doesn't work standalone.
Do tmux plugins slow down startup?
Yes, proportionally to how many you have and what they do. Each plugin's install hooks run once per new client, and status-bar plugins that shell out on every refresh add ongoing redraw lag on top of that. A handful of well-chosen plugins is unnoticeable; thirty rarely is.
Put this to work — mtmux attaches to the tmux server you already run.