많은 터미널 설정이 생산적으로 보여도… 컴퓨터를 재시작할 때까지
Source: Dev.to
Introduction
여러 개발 서버를 자주 실행하고, SSH 세션을 열어두며, 로그를 tail하고, 프로젝트 사이를 오가다 보면 다음과 같은 루틴을 겪게 됩니다:
- 터미널 창을 다시 열기
- 호스트에 다시 연결하기
- 분할 화면을 다시 만들기
- 명령을 다시 실행하기
- 반복하기
나는 “멋진 터미널 미학”을 원한 것이 아니라, 일상적인 사용을 견딜 수 있는 워크스페이스가 필요했습니다.
그래서 macOS에서 간단하고 반복 가능한 워크플로우를 만들었습니다:
- Ghostty – 터미널 UI 레이어 (네이티브 macOS 창/탭, 깔끔한 설정)
- tmux – 상태 레이어 (세션/윈도우/팬, detach/attach, 영속성)
그리고 실용성을 유지하게 해주는 한 가지 결정: tmux는 Ghostty 안에서만 자동 시작 – Terminal.app은 그대로 깔끔하게 유지됩니다.
The small controversy: tabs aren’t a workspace
“왜 그냥 터미널 탭을 쓰지 않나요?”
탭은 단지 보여지는 형태일 뿐이며, 복구 정보를 담고 있지 않습니다. 레이아웃과 실행 중인 컨텍스트는 여전히 머릿속에만 존재합니다.
tmux는 다릅니다. 안정적인 모델을 가지고 있습니다: 세션 → 윈도우 → 팬.
- detach/attach와 장기 실행 세션을 지원
- 키보드 중심이며 머신 간에 일관됨
- 반복 가능한 구조를 장려: 프로젝트당 하나의 세션, 작업당 윈도우
탭도 좋습니다 – 저는 아직 Ghostty 탭을 사용합니다 – 하지만 UI 기능일 뿐이며 영속성 전략으로 쓰지는 않습니다.
What I wanted from my setup
1) Persistence without friction
터미널을 다시 열어도 다음을 그대로 이어갈 수 있어야 합니다:
- 동일한 프로젝트 컨텍스트
- 동일한 명령이 실행 중
- 동일한 레이아웃
2) Separation of concerns
- 터미널 에뮬레이터가 세션 관리 방식을 결정해서는 안 됩니다.
- tmux가 열어두는 모든 쉘을 강제해서는 안 됩니다.
그래서 명확히 구분했습니다:
- Ghostty = 개발 워크스페이스
- Terminal.app = 기본 시스템 쉘
3) Reproducibility
“좋은 설정”이지만 재현할 수 없다면 그저 운에 맡긴 사고에 불과합니다. 모든 설정은 레포지토리에 보관합니다:
- Ghostty 설정
- tmux 설정 (+ TPM 플러그인)
- Ghostty에서만 tmux를 자동 시작하도록 하는 Zsh 스니펫
- 문서와 사용법 노트
What this gives me in practice
- 즉시 “작업 복귀” – Ghostty를 열면
main세션에 attach되고 모든 것이 이미 준비돼 있습니다. - 실제 개발 흐름에 맞는 워크플로우 – 프로젝트당 하나의 세션, 백엔드/로그/인프라용 윈도우, 빠른 분할을 위한 팬.
- 마음의 부담 감소 – 구조가 일관되므로 “어디서 그 명령을 실행했지?” 라는 고민이 사라집니다.
- 쉬운 마이그레이션 – 새 머신? 레포를 클론하고, 설정을 복사하고, tmux를 설치하면 끝.
What’s in the repository
config/ghostty/config– Ghostty 설정 (폰트, 키바인딩, Option‑as‑Alt)config/tmux/tmux.conf– tmux 설정 (윈도우/팬 바인딩, copy‑mode, 플러그인)config/zsh/tmux-ghostty.zsh– Ghostty에서만 tmux를 자동 시작하는 스크립트- 설치 단계와 일일 사용법(세션/윈도우/팬)을 담은 전체 README
Repo:
Who should try this
다음과 같은 경우에 특히 유용합니다:
- 매일 여러 개발 서버와 워처를 실행한다
- SSH 세션을 열어둔다
- 여러 환경을 넘나들며 작업한다
- tmux를 전역 요구사항으로 만들지 않으면서 영속성을 원한다
“tmux 없이 탭만 쓰는” 사람이라면 그 선택도 괜찮습니다. 하지만 일주일에 같은 터미널 상태를 세 번이나 다시 만들었다면, tmux는 취미가 아니라 인체공학적인 선택처럼 보이게 됩니다.
Closing
이 설정은 의도적으로 지루하게 설계되었습니다:
- 최소한의 움직이는 부품
- 예측 가능한 동작
- 쉽게 재현 가능
시도해 보신다면, 여러분이 워크스페이스를 어떻게 조직하는지 알려 주세요:
- 프로젝트당 하나의 세션
- 모든 작업을 하나의 세션에
- 로컬 vs 원격을 구분한 별도 세션
Repo: