42 lines
959 B
Bash
Executable file
42 lines
959 B
Bash
Executable file
#!/bin/sh
|
|
# tmux wrapper script to attach to unattached sessions and auto number session
|
|
|
|
new_session () {
|
|
n=1
|
|
sessions="$(tmux ls -F '#S' 2> /dev/null )"
|
|
while :; do
|
|
for session in $sessions; do
|
|
if [ "$n" = "$session" ]; then
|
|
n=$((n+1))
|
|
continue 2
|
|
fi
|
|
done
|
|
break
|
|
done
|
|
tmux new-session -s $n 2> /dev/null
|
|
}
|
|
attach_session () {
|
|
for session in $(tmux ls -F '#{?session_attached,,#S}' 2> /dev/null); do
|
|
if [ ! -z "$session" ]; then
|
|
tmux attach -t "${session}" 2> /dev/null
|
|
return
|
|
fi
|
|
done
|
|
new_session
|
|
}
|
|
|
|
if [ "$1" = "-d" ]; then
|
|
SH_TMUX_PID=$(tmux show-environment | sed -n 's/^SH_TMUX_PID=//p')
|
|
kill -USR1 $SH_TMUX_PID
|
|
tmux detach-client
|
|
else
|
|
trap 'NOTMUX=y exec $SHELL' USR1
|
|
export SH_TMUX_PID=$$
|
|
|
|
if [ "$1" != "-n" ]; then
|
|
attach_session
|
|
else
|
|
new_session
|
|
fi
|
|
fi
|