#!/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
