Sauvegarder les sessions tmux

Keywords: #ops

Tmux

Tmux est un terminal multiplexer, particulièrement utile utilisé via ssh lorsque l’on accède à la même machine depuis plusieurs clients.

J’utilise tmux extensivement pour basculer de mon laptop à mon desktop facilement.

C’est aussi énormément pratique pour “ranger” ses shells selon différentes activités.

Bref, tmux c’est cool.

Le problème

By design, les sessions tmux ne survive pas au reboot. Comme je suis plutôt rigide dans mes habitudes, j’aimerai recréer mes sessions tmux dans l’était où je les ai laissé avant le reboot. Ce serait particulièrement utile maintenant que j’utilise tmux sur un laptop.

Tmux Plugin Manager

La première étape est d’installer Tmux Plugin Manager (tpm).

Les instructions sont dans le README, mais actuellement c’est tout simple:

Cloner TPM:

git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

Ajouter à la fin de votre ~/tmux.conf:

# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# Other examples:
# set -g @plugin 'github_username/plugin_name'
# set -g @plugin 'github_username/plugin_name#branch'
# set -g @plugin 'git@github.com:user/plugin'
# set -g @plugin 'git@bitbucket.com:user/plugin'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

Utilisation de tmux-resurrect et tmux-continuum

Dans notre ~/tmux.conf, j’ai ajouté:

# Set Tmux plugin to resurrect every time workstation restarted (Ctrl+A Ctrl+S to Save / Ctrl+A Ctrl+R to Resurrect)
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'
# for neovim
set -g @resurrect-strategy-nvim 'session'
# Automatically restore tmux windows when tmux starts.
set -g @continuum-restore 'on'

# Don't auto-launch tmx at machine boot.  Give me a chance to gcert first.
set -g @continuum-boot 'off'

# Preserves what was readable in each pane.
set -g @resurrect-capture-pane-contents 'on'
set -g @resurrect-strategy-vim 'session'

run-shell ~/.tmux/plugins/tmux-resurrect/resurrect.tmux
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

Installation des plugins

Dernière étape, sourcer la config et installer les plugins :

tmux source ~/.tmux.conf

Et enfin dans tmux prefix + I pour lancer l’installation.