#!/bin/bash # ============================================================================ # 后台脚本: /clear 后通过 tmux 自动恢复会话标题 # # 被 save-title-on-clear.sh 以 nohup 方式启动,独立于 hook 进程运行。 # 等待新 session 就绪后发送 /rename 。 # ============================================================================ PANE_ID="${1:?用法: restore-title-via-tmux.sh <pane_id> <title_file>}" TITLE_FILE="${2:?需要标题文件路径}" # 清理函数 cleanup() { rm -f "${TITLE_FILE}" } trap cleanup EXIT [ ! -f "${TITLE_FILE}" ] && exit 1 TITLE=$(cat "${TITLE_FILE}") # Phase 1: 等待 ❯ 消失(当前 session 正在被清除) sleep 2 for i in $(seq 1 15); do if ! tmux capture-pane -t "${PANE_ID}" -p | tail -5 | grep -q '❯'; then break fi sleep 1 done # Phase 2: 等待 ❯ 重新出现(新 session 就绪) for i in $(seq 1 30); do if tmux capture-pane -t "${PANE_ID}" -p | tail -5 | grep -q '❯'; then sleep 1 # 发送 /rename 命令 tmux send-keys -t "${PANE_ID}" "/rename ${TITLE}" sleep 1 tmux send-keys -t "${PANE_ID}" Enter sleep 2 # 验证: 检查 ❯ 是否消失(命令已被接受) for j in $(seq 1 5); do if ! tmux capture-pane -t "${PANE_ID}" -p | tail -5 | grep -q '❯'; then exit 0 fi tmux send-keys -t "${PANE_ID}" Enter sleep 2 done exit 0 fi sleep 1 done # 超时退出 exit 1