diff --git a/modules/tmux/README.md b/modules/tmux/README.md index f6d375b0..c548254d 100644 --- a/modules/tmux/README.md +++ b/modules/tmux/README.md @@ -31,6 +31,17 @@ You can change the default session name with: zstyle ':prezto:module:tmux:session' name '' ``` +A session name may also be specified in an environment variable before ZSH runs. + +```sh +env tmux_session='' zsh +``` + +This can be useful for example to connect to a specific remote session +connecting via SSH (note that OpenSSH needs to be configured to pass on that +environment variable). It can also be used with window managers to set keybindings +that launch terminals with specific sessions. + With `auto-start` enabled, you may want to control how multiple sessions are managed. The `destroy-unattached` option of tmux controls if the unattached sessions must be kept alive, making sessions available for later use, configured diff --git a/modules/tmux/init.zsh b/modules/tmux/init.zsh index 17006c82..9b5a4130 100644 --- a/modules/tmux/init.zsh +++ b/modules/tmux/init.zsh @@ -29,16 +29,17 @@ if [[ -z "$TMUX" && -z "$EMACS" && -z "$VIM" && -z "$INSIDE_EMACS" && "$TERM_PRO ); then tmux start-server - # Create a 'prezto' session if no session has been defined in tmux.conf. - if ! tmux has-session 2> /dev/null; then - zstyle -s ':prezto:module:tmux:session' name tmux_session || tmux_session='prezto' + # Make sure we have a session to connect to, either named via an environment + # variable, the default style as documented, or 'prezto' for last resort + [[ -z "${tmux_session:// }" ]] && zstyle -s ':prezto:module:tmux:session' name tmux_session || : ${tmux_session:=prezto} + if ! tmux has-session -t "$tmux_session" 2> /dev/null; then tmux \ new-session -d -s "$tmux_session" \; \ set-option -t "$tmux_session" destroy-unattached off &> /dev/null fi - # Attach to the 'prezto' session or to the last session used. (detach first) - exec tmux $_tmux_iterm_integration attach-session -d + # Attach to the session name requested in an environment variable or the default (detaching others) + exec tmux $_tmux_iterm_integration attach-session -t "$tmux_session" -d fi #