#!/bin/zsh switch_to() { [[ -z $TMUX ]] && tmux attach-session -t $1 || tmux switch-client -t $1 } tmux_session_exists() { [[ -n $(pgrep tmux) ]] && tmux list-sessions | grep -q "^$1:" } hydrate() { local tmux_hydrate_path="$HOME/.local/bin/.tmux-session-hydrate" [[ -f $2/.tmux-session-hydrate ]] && tmux_hydrate_path="$2/.tmux-session-hydrate" [[ -f $tmux_hydrate_path ]] && tmux send-keys -t $1 "source $tmux_hydrate_path" c-M } local search_dirs=( $HOMEBOX $DEVDIR $DEVDIR/git/* ) local selected_path='' [[ $# -eq 1 ]] && selected_path=$1 || selected_path=$( find $search_dirs -mindepth 1 -maxdepth 1 -type d | (echo 'hub' && cat) | fzf ) [[ -z $selected_path ]] && exit 0 local selected_name='' [[ "$selected_path" = "hub" ]] && selected_name="hub" && selected_path=$HOME || selected_name=$(basename "$selected_path" | tr . _) ! (tmux_session_exists $selected_name) && tmux new-session -d -s $selected_name -c $selected_path && hydrate $selected_name $selected_path switch_to $selected_name