Auto-Switch iTerm Profiles on SSH Connection

미국에 있는 서버와 한국에 있는 서버는 핑 차이가 크다. 미국서버에 배포하던 서비스를 최근에 한국으로 옮기니, 로컬 개발 터미널인지 라이브인지 구분이 힘들어졌다. 좋은 방법이 없을까 고민하던 차에 내가 발견한 방법을 공유한다.

1/ 프로필을 생성한다. 나는 평소에 밝은 테마(light theme)를 사용하기 때문에 이 프로필은 어두운 테마(dark theme)로 설정했다.
2/ 라이브 환경으로 접속하는 커맨드(e.g. ssh)에 대해 다음과 같은 함수를 ~/.zshrc 에 추가한다.
function ssh() {
echo -e "\033]1337;SetProfile=production\a"
command ssh "$@"
echo -e "\033]1337;SetProfile=Hotkey Window\a"
}
echo -e "\033]1337;SetProfile=production\a" → 새로운 프로필로 전환한다.
command ssh "$@" → 원래 실행되었어야하는 argument들을 그대로 넘긴다.
echo -e "\033]1337;SetProfile=Hotkey Window\a" → 원래 쓰던 프로필로 다시 돌아간다.
3/ source ~/.zshrc 또는 셸 재시작

iTerm 외에 다른 터미널들도 시도해봤는데,
문제점1/ command line에서 프로필을 바꿀 수 있는 터미널이 잘 없음
문제점2/ 있다고 하더라도, tab별로 지정되는 것이 아니라 global theme 변경 정도만 지원.
덧1/ 개인서버나 회사서버로 demo gif를 찍으려니 ip, ecr url 같은게 노출되어서 어디로 접속해야할지 고민하다가 공유기로 낙찰
덧2/ iTerm에서 trigger같은 것도 써봤는데, 터미널에 그려지는 모든 문자열에 대해 regex를 거는게 싫어서 이렇게 간단하게 구현, 특히 ssh에서 나올 때 원래대로 돌아가는 것은 이 방법 말고 더 깔끔한 방식을 찾기 어려웠음
덧3/ iTerm은 CPU를 너무 많이 잡아먹어서 핫키 윈도우로만 사용하는 것을 권장. 많은 기능을 지원하는 부작용인지 최적화가 아쉬움. See https://gitlab.com/gnachman/iterm2/-/issues/8640



