#!/usr/bin/env bash # Cycle through tmux sessions whose name starts with "A-". # Usage: tmux-cycle-a-session next|prev set -euo pipefail direction="${1:-next}" mapfile -t sessions < <(tmux list-sessions -F '#S' | grep '^A-' | sort) [ "${#sessions[@]}" -eq 0 ] && exit 0 cur=$(tmux display-message -p '#S') # Find current index (0-based); -1 if not found idx=-1 for i in "${!sessions[@]}"; do if [ "${sessions[$i]}" = "$cur" ]; then idx=$i break fi done n="${#sessions[@]}" case "$direction" in next) target_idx=$(( idx < 0 ? 0 : (idx + 1) % n )) ;; prev) target_idx=$(( idx < 0 ? n - 1 : (idx - 1 + n) % n )) ;; *) echo "usage: $0 next|prev" >&2; exit 2 ;; esac tmux switch-client -t "${sessions[$target_idx]}"