How To Manage And Restore Tmux Sessions In Linux
Managing and Restoring Tmux Sessions in Linux
Tmux is a powerful terminal multiplexer that enhances productivity by allowing multiple sessions, windows, and panes to be managed within a single terminal window. However, by default, tmux sessions are lost upon system restart, which can be frustrating. To overcome this, we can use plugins like tmux-resurrect
and tmux-continuum
to save and restore tmux sessions seamlessly.
Installing Tmux and Tmux Plugin Manager
Before diving into the plugins, ensure you have tmux installed. On most Linux distributions, you can install tmux using the package manager. For example, on Debian-based systems:
sudo apt-get install tmux
Next, you need to install the Tmux Plugin Manager (TPM). TPM simplifies the process of managing plugins for tmux. To install TPM, follow these steps:
-
Clone the TPM repository:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
-
Add TPM to your
.tmux.conf
file:set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tmux-resurrect' set -g @plugin 'tmux-plugins/tmux-continuum' set -g @continuum-restore 'on'
-
Reload the TPM configuration:
tmux source ~/.tmux.conf
-
Install the plugins:
tmux prefix + I
Using Tmux-Resurrect and Tmux-Continuum
Manual Saving and Restoring
tmux-resurrect
allows you to manually save and restore your tmux environment. Here are the key bindings to do so:
- Save:
prefix + Ctrl-s
- Restore:
prefix + Ctrl-r
These commands save and restore all details of your tmux environment, including sessions, windows, panes, current working directories, and even the exact pane layouts.
Automating Saving and Restoring
tmux-continuum
automates the saving and restoring process, making it even more convenient. Here’s what it offers:
- Continuous Saving: The tmux environment is saved every 15 minutes in the background without impacting your workflow.
- Automatic Tmux Start: Tmux is automatically started after the computer or server is turned on.
- Automatic Restore: The last saved environment is automatically restored when tmux is started.
To enable automatic restore, ensure the following line is in your .tmux.conf
:
set -g @continuum-restore 'on'
Restoring Sessions After Reboot
After a system reboot, you can restore your tmux sessions using the following steps:
-
Start a new tmux session:
tmux new-session
-
Restore the saved sessions:
prefix + Ctrl-r
-
Kill the new session created by
new-session
:
tmux kill-session -t <session-name>
-
Attach to the restored session:
tmux attach
For a more streamlined approach, you can create an alias to handle this process in one command:
alias mux='pgrep -vx tmux > /dev/null && tmux new -d -s delete-me && tmux run-shell ~/.tmux/plugins/tmux-resurrect/scripts/restore.sh && tmux kill-session -t delete-me && tmux attach || tmux attach'
This alias checks if tmux is running, creates a temporary session, restores the saved environment, kills the temporary session, and attaches to the restored session.
Additional Features and Customizations
Optional Features
- Restoring Vim and Neovim Sessions:
tmux-resurrect
can optionally restore vim and neovim sessions, which is particularly useful for users who rely heavily on these editors. - Restoring Pane Contents: You can configure
tmux-resurrect
to restore the contents of panes, which can be useful for certain workflows.
Changing Key Bindings and Hooks
You can customize the key bindings for saving and restoring sessions by modifying the .tmux.conf
file. For example:
bind-key C-s save-session
bind-key C-r restore-session
Additionally, you can set up hooks to perform actions before or after saving and restoring sessions.
Directory for Saved Sessions
By default, tmux-resurrect
saves the tmux environment in a specific directory. You can change this directory by configuring the plugin in your .tmux.conf
file.
Summary of Key Points
- Manual Saving and Restoring: Use
prefix + Ctrl-s
to save andprefix + Ctrl-r
to restore sessions. - Automatic Saving and Restoring: Use
tmux-continuum
to automate saving every 15 minutes and restore sessions automatically on tmux start. - Restoring After Reboot: Start a new session, restore the saved sessions, kill the new session, and attach to the restored session.
- Customizations: Configure key bindings, hooks, and the directory for saved sessions to tailor the plugin to your needs.
By leveraging these plugins and configurations, you can ensure that your tmux sessions are always available, even after system restarts, enhancing your productivity and workflow.