aboutsummaryrefslogtreecommitdiff
path: root/scripts/.scripts/tmux-sessionizer.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/.scripts/tmux-sessionizer.sh')
-rwxr-xr-xscripts/.scripts/tmux-sessionizer.sh39
1 files changed, 23 insertions, 16 deletions
diff --git a/scripts/.scripts/tmux-sessionizer.sh b/scripts/.scripts/tmux-sessionizer.sh
index c536df7..419484a 100755
--- a/scripts/.scripts/tmux-sessionizer.sh
+++ b/scripts/.scripts/tmux-sessionizer.sh
@@ -1,29 +1,36 @@
#!/bin/sh
-
if [[ $# -eq 1 ]]; then
- selected=$1
+ selected=$1
else
- selected=$(find ~/programming -mindepth 1 -maxdepth 2 -type d | fzf)
+ selected=$(fd '^.git$' -a --hidden --no-ignore --type d ./programming --exec dirname | grep -v "thirdparties" | fzf)
fi
if [[ -z $selected ]]; then
- exit 1
+ exit 1
fi
selected_name=$(basename "$selected" | tr . _)
tmux_running=$(pgrep tmux)
-if [[ -z $TMUX ]] && [[ -z $tmux_running ]]; then
- tmux new-session -s $selected_name
- tmux send-keys -t $selected_name "cd $selected" Enter
- tmux send-keys -t $selected_name "clear" Enter
- exit 0
-fi
+create_session() {
+ tmux new-session -d -s $selected_name -n nvim
+ tmux send-keys -t "$selected_name:1" "cd $selected && clear && nvim ." Enter
+ # Create second window (shell)
+ tmux new-window -t $selected_name -n shell
+ tmux send-keys -t "$selected_name:2" "cd $selected && clear" Enter
+ # Create third window (git)
+ tmux new-window -t $selected_name -n git
+ tmux send-keys -t "$selected_name:3" "cd $selected && clear && lazygit" Enter
+}
-if ! tmux has-session -t=$selected_name 2> /dev/null; then
- tmux new-session -ds $selected_name
- tmux send-keys -t $selected_name "cd $selected" Enter
- tmux send-keys -t $selected_name "clear" Enter
+# If not in tmux, create and attach
+if [[ -z $TMUX ]]; then
+ create_session
+ tmux attach-session -t $selected_name
+else
+ # If in tmux, create if needed and switch
+ if ! tmux has-session -t=$selected_name 2>/dev/null; then
+ create_session
+ fi
+ tmux switch-client -t $selected_name
fi
-
-tmux switch-client -t $selected_name