개발 도구

Ghostty와 tmux로 터미널 워크플로우 완전 정복

Ghostty 터미널 에뮬레이터와 tmux를 함께 사용하는 최강의 워크플로우를 소개합니다. 설치부터 설정, 실전 단축키, 프로젝트별 세션 관리까지 한 번에 정복하세요.

Ghostty와 tmux로 터미널 워크플로우 완전 정복

터미널을 더 강력하고 효율적으로 사용하고 싶다면, Ghosttytmux의 조합이 정답입니다. 이 글에서는 두 도구의 설치부터 실전 활용법까지 상세히 알아봅니다.


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 연결이 끊겨도 작업이 그대로 유지되고, 다시 연결하면 마치 아무 일도 없었던 것처럼 이어서 작업할 수 있습니다.

처음에는 단축키가 낯설게 느껴질 수 있지만, 일주일 정도 집중해서 사용하면 터미널 없이는 개발이 불편해질 정도로 강력한 도구가 될 것입니다.