#!/bin/bash

SOCKETS_DIR=/tmp/tmux-`id -u`
[[ ! -e $SOCKETS_DIR ]] && mkdir -p -m 0700 $SOCKETS_DIR
SOCKETS=`find $SOCKETS_DIR -maxdepth 1 -type s -exec basename {} ';'`
# remove dead sockets
for socket in $SOCKETS; do
    tmux -L $socket list-sessions &> /dev/null || rm -f $SOCKETS_DIR/$socket
done
TMUX_VERSION=`tmux -V`
TMUX_VERSION=${TMUX_VERSION#tmux }
EXTRA_ARGS=()
#EXTRA_ARGS=(\; rename-window "")
#[[ $TERM =~ xterm || $TERM =~ rxvt ]] && EXTRA_ARGS+=(\; set -gq xterm-keys on)
# ^ xterm-keys causes some key combinations to have weird effects, like Shift-Enter which seems to just capitalize a bunch of stuff.
#if expr $TMUX_VERSION '>=' 1.7 &>/dev/null; then
#    EXTRA_ARGS+=(\; setw -gq window-status-separator " | ")
#fi

add_socket() {
    if [[ -z ${1-} ]]; then
        echo -n " socket name: " && read sname
    elif [[ ${1-} == -n* ]]; then
        sname=tmux
    else
        sname=$1
    fi
    sname=${sname:-tmux}
    trsname=$(echo $sname | tr -c '[:alnum:]\n' '[_*]')

    if [[ $sname = SHARED ]]; then
        tmux -L SHARED new
        return
    fi

    suffix=
    real_sname=$sname$suffix
    real_trsname=$trsname$suffix
    while [[ -e $SOCKETS_DIR/$real_trsname ]]; do
        let suffix+=1
        real_sname=$sname$suffix
        real_trsname=$trsname$suffix
        if [[ $suffix -gt 99 ]]; then
            real_sname=default
            break
        fi
    done
    tmux_on_socket="tmux -L $real_trsname"
#    if $tmux_on_socket list-sessions | grep -q -v '(attached)'; then
#        $tmux_on_socket attach-session
#    else
        if [[ $real_sname != default ]]; then
            $tmux_on_socket new -s "$real_sname" "${EXTRA_ARGS[@]}"
        else
            $tmux_on_socket new "${EXTRA_ARGS[@]}"
        fi
#    fi
}

# TODO use select to select from SOCKETS
add_socket "$@"



