32 lines · 625 B · executable
#!/usr/bin/env bash

ensure() {
    if ! command -v "$1" &>/dev/null; then
        printf "%s not found. Please install it (or check your PATH) and try again.\n" "$1"
        exit 1
    fi
}

filter() {
    local height=""
    if [ "$2" != "" ]; then
        height="--height $2"
    fi
    # shellcheck disable=2086
    tmux list-sessions -F "#S" | fzf --header "$1" $height
}

ensure tmux
ensure fzf

if ! tmux ls &>/dev/null; then
    printf "no sessions\n"
    exit 1
fi

if [ "$TMUX" != "" ]; then
    tmux switch-client -t "$(filter "switch session")"
else
    tmux attach-session -t "$(filter "attach session" 12)"
fi