summaryrefslogtreecommitdiff
path: root/private_dot_local/bin
diff options
context:
space:
mode:
Diffstat (limited to 'private_dot_local/bin')
-rw-r--r--private_dot_local/bin/executable_tmux-session-dispensary.sh30
1 files changed, 30 insertions, 0 deletions
diff --git a/private_dot_local/bin/executable_tmux-session-dispensary.sh b/private_dot_local/bin/executable_tmux-session-dispensary.sh
new file mode 100644
index 0000000..ccbdbaf
--- /dev/null
+++ b/private_dot_local/bin/executable_tmux-session-dispensary.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+DIRS=(
+ "$HOME"
+ "$HOME/.config"
+ "$HOME/.local"
+ "$HOME/.local/share"
+ "$HOME/Documents"
+ "$HOME/Documents/Code"
+)
+
+if [[ $# -eq 1 ]]; then
+ selected=$1
+else
+ selected=$(fd "${DIRS[@]}" --type=dir --max-depth=1 --full-path \
+ | sed "s|^$HOME/||" \
+ | sk -m)
+ [[ $selected ]] && selected="$HOME/$selected"
+fi
+
+[[ ! $selected ]] && exit 0
+
+selected_name=$(basename "$selected" | tr . _)
+if ! tmux has-session -t "$selected_name"; then
+ tmux new-session -ds "$selected_name" -c "$selected"
+ tmux select-window -t "$selected_name:1"
+fi
+
+connect_cmd=$([[ -z $TMUX ]] && echo "attach" || echo "switch-client")
+tmux "$connect_cmd" -t "$selected_name"