aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/tmux/.local/bin/tmux-sessionizer
blob: 522441c0dc95cdb3255b06d299f2ce7f6495c3fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/env bash

if [ "$#" -eq 1 ]; then
	selected="$1"
else
	selected=$(find ~/src ~/.dotfiles -maxdepth 2 -type d -path '*/.git' -printf '%h\n' -prune | sort |
		fzf-tmux -p -- -d/ --with-nth 3.. --preview="exa --tree --icons --git-ignore {}")
fi

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"
	exit 0
fi

if ! tmux has-session -t="$selected_name" 2>/dev/null; then
	tmux new-session -ds "$selected_name" -c "$selected"
fi

tmux switch-client -t "$selected_name"