diff --git a/user/bin/sh-tmux b/user/bin/sh-tmux new file mode 100755 index 0000000..288e96b --- /dev/null +++ b/user/bin/sh-tmux @@ -0,0 +1,41 @@ +#!/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