Finish initial setup of tmux-sessionizer
This commit is contained in:
59
src_files/.local/bin/tmux-sessionizer
Normal file → Executable file
59
src_files/.local/bin/tmux-sessionizer
Normal file → Executable file
@ -1,49 +1,36 @@
|
||||
#!/bin/zsh
|
||||
|
||||
switch_to() {
|
||||
if [[ -z $TMUX ]]; then
|
||||
tmux attach-session -t $1
|
||||
else
|
||||
tmux switch-client -t $1
|
||||
fi
|
||||
[[ -z $TMUX ]] && tmux attach-session -t $1 || tmux switch-client -t $1
|
||||
}
|
||||
|
||||
has_session() {
|
||||
tmux list-sessions | grep -q "^$1:"
|
||||
tmux_session_exists() {
|
||||
[[ -n $(pgrep tmux) ]] && tmux list-sessions | grep -q "^$1:"
|
||||
}
|
||||
|
||||
hydrate() {
|
||||
if [ -f $2/.tmux-sessionizer ]; then
|
||||
tmux send-keys -t $1 "source $2/.tmux-session-setup" c-M
|
||||
elif [ -f $HOME/.tmux-sessionizer ]; then
|
||||
tmux send-keys -t $1 "source $HOME/.tmux-session-setup" c-M
|
||||
fi
|
||||
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
|
||||
}
|
||||
|
||||
if [[ $# -eq 1 ]]; then
|
||||
selected=$1
|
||||
else
|
||||
# If someone wants to make this extensible, i'll accept
|
||||
# PR
|
||||
selected=$(find ~/ ~/personal ~/personal/dev/env/.config -mindepth 1 -maxdepth 1 -type d | fzf)
|
||||
fi
|
||||
local search_dirs=(
|
||||
$HOME
|
||||
$HOMEBOX
|
||||
$DEVDIR
|
||||
$DEVDIR/git
|
||||
$DEVDIR/git/me
|
||||
$DEVDIR/git/gary
|
||||
$DEVDIR/git/other
|
||||
)
|
||||
local selected_path=''
|
||||
[[ $# -eq 1 ]] && selected_path=$1 ||
|
||||
selected_path=$(find $search_dirs -mindepth 1 -maxdepth 1 -type d | fzf)
|
||||
[[ -z $selected_path ]] && exit 0
|
||||
|
||||
if [[ -z $selected ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
selected_name=$(basename "$selected" | tr . _)
|
||||
tmux_running=$(pgrep tmux)
|
||||
|
||||
if [[ -z $TMUX ]] && [[ -z $tmux_running ]]; then
|
||||
tmux new-session -s $selected_name -c $selected
|
||||
hydrate $selected_name $selected
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! has_session $selected_name; then
|
||||
tmux new-session -ds $selected_name -c $selected
|
||||
hydrate $selected_name $selected
|
||||
fi
|
||||
local 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
|
||||
|
Reference in New Issue
Block a user