aboutsummaryrefslogtreecommitdiff
path: root/sh/shrc.d/tmux.sh
blob: 32780c9d68647973b11be9f55cbb5b1ac45475e3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Attach to existing tmux session rather than create a new one if possible
tmux() {

    # If given any arguments, just use them as they are
    if [ "$#" -gt 0 ] ; then
        :

    # If a session exists, just attach to it
    elif command tmux has-session 2>/dev/null ; then
        set -- attach-session -d

    # Create a new session with an appropriate name
    else
        set -- new-session -s "${TMUX_SESSION:-default}"
    fi

    # Execute with concluded arguments
    command tmux "$@"
}

# If we have a SHLVL set from one of the shells that does that (bash, ksh93,
# zsh), then set a SHLVL-derived value that takes tmux into account if we
# haven't already. This can be used to show the current SHLVL in the prompt for
# more advanced shells.
if [ -n "$SHLVL" ] && [ -n "$TMUX" ] && [ -z "$TMUX_SHLVL" ] ; then
    TMUX_SHLVL=$((SHLVL - 1))
    export TMUX_SHLVL
fi