Ghostty: GPU 가속 터미널 에뮬레이터
소프트웨어 개발을 하다 보면 터미널 앱을 꽤 오래 고민하게 됩니다. 운영체제 기본 터미널부터 iTerm2, Kitty, Hyper, Warp까지 이것저것 써봤는데요. 요즘 개발자 커뮤니티에서 Ghostty라는 터미널에 대한 칭찬이 끊이질 않길래 한번 설치해봤더니, 완전히 취향저격이었습니다.
Hyper나 Warp처럼 화려한 UI나 부가 기능이 잔뜩 달려 있지는 않아요. 대신 터미널 본연의 기능에 충실하면서 깔끔하고 직관적인 인터페이스를 갖추고 있어서, 쓸수록 만족감이 올라가는 유형의 도구입니다.
왜 또 새로운 터미널인가요?
기존 터미널들을 떠올려 보면, 쓸 만한 것들은 많지만 모든 걸 만족시키는 건 하나도 없었습니다.
iTerm2는 macOS에서 오래 쓰인 터미널이지만, 기능이 많아진 만큼 무거워진 감이 있고요. Alacritty나 Kitty는 GPU 가속으로 빠르지만 네이티브 macOS 느낌이 부족합니다. Warp는 예쁘고 기능이 많은데 AI 기능이 무겁고, Hyper는 Electron 기반이라 자원 소모가 크죠.
Ghostty는 이걸 다 한번에 잡아보겠다는 터미널이에요.
- 빠르다: GPU 가속 렌더링 (macOS에서 Metal, Linux에서 OpenGL)
- 기능이 풍부하다: 분할 창, 탭, 셸 통합, 수백 개 테마 등
- 네이티브하다: macOS에서는 네이티브 Cocoa UI, Linux에서는 GTK4 사용
다른 터미널들이 이 셋 중 하나를 포기하게 만들었다면, Ghostty는 셋 다 잡겠다는 거예요.
설치
macOS에서는 DMG 파일을 다운로드하거나 Homebrew로 설치할 수 있습니다.
$ brew install --cask ghostty
Linux에서는 배포판에 따라 패키지 매니저를 사용하거나 소스에서 빌드할 수 있고요. 자세한 내용은 Ghostty 다운로드 페이지를 참고해 주세요.
첫인상
Ghostty를 처음 실행하면 macOS 기본 터미널과 비슷한 느낌을 받게 됩니다. 네이티브 Cocoa UI를 사용하기 때문에 메뉴 바, 타이틀 바, 탭이 전부 macOS 스타일이에요.
설정 파일 하나 없이도 바로 쓸 수 있게 설계되어 있어서 “제로 설정(zero config)” 철학이 인상적입니다.
폰트, 테마, 키 바인딩이 전부 합리적인 기본값으로 잡혀 있거든요.
키 바인딩도 표준 macOS 앱과 동일해서 Cmd+T로 새 탭, Cmd+N으로 새 창을 여는 게 그냥 됩니다.
설정 파일
Ghostty의 설정은 단순한 key = value 포맷입니다.
JSON이나 YAML이 아니라서 오타 걱정이 줄어들어요.
설정 파일 위치는 ~/.config/ghostty/config인데, macOS에서는 ~/Library/Application Support/com.mitchellh.ghostty/config도 사용할 수 있습니다.
font-family = "Hack Nerd Font Mono"
font-size = 14
window-padding-x = 10
window-padding-y = 5
설정을 바꾸면 Cmd+Shift+,로 바로 반영할 수 있습니다.
앱을 재시작할 필요가 없어서 이것저것 실험해보기 좋아요.
설정 파일이 길어지면 config-file 지시어로 분할도 가능합니다.
config-file = themes/my-colors
config-file = keybinds
테마
빌트인 테마가 수백 개나 들어있어서 설정 한 줄이면 바로 적용할 수 있어요.
theme = catppuccin-mocha
그리고 라이트 모드와 다크 모드에 각각 다른 테마를 지정할 수 있는데요. 시스템 설정에 따라 자동으로 전환됩니다.
theme = light:catppuccin-latte,dark:catppuccin-mocha
macOS의 다크 모드를 켜고 끌 때마다 터미널 테마가 따라 바뀌니까 따로 신경 쓸 일이 없어요.
분할 창과 탭
네이티브 탭과 분할 창도 쓸 수 있습니다.
| 기능 | macOS 단축키 |
|---|---|
| 새 탭 | Cmd + T |
| 오른쪽 분할 | Cmd + D |
| 아래쪽 분할 | Cmd + Shift + D |
| 분할 창 이동 | Cmd + Option + 방향키 |
| 분할 창 닫기 | Cmd + W |
네이티브 탭이라서 macOS의 다른 앱처럼 탭을 드래그해서 순서를 바꾸거나 별도 창으로 분리하는 것도 됩니다.
분할 창 기능은 기본적인 용도로는 충분한데, 좀 더 고급 기능이 필요하다면 Zellij 같은 터미널 멀티플렉서를 함께 쓰는 것도 좋은 선택입니다.
퀵 터미널
눈에 띄는 기능 중 하나가 퀵 터미널(Quick Terminal)이에요. 화면 위에서 스르르 내려오는 드롭다운 형태의 터미널인데, 단축키 하나로 바로 열 수 있어요.
keybind = global:cmd+grave_accent=toggle_quick_terminal
Cmd + ~를 누르면 현재 작업 중인 앱 위에 반투명 터미널이 슬라이드되면서 나타나고, 다시 누르면 사라집니다.
작업 흐름을 끊지 않고 간단한 명령어를 실행하고 싶을 때 편리해요.
셸 통합
셸 통합(shell integration) 기능이 꽤 강력합니다. bash, zsh, fish, elvish를 지원하고, 터미널 시작 시 자동으로 통합 코드를 주입해줘요.
셸 통합이 켜지면 이런 기능을 쓸 수 있는데요.
- 프롬프트 감지: 프롬프트에 커서가 있을 때 창 닫기 확인을 건너뜀
- 디렉토리 유지: 새 터미널이나 분할 창이 이전 작업 디렉토리에서 열림
- 명령어 출력 선택:
Cmd + 트리플 클릭으로 명령어 출력을 통째로 선택 - 프롬프트 점프: 스크롤백에서 이전/다음 프롬프트로 바로 이동
- 커서 이동:
Option + 클릭으로 프롬프트 내 원하는 위치로 커서 이동
특히 jump_to_prompt는 긴 출력을 스크롤해서 찾을 필요 없이 이전 명령어의 프롬프트로 바로 점프할 수 있어서 쓸수록 손에 익어요.
폰트 렌더링
macOS에서는 Metal로 폰트를 렌더링하는데요. 리거처(ligature)를 지원하는 Metal 렌더러를 가진 유일한 터미널이라고 해요.
폰트가 얇게 보일 때는 font-thicken 옵션을 켜면 됩니다.
font-thicken = true
프로그래밍 폰트의 리거처를 사용한다면 font-feature 옵션으로 세밀하게 제어할 수도 있습니다.
font-feature = calt
font-feature = liga
배경 투명도와 블러
배경을 반투명하게 만들고 블러 효과를 줄 수도 있어요. 터미널 뒤로 살짝 비치는 배경이 은근 예쁘거든요.
background-opacity = 0.8
background-blur-radius = 10
background-opacity는 0(완전 투명)부터 1(불투명)까지 설정 가능하고, background-blur-radius로 블러 정도를 조절해요.
보안 키보드 입력
비밀번호 프롬프트를 자동으로 감지해서 보안 키보드 입력(Secure Keyboard Entry) 모드를 켜줍니다. 이 모드가 켜지면 타이틀 바 오른쪽에 자물쇠 아이콘이 애니메이션과 함께 나타나서 현재 보안 입력 상태라는 걸 알려줘요.
다른 앱이 키 입력을 가로채는 걸 방지해주기 때문에 ssh 접속이나 sudo 비밀번호 입력 시 안심이 돼요.
다른 터미널과 비교
| 항목 | Ghostty | iTerm2 | Alacritty | Kitty |
|---|---|---|---|---|
| GPU 가속 | Metal/OpenGL | Metal | OpenGL | OpenGL |
| 네이티브 UI | Cocoa/GTK4 | Cocoa | 없음 | 없음 |
| 리거처 지원 | 지원 | 지원 | 미지원 | 지원 |
| 설정 포맷 | key=value | GUI | TOML | conf |
| 셸 통합 | 자동 주입 | 수동 설정 | 없음 | 자동 주입 |
| 빌트인 테마 | 수백 개 | 없음 | 없음 | 일부 |
| 분할 창 | 네이티브 | 네이티브 | 없음 | 자체 구현 |
| 퀵 터미널 | 지원 | 핫키 창 | 미지원 | 미지원 |
| 작성 언어 | Zig | Obj-C | Rust | Python/C |
| 라이선스 | MIT | GPL | Apache 2.0 | GPL |
Alacritty는 가볍고 빠르지만 분할 창이나 탭 같은 기본 기능이 없어서 tmux를 곁들여야 합니다. iTerm2는 기능이 방대하지만 오래된 코드베이스 위에서 점점 무거워지고 있고요. Kitty는 기능적으로 가장 가까운데, Ghostty 쪽이 네이티브 UI 면에서 더 세련된 느낌을 줍니다.
Ghostty를 만든 사람
Ghostty는 Mitchell Hashimoto가 만들었습니다. HashiCorp의 공동 창업자로, Vagrant, Terraform, Vault 같은 유명 도구들을 개발한 분이에요. HashiCorp를 떠난 후 개인 프로젝트로 Ghostty를 시작했고, 차세대 시스템 프로그래밍 언어인 Zig로 처음부터 새로 작성했습니다.
Zig를 선택한 건 C 수준의 저수준 제어가 가능하면서 메모리 안전성을 확보할 수 있기 때문이라고 하는데요. JavaScript 런타임 Bun도 Zig로 작성된 것으로 유명하죠.
라이선스는 MIT이고 광고나 구독 없이 비영리 모델로 운영돼요. 텔레메트리도 없습니다.
마치며
빠르면서도 네이티브 느낌이 좋은 터미널을 찾고 계셨다면 Ghostty를 한번 써보세요.
제가 요즘 쓰고 있는 조합은 Ghostty + Zellij + NeoVim인데요. Ghostty가 터미널 자체를 맡고, Zellij로 창 분할과 세션을 관리하고, 코드는 NeoVim으로 편집하면 마우스 없이도 쾌적한 개발 환경이 만들어져요.
나머지는 Ghostty 공식 문서를 한번 읽어보세요.
This work is licensed under
CC BY 4.0