40 lines
1.0 KiB
Bash
40 lines
1.0 KiB
Bash
session() {
|
|
if [[ "$1" == "" ]]; then
|
|
echo "usage: session [-h] <name> [<host>]"
|
|
elif [[ "$1" == "-h" ]] || [[ "$1" == "--help" ]]; then
|
|
echo "usage: session [-h] <name> [<host>]
|
|
|
|
Create or attach to a tmux session by name either locally on on a remote host
|
|
via ssh.
|
|
"
|
|
else
|
|
local name=$1
|
|
local host=$2
|
|
if [[ "$3" != "" ]]; then
|
|
echo "$fg[red]error:$reset_color invalid argument: $3"
|
|
return 1
|
|
fi
|
|
declare -A hosts
|
|
if [ -f ~/.config/session ]; then
|
|
source ~/.config/session
|
|
fi
|
|
local url=$hosts[$host]
|
|
host=${url:-$host}
|
|
if [[ "$TMUX" == "" ]]; then
|
|
local cmd="tmux new-session -As $name"
|
|
if [[ "$host" != "" ]]; then
|
|
cmd="ssh $host -t $cmd"
|
|
fi
|
|
eval $cmd
|
|
else
|
|
if [[ "$host" != "" ]]; then
|
|
echo "$fg[red]error:$reset_color <host> not allowed inside tmux session"
|
|
return 1
|
|
fi
|
|
tmux list-sessions | grep "$name:" &> /dev/null || \
|
|
tmux new-session -Ads $name -c $HOME
|
|
tmux switch-client -t $name
|
|
fi
|
|
fi
|
|
}
|