tmux wrapper
This commit is contained in:
parent
1a50e9afd1
commit
1fb9627aa7
41
user/bin/sh-tmux
Executable file
41
user/bin/sh-tmux
Executable file
|
|
@ -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
|
||||||
Loading…
Reference in a new issue