GN⁺: Ghostty 1.0 출시 - 고속, 크로스플랫폼 터미널 에뮬레이터
(ghostty.org)- 빠르고 다양한 기능을 갖춘 크로스 플랫폼 터미널 에뮬레이터. 맥/리눅스에서 네이티브 UI를 지원하며 GPU 가속을 사용
- 유연한 키바인딩, 다양한 컬러 테마, 수많은 설정 옵션 제공
주요 특징
1. 네이티브 바이너리
- macOS와 Linux에서 네이티브 애플리케이션으로 작동
- macOS: GUI는 Swift로 작성되었으며 AppKit과 SwiftUI를 사용
- Linux: GUI는 Zig로 작성되었으며 GTK4 C API를 사용
- 플랫폼 고유의 UI 구성 요소를 사용하여 탭, 분할창, 오류 메시지 등의 기능을 구현
- 표준 키보드 및 마우스 단축키를 플랫폼 관례에 맞게 지원
- 플랫폼별 고유 기능 통합
- macOS: Quick Look, Force Touch, 안전한 입력 API, 재시작 시 창 상태 복구 등
2. 다양한 터미널 및 애플리케이션 기능
- 터미널 기능:
- Kitty 그래픽 프로토콜, 라이트/다크 모드 알림, 하이퍼링크 등을 지원
- Neovim, Zellij 등 터미널 애플리케이션에서 더 많은 기능 활용 가능
- 애플리케이션 기능:
- 네이티브 탭, 분할창, macOS용 드롭다운 터미널, 라이트/다크 모드 전환 등
3. 성능
- Ghostty는 가장 빠른 터미널 에뮬레이터들과 동등한 수준의 성능을 목표로 설계
- 다양한 성능 지표에서 경쟁력을 갖추며, 느리게 느껴지지 않도록 최적화
- 예: 시작 속도, 스크롤 속도, IO 처리량, 프레임 속도 등
- 초기 사용자는 Ghostty의 성능 개선이 일상적인 사용에서 눈에 띄게 향상된다고 평가
아키텍처
- Ghostty의 핵심은 크로스 플랫폼 C-ABI 호환 라이브러리인
libghostty
임- 터미널 에뮬레이션, 폰트 처리, 렌더링 기능 제공
- GUI 애플리케이션은
libghostty
를 기반으로 작동- macOS 앱: Swift로 작성, AppKit과 SwiftUI 사용
- Linux 앱: Zig로 작성, GTK4 C API 사용
- 터미널 에뮬레이션과 GUI 간의 명확한 분리를 통해 다양한 터미널 에뮬레이터 프로젝트가
libghostty
를 활용할 수 있는 생태계 조성 가능 -
향후 목표:
-
libghostty
의 API를 안정화하고 독립형 라이브러리로 출시
-
Wezterm 처럼 한글 타이핑이 잘 되더군요. 특히 맥에서 NFC 조합에 에 따라 한글 폰트가 달리 보이는 것도 좋네요. Wez 업데이트가 정체된 듯
Hacker News 의견
-
Ghostty는 지난 2년간의 열정적인 작업의 결과물이며, 많은 사람들이 이를 사용하면서 그 안에 담긴 사랑과 노력을 느끼길 바람. Ghostty는 다른 터미널들과 비교하여 우월하다고 주장하지 않으며, 각기 다른 설계 목표와 절충점을 가지고 있음. Kitty, WezTerm, Foot, iTerm2, Rio 등 다양한 훌륭한 터미널들이 존재함.
-
Ghostty는 빠르고 성능이 뛰어나며, 특히 많은 디버깅 정보를 출력할 때 터미널이 병목이 되지 않음. 개발 시스템에서 큰 차이를 만들어 줌.
-
Ghostty는 텍스트 렌더링이 정확하고 필요한 모든 기능을 갖춘 매우 잘 작성된 Zig 코드로 이루어져 있음. Bun의
Bun.stringWidth
에서 일부 코드를 사용함. -
Ghostty에 Session/Workspace 개념이 있는지 궁금하며, Alacritty와 tmux의 통합 방식에서 배울 점이 있을 것 같음.
-
Ghostty에는 "quake mode"라는 숨겨진 기능이 있으며, macOS에서 특정 키 바인딩으로 설정 가능함. "quick terminal" 창의 기본 높이를 설정할 수 있는 옵션은 없지만 창을 드래그하여 조정할 수 있음.
-
여러 터미널 에뮬레이터 도구를 시도한 후 wave terminal을 선택했으며, MacOS와 Linux에서 사용할 수 있는 도구 목록을 제공함. Warp는 VC 제품이라서 사용하지 않음.
-
Ghostty 설정을 생성하는 데 도움이 되는 커뮤니티 사이트가 유용함.
-
Ghostty는 최근에 출시된 고품질 오픈 소스 소프트웨어로, 구독 없는 미래에 대한 희망을 줌. Mitchell에게 감사함.
-
"platform-native UI"라는 표현에 처음에는 회의적이었으나, Linux에서는 GTK, MacOS에서는 SwiftUI를 사용한다는 점에서 흥미로웠음. 새로운 터미널 에뮬레이터를 시도하는 것은 항상 재미있음. Bitmap 폰트를 지원하지 않는 점은 아쉬움.
-
Ghostty의 일부 마법을 설명하는 블로그 포스트가 흥미로움.