Skip to content

Instantly share code, notes, and snippets.

@bbassett
Created May 28, 2026 16:09
Show Gist options
  • Select an option

  • Save bbassett/4450c6fe251ff6cfbb26f6997be96246 to your computer and use it in GitHub Desktop.

Select an option

Save bbassett/4450c6fe251ff6cfbb26f6997be96246 to your computer and use it in GitHub Desktop.
#!/usr/bin/env zsh
# Get current tmux session name
SESSION_NAME=$(tmux display-message -p '#S')
PROJECT_DIR="$HOME/Projects/$SESSION_NAME/.projects"
# If no .projects dir for current session, let user pick a project folder
if [[ ! -d "$PROJECT_DIR" ]]; then
new_session=$(
find "$HOME/Projects" -mindepth 2 -maxdepth 2 -type d -name ".projects" \
-exec dirname {} \; |
sed "s|$HOME/Projects/||" |
sort |
fzf --prompt="Rename Session? ❯ " --height=100% --layout=reverse --border --info=inline
)
[[ -z "$new_session" ]] && exit 0
tmux rename-session "$new_session"
SESSION_NAME="$new_session"
PROJECT_DIR="$HOME/Projects/$SESSION_NAME/.projects"
fi
# fzf menu
project=$(
find "$PROJECT_DIR" -type f -name "*.zsh" \
-exec basename {} .zsh \; |
sort |
fzf --prompt="Project ❯ " --height=100% --layout=reverse --border --info=inline
)
[[ -z "$project" ]] && exit 0
# Load the selected project file
source "$PROJECT_DIR/$project.zsh"
# Safety: reuse window if it exists
if tmux list-windows -F '#W' | grep -qx "$PROJECT_NAME"; then
tmux select-window -t "$PROJECT_NAME"
exit 0
fi
# Run the project layout
project_layout
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment