2014-08-25 19:52:07 +00:00
|
|
|
# Tmux Session Saver
|
|
|
|
|
2014-08-27 19:31:10 +00:00
|
|
|
Persists `tmux` environment across system restarts.
|
2014-08-26 14:07:04 +00:00
|
|
|
|
2014-08-27 19:31:10 +00:00
|
|
|
Tmux is great, except when you have to restart your computer. You loose all the
|
|
|
|
running programs, working directories, pane layouts etc.
|
|
|
|
There are helpful management tools out there, but they require initial
|
|
|
|
configuration and continuous updates as your workflow evolves or you start new
|
|
|
|
projects.
|
|
|
|
|
|
|
|
Enter `tmux-session-saver`: tmux persistence without configuration so there are
|
|
|
|
no interruptions in your workflow.
|
|
|
|
|
2014-08-27 23:09:55 +00:00
|
|
|
It will even (optionally) [restore vim sessions](#restoring-vim-sessions)!
|
|
|
|
|
|
|
|
### Key bindings
|
|
|
|
|
|
|
|
- `prefix + Alt-s` - save
|
|
|
|
- `prefix + Alt-r` - restore
|
|
|
|
|
2014-08-27 19:31:10 +00:00
|
|
|
### About
|
|
|
|
|
|
|
|
This plugin goes to great lengths to save and restore all the details from your
|
|
|
|
`tmux` environment. Here's what's been taken care of:
|
|
|
|
|
|
|
|
- all sessions, windows, panes and their order
|
|
|
|
- current working directory for each pane
|
2014-08-27 23:09:55 +00:00
|
|
|
- **exact pane layouts** within windows
|
2014-08-27 19:31:10 +00:00
|
|
|
- active and alternative session
|
|
|
|
- active and alternative window for each session
|
|
|
|
- active pane for each window
|
|
|
|
- programs running within a pane! More details in the [configuration section](#configuration).
|
2014-08-27 23:09:55 +00:00
|
|
|
- restoring vim sessions (optional). More details in
|
|
|
|
[restoring vim sessions](#restoring-vim-sessions).
|
2014-08-27 19:31:10 +00:00
|
|
|
|
|
|
|
Requirements / dependencies: `tmux 1.9` or higher, `pgrep`
|
2014-08-26 22:11:13 +00:00
|
|
|
|
2014-08-26 14:07:04 +00:00
|
|
|
### Installation with [Tmux Plugin Manager](https://github.com/tmux-plugins/tpm) (recommended)
|
|
|
|
|
|
|
|
Add plugin to the list of TPM plugins in `.tmux.conf`:
|
|
|
|
|
|
|
|
set -g @tpm_plugins " \
|
|
|
|
tmux-plugins/tpm \
|
|
|
|
tmux-plugins/tmux-session-saver \
|
|
|
|
"
|
|
|
|
|
|
|
|
Hit `prefix + I` to fetch the plugin and source it. You should now be able to
|
|
|
|
use the plugin.
|
|
|
|
|
|
|
|
### Manual Installation
|
|
|
|
|
|
|
|
Clone the repo:
|
|
|
|
|
|
|
|
$ git clone https://github.com/tmux-plugins/tmux-session-saver ~/clone/path
|
|
|
|
|
|
|
|
Add this line to the bottom of `.tmux.conf`:
|
|
|
|
|
|
|
|
run-shell ~/clone/path/session_saver.tmux
|
|
|
|
|
|
|
|
Reload TMUX environment:
|
|
|
|
|
|
|
|
# type this in terminal
|
|
|
|
$ tmux source-file ~/.tmux.conf
|
|
|
|
|
|
|
|
You should now be able to use the plugin.
|
|
|
|
|
2014-08-27 19:31:10 +00:00
|
|
|
### Configuration
|
|
|
|
|
2014-08-28 12:35:49 +00:00
|
|
|
Only a conservative list of programs is restored by default:
|
2014-08-28 21:39:53 +00:00
|
|
|
`vi vim emacs man less more tail top htop irssi irb pry "~rails console"`.
|
2014-08-27 19:31:10 +00:00
|
|
|
Open a github issue if you think some other program should be on the default list.
|
|
|
|
|
2014-08-28 21:39:53 +00:00
|
|
|
- Restore additional programs with the setting in `.tmux.conf`:
|
2014-08-27 19:31:10 +00:00
|
|
|
|
2014-08-28 12:35:49 +00:00
|
|
|
set -g @session-saver-processes 'ssh psql mysql sqlite3'
|
2014-08-27 19:31:10 +00:00
|
|
|
|
2014-08-28 21:39:53 +00:00
|
|
|
- Programs with arguments should be double quoted:
|
|
|
|
|
|
|
|
set -g @session-saver-processes 'some_program "git log"'
|
|
|
|
|
|
|
|
- Start with tilde to restore a program whose process contains target name:
|
|
|
|
|
|
|
|
set -g @session-saver-processes 'some_program "~rails server"'
|
|
|
|
|
2014-08-27 19:31:10 +00:00
|
|
|
- Don't restore any programs:
|
|
|
|
|
|
|
|
set -g @session-saver-processes 'false'
|
|
|
|
|
|
|
|
- Restore **all** programs (be careful with this!):
|
|
|
|
|
|
|
|
set -g @session-saver-processes ':all:'
|
|
|
|
|
2014-08-27 23:09:55 +00:00
|
|
|
#### Restoring vim sessions
|
|
|
|
|
|
|
|
- save vim sessions - I recommend [tpope/vim-obsession](tpope/vim-obsession)
|
|
|
|
- in `.tmux.conf`:
|
|
|
|
|
|
|
|
set -g @session-saver-strategy-vim "session"
|
|
|
|
|
|
|
|
`tmux-session-saver` will now restore vim sessions if `Sessions.vim` file is
|
|
|
|
present.
|
|
|
|
|
2014-08-27 19:31:10 +00:00
|
|
|
### Reporting bugs and contributing
|
|
|
|
|
|
|
|
Code contributions are welcome!
|
|
|
|
|
|
|
|
If you find a bug please report it in the issues. When reporting a bug please
|
2014-08-28 14:43:32 +00:00
|
|
|
attach:
|
|
|
|
- a file symlinked to `~/.tmux/sessions/last`.
|
|
|
|
- your `.tmux.conf`
|
|
|
|
- if you're getting an error paste it to a [gist](https://gist.github.com/) and
|
|
|
|
link it in the issue
|
2014-08-27 19:31:10 +00:00
|
|
|
|
|
|
|
### Credits
|
|
|
|
|
2014-08-27 23:09:55 +00:00
|
|
|
[Mislav Marohnić](https://github.com/mislav) - the idea for the plugin came from his
|
2014-08-27 19:31:10 +00:00
|
|
|
[tmux-session script](https://github.com/mislav/dotfiles/blob/master/bin/tmux-session).
|
|
|
|
|
2014-08-25 19:52:07 +00:00
|
|
|
### License
|
|
|
|
[MIT](LICENSE.md)
|