#!/bin/sh # shellcheck disable=2016 if [ "$#" -eq 1 ]; then selected="$1" else selected=$( find ~/src ~/.dotfiles -maxdepth 2 -type d,f -path '*/.git' -printf '%h\n' -prune | xargs -I{} sh -c 'stat -c %Y:"{}" $XDG_DATA_HOME/nvim/sessions/$(echo "{}" | sed "s|/|%|g").vim || (git -C "{}" rev-parse HEAD &>/dev/null && git -C "{}" --no-pager log -1 --all --format="%at:{}" 2>/dev/null || stat -c %Y:"{}" "{}"/.git)' | sort -r | cut -d':' -f2- | fzf-tmux -p -- -d/ --with-nth -2.. --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"