-## zshmux 2.0
+## zshmux 2.1
### about
when a new shell is launched **zshmux** checks if there are any **tmux** sessions.
+
if you are not already in a **tmux** session **zshmux** will list all currently active sessions,
then ask if you want to attach a currently running session, or make a new session in the shell.
if there is only one **tmux** session running and not attached to any clients, **zshmux**
#!/bin/bash
-# start tmux server if it's not already running
-[[ ! $(pgrep tmux) ]] && tmux start
-
# exit if already in a tmux session
[[ -n $TMUX ]] && return
+# start tmux server if it's not already running
+[[ ! $(pgrep tmux) ]] && tmux start
+
# check if any sessions exit
if [[ $(tmux list-sessions | wc -l) -ne 0 ]]; then
- if [[ $(tmux list-sessions -F"#{?session_attached,,x}" | grep "x" | wc -l) -eq 1 ]] && [[ -z $SSH_CLIENT ]]; then
- tmux attach-session -t $(tmux list-sessions -F"#{?session_attached,,#S}" )
+ if [[ $(tmux list-sessions -F"#{?session_attached,,x}" | grep -c "x" ) -eq 1 ]] && [[ -z $SSH_CLIENT ]]; then
+ tmux attach-session -t "$(tmux list-sessions -F"#{?session_attached,,#S}" )"
return
else
printf '\033[32;1mcurrent \033[33;1mtmux \033[32;1msessions\033[0m:\n'
- tmux list-sessions -F"#S - (#{?session_attached,attached,not attached})"
- printf '\033[34;1mattach session?\033[0;m: [\033[35;1mname\033[0m] \033[37;2m(empty if none)\033[0m: '
+ # sed + echo is to highlight stars in green
+ echo -e "$(tmux list-sessions -F"#S #{?session_attached,*,}" | sed 's_\*_\\033[32;1m*\\033[0m_')"
+ printf '\033[34;1mattach or create\033[0;m \033[37;2m(empty if none)\033[0m: '
fi
else
printf '\033[34;1mno \033[33;1mtmux \033[34;1msessions active\n'
- printf '\033[34;1mcreate new session?\033[0;m: [\033[35;1mname\033[0m] \033[37;2m(empty if none)\033[0m: '
+ printf '\033[34;1mcreate new session?\033[0;m \033[37;2m(empty if none)\033[0m: '
fi
-read session
+read -r session
# start requested session - since it uses grep you just have to put enough of a unique identifier to select
if [[ -n $session ]]; then
if tmux list-sessions -F"#S" | grep -q "$session"; then
- tmux attach-session -t $session
+ tmux attach-session -t "$session"
return
elif [[ $session == new ]]; then
tmux new-session
return
else
- tmux new-session -s $session
+ tmux new-session -s "$session"
return
fi
fi