You’ve created a tmux session and worked with it. You’ve created a pane layout that works for you, and started your Vim editor.

What happens when you shut down your computer, and start it again later?

Tmux doesn’t remember your sessions. When you restart tmux, you loose all your running programs, etc.

There are two tmux plugins that can help with that: Tmux Resurrect and tmux-continuum.

Installation with Tmux Plugin Manager

Add theses lines to the list of plugins inside tmux.conf:

set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'

Extra Features

You can add some extra functionality to tmux.conf:

## Restore Vim sessions
set -g @resurrect-strategy-vim 'session'
## Restore Neovim sessions
set -g @resurrect-strategy-nvim 'session'
## Restore Panes
set -g @resurrect-capture-pane-contents 'on'
## Restore last saved environment (automatically)
set -g @continuum-restore 'on'

Start tmux Automatically on Boot

OSX

Add this line to tmux.conf:

set -g @continuum-boot 'on'

You can find more information about this feature on GitHub.

Linux

The script only works with systemd.

Add this line to tmux.conf:

set -g @continuum-boot 'on'

Exit tmux, and reload with tmux source-file ~/.tmux.conf.

You’ll find a new service file under ~/.config/systemd/user/tmux.service.

[Unit]
Description=tmux default session (detached)
Documentation=man:tmux(1)

[Service]
Type=forking
Environment=DISPLAY=:0
ExecStart=/usr/bin/tmux new-session -d

ExecStop=/home/owlhoot/.tmux/plugins/tmux-resurrect/scripts/save.sh
ExecStop=/usr/bin/tmux kill-server
KillMode=none

RestartSec=2

[Install]
WantedBy=default.target

Copy the file to etc/systemd/system. You’ll need sudo for that.

sudo cp ~/.config/systemd/user/tmux.service /etc/systemd/system/

Enable the service:

sudo systemctl enable tmux --now