Files
tmux/session.sh

30 lines
846 B
Bash
Executable File

#!/usr/bin/env bash
set -e
sessions=()
# Get list of predefined session layouts, skipping session-project since it is
# parameterized by `session -p <project>` rather than a session of its own
for item in $HOME/.local/share/tmux/layouts/session-*; do
layout=${item#$HOME/.local/share/tmux/layouts/session-}
[ "$layout" = project ] && continue
sessions+=($layout)
done
# Get list of existing sessions
sessions+=($(tmux list-sessions | awk -F: '{print $1}'))
# Pick the session with fzf (remove duplicates)
session=$(
echo "${sessions[@]}" | tr ' ' '\n' | sort -u |
fzf --layout=reverse --info=hidden --border=rounded --cycle
)
# Create the session if it doesn't alreayd exist
tmux list-sessions | grep "^$session:" &> /dev/null || \
tmux new-session -Ads $session -c $HOME
# Switch to the session
tmux switch-client -t $session