#!/usr/bin/env zsh # Create a tmux session. # # This accepts a path argument that is used to create the tmux session # in, using it's basename for the session name. # # If an argument is not supplied, then we will create a tmux session in # the current working directory. function tns() { local session_name= local tmux_dir= # parse the session, if based on the directory of the argument passed in. # otherwise use the current directory. [ -n "$1" ] && \ session_name=$(basename "$1" | tr . _) && \ tmux_dir="$1" [ -z "$session_name" ] \ && session_name=$(basename "$PWD" | tr . _) && \ tmux_dir="$PWD" tmux_running=$(pgrep tmux) # check if tmux is not running / attached to a session. # if not, then create a new session. if [ -z $TMUX ] && [ -z $tmux_running ]; then tmux new-session -s "$session_name" -c "$tmux_dir" && return 0 fi # create a session if it doesn't exist, in the background, so # that we can switch sessions. if ! tmux has-session -t "$session_name" 2> /dev/null; then tmux new-session -ds "$session_name" -c "$tmux_dir" fi # attach to the session or switch if it already exists. [ -z $TMUX ] && \ tmux attach -t "$session_name" \ || tmux switch-client -t "$session_name" }