피드로 돌아가기
Dev.toInfrastructure
원문 읽기

OSC 2 시퀀스 제어를 통한 Ghostty 탭 타이틀 시각적 노이즈 제거
Why every Ghostty tab said 'Claude Code' (and the 30-line zsh hook that fixed it)
AI 요약
Context
Ghostty의 Shell Integration과 Claude Code의 OSC 2 시퀀스가 각각 탭 타이틀 제어권을 경쟁하며 발생하는 정보 손실 문제임. 다중 Pane 환경에서 포커스된 프로세스명으로 타이틀이 계속 덮어써지면서 현재 작업 중인 Project 식별이 불가능한 상태임.
Technical Solution
- Ghostty 설정의
shell-integration-features에서title옵션을 비활성화하여 터미널 수준의 자동 타이틀 업데이트 차단 CLAUDE_CODE_DISABLE_TERMINAL_TITLE환경 변수를 설정하여 Claude Code 에이전트의 강제 OSC 2 시퀀스 송출 억제- zsh의
chpwd,precmd,preexec3가지 Hook을 활용한 상태 기반 타이틀 업데이트 로직 설계 git rev-parse --show-toplevel명령으로 Git Repo 기반의 컨텍스트를 추출하여 기본 타이틀로 설정preexec단계에서 실행 명령어를 인터셉트하여 Claude 호출 시 👾 마커를 추가하는 동적 타이틀 변경 구현- OSC 2 이스케이프 시퀀스(
\033]2;%s\007)를 통해 셸 레벨에서 터미널 타이틀 제어권을 완전히 확보
실천 포인트
- 터미널 에뮬레이터와 셸, 애플리케이션 간의 제어권 충돌 시 최하위 계층(셸)으로 제어권을 일원화하는 방안 검토 - zsh Hook(`preexec`, `precmd`)을 활용하여 프로세스 실행 전후의 상태 변화를 시각적 지표로 전환하는 패턴 적용 - 외부 도구의 숨겨진 환경 변수를 찾아 기본 동작을 끄고 맞춤형 로직을 입히는 방식의 최적화 수행