mirror of
https://github.com/chenasraf/dotfiles.git
synced 2026-05-18 01:29:06 +00:00
fix: tmux
This commit is contained in:
@@ -101,7 +101,7 @@ alias trm="tmux kill-session -t"
|
||||
alias tks="tmux kill-server"
|
||||
|
||||
# tmux - workspaces
|
||||
alias tn-general="tn-custom \$HOME/Dev -s general"
|
||||
alias tn-general="tn-custom -d \$HOME/Dev -s general"
|
||||
alias tn-df="tn-custom -d \$DOTFILES -s dotfiles ."
|
||||
alias tn-tt="tn-custom -d \$HOME/.local/share/nvim/site/pack/packer/start/text-transform.nvim -s text-transform ."
|
||||
alias tn-simple-scaffold="tn-prj simple-scaffold"
|
||||
|
||||
@@ -85,3 +85,5 @@ if [[ -f ~/.fzf.zsh ]]; then source ~/.fzf.zsh; fi
|
||||
if [[ -f /opt/homebrew/opt/chruby/share/chruby/chruby.sh ]]; then source /opt/homebrew/opt/chruby/share/chruby/chruby.sh; fi
|
||||
if [[ -f $(which rbenv) ]]; then eval "$(rbenv init - zsh)"; fi
|
||||
if [[ -f "$HOME/.dotfiles/_local.sh" ]]; then source "$HOME/.dotfiles/_local.sh"; fi
|
||||
|
||||
export SHELLCHECK_OPTS='--shell=bash'
|
||||
|
||||
68
functions.sh
68
functions.sh
@@ -2,6 +2,7 @@
|
||||
|
||||
source $DOTFILES/autoload_completions.sh
|
||||
source $DOTFILES/colors.sh
|
||||
source $DOTFILES/tmux.sh
|
||||
|
||||
motd() {
|
||||
out=$(run-parts $DOTFILES/synced/motd)
|
||||
@@ -314,73 +315,6 @@ autoload _docker-volume-path
|
||||
autoload _prj
|
||||
autoload _src
|
||||
|
||||
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
|
||||
|
||||
# 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
|
||||
}
|
||||
|
||||
tn-prj() {
|
||||
prj="$1"
|
||||
shift
|
||||
tn-custom -d "$HOME/Dev/$prj" -s "$prj" . $@
|
||||
}
|
||||
|
||||
reload-zsh() {
|
||||
source $HOME/.zshrc
|
||||
}
|
||||
|
||||
111
tmux.sh
Normal file
111
tmux.sh
Normal file
@@ -0,0 +1,111 @@
|
||||
#!/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="$1"
|
||||
shift
|
||||
|
||||
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
|
||||
|
||||
# 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
|
||||
}
|
||||
Reference in New Issue
Block a user