Ghostty와 tmux로 터미널 워크플로우 완전 정복
Ghostty 터미널 에뮬레이터와 tmux를 함께 사용하는 최강의 워크플로우를 소개합니다. 설치부터 설정, 실전 단축키, 프로젝트별 세션 관리까지 한 번에 정복하세요.
Ghostty와 tmux로 터미널 워크플로우 완전 정복
터미널을 더 강력하고 효율적으로 사용하고 싶다면, Ghostty와 tmux의 조합이 정답입니다. 이 글에서는 두 도구의 설치부터 실전 활용법까지 상세히 알아봅니다.
1. Ghostty — 차세대 터미널 에뮬레이터
Ghostty란?
Ghostty는 HashiCorp 창립자 Mitchell Hashimoto가 개발한 새로운 터미널 에뮬레이터입니다. 네이티브 UI 프레임워크와 GPU 가속을 결합하여 빠른 속도와 아름다운 폰트 렌더링을 제공합니다.
주요 특징:
- GPU 가속 렌더링: Metal(macOS), OpenGL/Vulkan(Linux)으로 초고속 렌더링
- 플랫폼 네이티브 UI: macOS는 Swift/AppKit, Linux는 GTK 사용
- Zig 언어로 작성: 메모리 안전성과 고성능
- 진정한 색상 지원: 24비트 트루컬러, 투명도 지원
- 멀티탭/분할 창: 내장 기능으로 기본 제공
- 간단한 설정: 별도 설정 언어 없이 키=값 방식
설치
macOS (Homebrew):
brew install --cask ghostty
Linux (직접 빌드):
# Zig 0.13 이상 필요
git clone https://github.com/ghostty-org/ghostty
cd ghostty
zig build -p /usr/local -Doptimize=ReleaseFast
설정 파일
설정 파일 위치:
- macOS:
~/.config/ghostty/config - Linux:
$XDG_CONFIG_HOME/ghostty/config
권장 설정 (~/.config/ghostty/config):
# 폰트 설정
font-family = JetBrainsMono Nerd Font
font-size = 14
font-thicken = true
# 색상 테마
theme = Catppuccin Mocha
# 투명도 (macOS)
background-opacity = 0.92
background-blur-radius = 20
# 커서
cursor-style = bar
cursor-blink = true
# 쉘 통합
shell-integration = zsh
# 탭 표시 (macOS)
macos-titlebar-style = tabs
window-theme = auto
# 스크롤
scrollback-limit = 10000
Ghostty 단축키
| 동작 | macOS | Linux |
|---|---|---|
| 새 탭 | ⌘T |
Ctrl+Shift+T |
| 탭 닫기 | ⌘W |
Ctrl+Shift+W |
| 수직 분할 | ⌘D |
Ctrl+Shift+D |
| 수평 분할 | ⌘Shift+D |
Ctrl+Shift+E |
| 분할 포커스 이동 | ⌘Alt+화살표 |
Ctrl+Shift+화살표 |
| 폰트 크기 증가 | ⌘+ |
Ctrl++ |
| 전체화면 | ⌘Enter |
F11 |
2. tmux — 터미널 멀티플렉서
tmux란?
tmux(Terminal Multiplexer)는 하나의 터미널 창에서 여러 세션, 윈도우, 패널을 관리할 수 있게 해주는 강력한 도구입니다.
핵심 장점:
- 세션 영속성: SSH 연결이 끊겨도 작업이 유지됨
- 화면 분할: 하나의 창에서 여러 터미널 패널 운용
- 원격 협업: 여러 사람이 같은 세션 공유 가능
- 스크립팅: 복잡한 레이아웃 자동화
설치
# macOS
brew install tmux
# Ubuntu/Debian
sudo apt install tmux
# Fedora/RHEL
sudo dnf install tmux
핵심 개념
tmux 세션 (Session)
└── 윈도우 (Window) [탭 개념]
└── 패널 (Pane) [분할 화면]
기본 명령어
세션 관리:
tmux # 새 세션 시작
tmux new -s 이름 # 이름 있는 세션 생성
tmux ls # 세션 목록 확인
tmux attach -t 이름 # 세션 재연결
tmux kill-session -t 이름 # 세션 종료
프리픽스 키: 기본값 Ctrl+B (이 가이드에서는 Ctrl+A로 변경 권장)
필수 단축키
패널(Pane) 제어:
| 동작 | 단축키 |
|---|---|
| 수직 분할 | Prefix + % |
| 수평 분할 | Prefix + " |
| 다음 패널로 이동 | Prefix + o |
| 방향키로 패널 이동 | Prefix + 화살표 |
| 패널 크기 조절 | Prefix + Ctrl+화살표 |
| 패널 닫기 | exit 또는 Prefix + x |
| 패널 최대화/복원 | Prefix + z |
윈도우(Window) 제어:
| 동작 | 단축키 |
|---|---|
| 새 윈도우 | Prefix + c |
| 다음 윈도우 | Prefix + n |
| 이전 윈도우 | Prefix + p |
| 번호로 이동 | Prefix + 0~9 |
| 윈도우 이름 변경 | Prefix + , |
| 윈도우 닫기 | Prefix + & |
세션 제어:
| 동작 | 단축키 |
|---|---|
| 세션 분리 | Prefix + d |
| 세션 목록 | Prefix + s |
| 세션 이름 변경 | Prefix + $ |
복사 모드 (Vi 스타일):
| 동작 | 단축키 |
|---|---|
| 복사 모드 진입 | Prefix + [ |
| 검색 (아래) | / |
| 선택 시작 | v |
| 복사 | y |
| 붙여넣기 | Prefix + ] |
| 복사 모드 종료 | q |
권장 ~/.tmux.conf
# ──────────────────────────────────────────
# 기본 설정
# ──────────────────────────────────────────
# 프리픽스 키를 Ctrl+A로 변경
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# 1부터 번호 매기기
set -g base-index 1
setw -g pane-base-index 1
set -g renumber-windows on
# 256색 + 트루컬러
set -g default-terminal "screen-256color"
set -sa terminal-overrides ",xterm-256color:RGB"
# 마우스 지원
set -g mouse on
# 이스케이프 딜레이 제거 (Vim/Neovim용)
set -s escape-time 0
# 히스토리 증가
set -g history-limit 50000
# ──────────────────────────────────────────
# 키 바인딩
# ──────────────────────────────────────────
# 현재 경로로 패널 분할
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %
# Vim 스타일 패널 이동
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# prefix 없이 Alt+화살표로 패널 이동
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# 설정 리로드
bind r source-file ~/.tmux.conf \; display "Config reloaded!"
# ──────────────────────────────────────────
# 복사 모드 (Vi 스타일)
# ──────────────────────────────────────────
setw -g mode-keys vi
bind -T copy-mode-vi v send-keys -X begin-selection
# macOS:
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"
# Linux: bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"
# ──────────────────────────────────────────
# 상태 바
# ──────────────────────────────────────────
set -g status-position bottom
set -g status-bg "#1e1e2e"
set -g status-fg "#cdd6f4"
set -g status-interval 5
set -g status-left "#[fg=#89b4fa,bold] #S #[fg=#6c7086]│"
set -g status-left-length 30
set -g status-right "#[fg=#6c7086]│ #[fg=#a6e3a1]%Y-%m-%d #[fg=#89b4fa]%H:%M "
set -g status-right-length 40
setw -g window-status-format " #I:#W "
setw -g window-status-current-format "#[bg=#313244,fg=#cba6f7,bold] #I:#W "
3. Ghostty + tmux 최강 조합
왜 함께 사용하는가?
| 기능 | Ghostty 단독 | tmux 단독 | 조합 |
|---|---|---|---|
| GPU 가속 렌더링 | ✅ | ❌ | ✅ |
| 세션 영속성 | ❌ | ✅ | ✅ |
| SSH 원격 작업 | 제한적 | ✅ | ✅ |
| 화면 분할 | ✅ (로컬) | ✅ | ✅ |
Ghostty 시작 시 tmux 자동 연결
# ~/.zshrc에 추가
if command -v tmux &>/dev/null && [ -z "$TMUX" ]; then
tmux attach-session -t default 2>/dev/null || tmux new-session -s default
fi
프로젝트별 세션 스크립트
#!/bin/bash
# ~/bin/dev-session — 개발 환경 한 번에 세팅
SESSION="my-project"
tmux new-session -d -s $SESSION -n "editor"
tmux send-keys -t $SESSION:editor "nvim ." Enter
tmux new-window -t $SESSION -n "backend"
tmux send-keys -t $SESSION:backend "npm run dev" Enter
tmux new-window -t $SESSION -n "logs"
tmux split-window -h -t $SESSION:logs
tmux attach-session -t $SESSION
권장 레이아웃 패턴
┌──────────────────┬──────────────────┐
│ │ 테스트/로그 │
│ 메인 편집기 ├──────────────────┤
│ │ 서버/빌드 │
└──────────────────┴──────────────────┘
클립보드 통합 (macOS)
# ~/.tmux.conf에 추가 (tmux 3.2+)
set -g set-clipboard on
4. 빠른 참조 치트시트
Ghostty 필수 단축키 (macOS)
⌘T 새 탭 ⌘W 탭 닫기
⌘D 수직 분할 ⌘⇧D 수평 분할
⌘+ 폰트 크기+ ⌘- 폰트 크기-
⌘⌥← 이전 탭 ⌘⌥→ 다음 탭
tmux 필수 단축키 (Prefix = Ctrl+A)
C-a | 수직 분할 C-a - 수평 분할
C-a h/l 좌/우 패널 C-a j/k 상/하 패널
C-a z 최대화 토글 C-a c 새 윈도우
C-a n/p 다음/이전 창 C-a d 세션 분리
C-a [ 복사 모드 C-a ] 붙여넣기
자주 쓰는 tmux 명령어
tmux new -s 프로젝트명 # 프로젝트 세션 생성
tmux a -t 프로젝트명 # 세션 재연결
tmux ls # 세션 목록
tmux kill-server # 모든 세션 종료
마치며
Ghostty + tmux 조합은 개발자의 터미널 경험을 완전히 새로운 수준으로 끌어올립니다. Ghostty의 아름다운 렌더링과 네이티브 성능, tmux의 강력한 세션 관리와 영속성이 만나면, 어떤 상황에서도 효율적인 워크플로우를 구축할 수 있습니다.
특히 원격 서버 작업이 많은 개발자라면 tmux의 세션 영속성은 필수입니다. SSH 연결이 끊겨도 작업이 그대로 유지되고, 다시 연결하면 마치 아무 일도 없었던 것처럼 이어서 작업할 수 있습니다.
처음에는 단축키가 낯설게 느껴질 수 있지만, 일주일 정도 집중해서 사용하면 터미널 없이는 개발이 불편해질 정도로 강력한 도구가 될 것입니다.