diff options
Diffstat (limited to 'private_dot_local')
| -rw-r--r-- | private_dot_local/bin/executable_tmux-session-dispensary.sh | 30 |
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" |
