Skip to content

Commit

Permalink
Allow tmux session name to be passed as env var
Browse files Browse the repository at this point in the history
For normal usage this change should be a NOOP. However it enables the
use case where the user might want to predefine what session gets
connected to when the shell is launched. Running `zsh` will still net
you a connection to the last used tmux session or a new one named
"zprezto" if none exists. However `env tmux_session=myname zsh` will
connect you specifically to a session called 'myname' including creating
it if it doesn't exist.

This is particularly useful in window managers where a key binding might
open a terminal with a predefined session or even show a list of current
sessions and open a new terminal connected to that session.

The default session name may still be set using zstyle as documented.
  • Loading branch information
alerque committed Apr 4, 2019
1 parent 1f4601e commit d3462b1
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions modules/tmux/init.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,17 @@ if [[ -z "$TMUX" && -z "$EMACS" && -z "$VIM" && -z "$INSIDE_EMACS" && -z "$VSCOD
); 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 document, 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

#
Expand Down

0 comments on commit d3462b1

Please sign in to comment.