많은 터미널 설정이 생산적으로 보여도… 컴퓨터를 재시작할 때까지

발행: (2025년 12월 16일 오전 12:00 GMT+9)
6 min read
원문: Dev.to

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:

Back to Blog

관련 글

더 보기 »

내 Dev Tool 리스트 2025

TL;DR  macOS bash AeroSpace 윈도우 매니저 brew install --cask nikitabobko/tap/aerospace 핵심 유틸리티 brew install atuin chezmoi gh fzf eza bat ripgrep st…

Git-Scope 사용자 가이드

소개 Git‑Scope는 로컬 Git 저장소를 위한 터미널 대시보드입니다. 폴더로 cd‑ing 하면서 상태를 확인하는 일을 멈추세요. 프로젝트를 스캔하고 실시간으로 …