#!/usr/bin/env bash set -e script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Use the current directory (set via display-popup -d) dir="${PWD:-$HOME}" # Use the directory basename as window name window_name=$dir # Create the agent session if it doesn't exist if ! tmux has-session -t agent; then tmux new-session -ds agent -c "$dir" -n "$window_name" "$script_dir/agent-cmd.sh" # Store the directory in a window option for later matching tmux set-window-option -t agent @agent_dir "$dir" fi # Apply session options on every invocation so updates propagate to live sessions tmux set-option -t agent status off tmux set-option -t agent remain-on-exit on tmux set-option -t agent default-command "$script_dir/agent-cmd.sh" # Search for an existing window with matching directory target_window="" for window_id in $(tmux list-windows -t agent -F '#{window_id}'); do window_dir=$(tmux show-window-option -t "$window_id" -v @agent_dir 2>/dev/null || true) if [ "$window_dir" = "$dir" ]; then target_window="$window_id" break fi done if [ -n "$target_window" ]; then # Select the existing window tmux select-window -t "$target_window" else # Create a new window; default-command runs agent-cmd.sh tmux new-window -t agent -c "$dir" -n "$window_name" # Store the directory in a window option for later matching tmux set-window-option -t agent @agent_dir "$dir" fi # Attach to the session tmux attach-session -t agent