dotfiles/.bin/tmux-projectinator

30 lines
820 B
Bash
Executable File

#!/bin/sh
# Quit on escape
set -o emacs
bind '"\e": "\C-W\c-d"'
declare -A CUSTOM_SESSIONS
CUSTOM_SESSIONS[Projects]=Halia
SELECTED=$(find . -name .git -type d -prune -not -path "./.*" 2>/dev/null | sed 's/\/.git//' | cut -d'/' -f2- | fzf)
ROOT=$(echo $SELECTED | cut -d '/' -f1)
PROJECT=$(echo $SELECTED | rev | cut -d '/' -f1 | rev)
SESSION_NAME=$([ -z "${CUSTOM_SESSIONS[$ROOT]}" ] && echo "$ROOT" || echo "${CUSTOM_SESSIONS[$ROOT]}")
tmux has-session -t $SESSION_NAME 2>/dev/null
if [ $? != 0 ]; then
tmux new-session -s $SESSION_NAME -d -n $PROJECT #2>/dev/null
fi
tmux has-session -t $SESSION_NAME:$PROJECT 2>/dev/null
if [ $? != 0 ]; then
tmux new-window -t $SESSION_NAME: -n $PROJECT -d -c $SELECTED
fi
tmux switch-client -t $SESSION_NAME:$PROJECT
# Close tmux popup if any
tmux display-popup -C