#!/bin/bash
# ============================================================================
# 后台脚本: /clear 后通过 tmux 自动恢复会话标题
#
# 被 save-title-on-clear.sh 以 nohup 方式启动,独立于 hook 进程运行。
# 等待新 session 就绪后发送 /rename
。
# ============================================================================
PANE_ID="${1:?用法: restore-title-via-tmux.sh }"
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