mirror of
https://github.com/chenasraf/dotfiles.git
synced 2026-05-17 17:28:07 +00:00
114 lines
2.5 KiB
Bash
114 lines
2.5 KiB
Bash
#!/usr/bin/env zsh
|
|
|
|
tn-custom () {
|
|
parent="."
|
|
for arg in $@; do
|
|
case "$1" in
|
|
-d)
|
|
parent="$2"
|
|
winname=$(basename $parent)
|
|
winname="${winname%.*}"
|
|
shift 2
|
|
;;
|
|
-s)
|
|
winname="${2%.*}"
|
|
shift 2
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
done
|
|
tmux has-session -t $winname 2>/dev/null
|
|
if [[ "$?" == "0" ]]; then
|
|
echo_cyan "Attaching to existing session $winname"
|
|
tmux attach-session -t $winname
|
|
return 0
|
|
fi
|
|
|
|
dirs=("$@")
|
|
|
|
echo_cyan "Creating new session $winname on $parent with dirs: $dirs"
|
|
tmux -f ~/.config/.tmux.conf new-session -d -s $winname -n general -c $parent
|
|
|
|
for dir in ${dirs[@]}; do
|
|
dir="$parent/$dir"
|
|
tabname=$(basename $dir)
|
|
if [[ $tabname == "." ]]; then
|
|
tabname="$winname"
|
|
fi
|
|
|
|
# create new window
|
|
tmux new-window -n $tabname -c $dir
|
|
done
|
|
|
|
# attach to session
|
|
tmux attach -t $winname
|
|
}
|
|
|
|
tn-prj() {
|
|
prj="$HOME/Dev/$1"
|
|
winname=$(basename $prj)
|
|
shift
|
|
|
|
parent="$prj"
|
|
for arg in "$@"; do
|
|
case "$1" in
|
|
-d)
|
|
parent="$2"
|
|
winname=$(basename $parent)
|
|
winname="${winname%.*}"
|
|
shift 2
|
|
;;
|
|
-s)
|
|
winname="${2%.*}"
|
|
shift 2
|
|
;;
|
|
esac
|
|
done
|
|
|
|
tmux has-session -t $winname 2>/dev/null
|
|
if [[ "$?" == "0" ]]; then
|
|
echo_cyan "Attaching to existing session $winname"
|
|
tmux attach-session -t $winname
|
|
return 0
|
|
fi
|
|
|
|
dirs=("$@")
|
|
|
|
echo_cyan "Creating new session $winname on $parent with dirs: $dirs"
|
|
tmux -f ~/.config/.tmux.conf new-session -d -s $winname -n general -c $parent
|
|
|
|
for dir in ${dirs[@]}; do
|
|
dir="$parent/$dir"
|
|
tabname=$(basename $dir)
|
|
if [[ $tabname == "." ]]; then
|
|
tabname="$winname"
|
|
fi
|
|
|
|
# create new window
|
|
tmux new-window -n $tabname -c $dir
|
|
|
|
# open vim on main pane
|
|
tmux send-keys -t $winname:$tabname v Enter
|
|
|
|
# split window horizontally
|
|
tmux split-window -h -t $winname:$tabname -c $dir
|
|
|
|
# resize pane
|
|
tmux resize-pane -t 0 -x 90
|
|
|
|
# auto-select main pane
|
|
tmux select-pane -t 0
|
|
|
|
# zoom into main pane
|
|
tmux resize-pane -Z
|
|
done
|
|
|
|
# select first non-general window
|
|
tmux select-window -t $winname:1
|
|
|
|
# attach to session
|
|
tmux attach -t $winname
|
|
}
|
|
|