summaryrefslogtreecommitdiff
path: root/shell-scripts/kakup
blob: e9ae3d7e167f613f0e65304e4894fc25cecc094a (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
27
28
29
30
31
32
33
34
35
session-or-client() {
        {
            project="$(cat -)"
            if [[ -z $project ]]; then
                return
            fi
            pushd $project
            export servers=kakoune-servers-${USER}
            export name=${PWD#$HOME/}
            export name=${name//\//-}
            export client=kakoune@$name
	    export KAKUP_TMUX=$TMUX
	    echo "KAKUP_TMUX=$KAKUP_TMUX"

            tmux has-session -t $servers || {
		tmux new -d -s $servers -n $name bash -c "[[ -f .envrc ]] && eval \"$(direnv export bash)\"; { kak -s $name -d & }; tmux wait -S $name; wait"
        	tmux wait $name
	    }
            tmux list-windows -t $servers -F "#{window_name}" | grep $name || {
		tmux new-window -t $servers -n $name -d bash -c "[[ -f .envrc ]] && eval \"$(direnv export bash)\"; { kak -s $name -d & }; tmux wait -S $name; wait"
        	tmux wait $name
	    }
            if [[ -z $KAKUP_TMUX ]]; then
		TMUX=$KAKUP_TMUX tmux has-session -t $client || tmux new -d -s $client -n $name kak -c $name
            else
            	TMUX=$KAKUP_TMUX tmux new-window -n $name kak -c $name
            fi
            popd
        } </dev/stdin >debug 2>&1
        echo $client
}

client="$(fd -d1 "." -t d $HOME $HOME/projects | fzf -1 | session-or-client)"
echo "client: $client"
[[ $client ]] && tmux attach -t "$client"