zshrc.d/30-functions-tmux.zrc
changeset 33 1400f5ed243c
parent 32 0df5ad40ffb9
child 39 fc97d6cf8de4
equal deleted inserted replaced
32:0df5ad40ffb9 33:1400f5ed243c
     9 
     9 
    10 function sss() {
    10 function sss() {
    11     local TTYLOCKER="${TTYLOCKER:-$HOME/bin/ttylocker}"
    11     local TTYLOCKER="${TTYLOCKER:-$HOME/bin/ttylocker}"
    12     local SCREENBIN="/usr/bin/screen"
    12     local SCREENBIN="/usr/bin/screen"
    13     local TMUXBIN="/usr/bin/tmux"
    13     local TMUXBIN="/usr/bin/tmux"
       
    14     local session="$1"
    14 
    15 
    15     if [[ -x $SCREENBIN ]]; then
    16     if [[ -x $SCREENBIN ]]; then
    16         $SCREENBIN -q -list
    17         $SCREENBIN -q -list $session
    17         local r=$?
    18         local r=$?
    18         if (( r == 11 )); then
    19         if (( r == 11 )); then
    19             # There is 1 usable Screen session, let's go
    20             # There is 1 usable Screen session, let's go
    20             [[ -x "$TTYLOCKER" ]] && export LOCKPRG="$TTYLOCKER"
    21             [[ -x "$TTYLOCKER" ]] && export LOCKPRG="$TTYLOCKER"
    21             exec $SCREENBIN -r -x
    22             exec $SCREENBIN -r -x $session
    22         elif (( r > 11 )); then
    23         elif (( r > 11 )); then
    23             # There are several usable Screen sessions, heh
    24             # There are several usable Screen sessions, heh
    24             echo "There are several usable Screen sessions..."
    25             echo "There are several usable Screen sessions..."
    25             return
    26             return
    26         fi
    27         fi
    27     fi
    28     fi
    28 
    29 
    29     # No usable GNU/Screen session, let's try tmux then.
    30     # No usable GNU/Screen session, let's try tmux then.
    30     if [[ -x "$TMUXBIN" ]]; then
    31     if [[ -x "$TMUXBIN" ]]; then
       
    32         if [[ -n $session ]]; then
       
    33             $TMUXBIN has-session -t "$session" &&
       
    34                 exec $TMUXBIN attach-session -t "$1"
       
    35             return # Exit function with error code
       
    36         fi
    31         # Number of tmux sessions
    37         # Number of tmux sessions
    32         integer n=$($TMUXBIN list-sessions 2>/dev/null | wc -l)
    38         integer n=$($TMUXBIN list-sessions 2>/dev/null | wc -l)
    33         if (( n == 1 )); then
    39         if (( n == 1 )); then
    34             # Attach the session
    40             # Attach the session
    35             exec $TMUXBIN attach # -t "$($TMUXBIN list-session -F '#{session_id}')"
    41             exec $TMUXBIN attach # -t "$($TMUXBIN list-session -F '#{session_id}')"