Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Mitchell Hashimoto가 만든 터미널 Ghostty

Mitchell Hashimoto는 2012년 HashiCorp를 Armon Dadgar와 함께 만든 공동 창업자이다. HashiCorp에서 CEO도 하고 CTO도 했지만 원래 HashiCrop를 창업하기 전에 가상화를 이용한 개발 환경 프로젝트인 Vagrant를 혼자서 만들다 창업한 거기도 하고 머신 이미지 생성 도구인 Packer와 Infrastructure as Code 도구인 Terraform, 시크릿 관리 도구인 Vault의 초기 코드를 다 만들었을 정도로 대단한 개발자이기도 하다. HashiCorp가 Hashimoto의 이름을 딴 것에서 알 수 있듯이 지금의 HashiCorp가 되기까지 그 중심에 있는 사람이라고 할 수 있다.

개발이 그리웠는지 2021년에는 경영진에서 물러나서 개인 기여자(Individual Contributor)로 역할을 바꾸었다가 2023년 말에는 11년간 있던 HashiCorp를 떠나기로 결정했다.

Ghostty

Mitchell Hashimoto는 2021년부터 사이드 프로젝트로 터미널 에뮬레이터를 만들고 있었다는 사실을 2023년 여름에 와서야 처음으로 공개하고 Discord에서 비공개 베타로 소수 인원과 함께 테스트하면서 개발하면서 개발 로그도 블로그에 올리고 있었다.

이렇게 만들던 Ghostty를 지난 12월 26일 드디어 1.0을 릴리스하면서 누구나 쓸 수 있도록 홈페이지도 공개하고 MIT 라이센스로 소스코드도 공개했다.

사용자 삽입 이미지

원래는 혼자서 Zig 프로그래밍 언어를 가지고 놀면서 터미널에 대한 이해도를 넓히려고 시작한 프로젝트였지만 익숙해질수록 점점 기본 터미널에서 맘에 안 드는 게 보이기 시작했고 결국 Ghostty로 발전하게 된다. 그래서 Ghostty는 빠르면서 기능이 풍부하면서 플랫폼 네이티브 GUI를 갖춘 크로스 플랫폼 터미널 에뮬레이터로 만들어졌다.(현재는 macOS와 Linux만 지원하고 Windows는 아직 안 나왔다..)

사용자 삽입 이미지

워낙 기본에 충실한 터미널이라서 스크린숏을 찍는 게 무슨 의미인가 싶긴 하지만 이렇게 생겼다.

사용자 삽입 이미지

처음에 제일 놀란 부분은 설정인데 Settings 메뉴를 열면 위와 같은 텍스트 에디터가 열린다. 첨엔 버그인가 하는 생각을 했다. macOS에서는 $HOME/Library/Application\ Support/com.mitchellh.ghostty/config설정 파일이 생기는데 처음에는 파일이 없다가 여기에 뭔가를 적으면 파일이 생성된다. 설정 UI는 없지만 옵션은 다양하게 지원하고 있어서 난 다음 설정 정도만 지정해서 Dropbox에 파일을 두고 $HOME/Library/Application\ Support/com.mitchellh.ghostty/config에는 alias만 만들어서 여러 맥북에서 같은 설정을 사용하고 있다.

theme = GitHub Dark
font-size = 26
shell-integration = zsh

Ghostty는 zero configruation 철학을 가지고 있어서 아무런 설정을 하지 않아도 괜찮은 기본값이 설정된 편이다. JetBrains Mono를 기본 폰트로 사용하고 있는데 나도 이 폰트를 좋아해서 폰트는 건드리지 않았다.

사용자 삽입 이미지

여러 코딩 폰트가 내장되어 있기 때문에 터미널에서 ghostty +list-fonts를 입력하면 내장된 폰트 목록을 볼 수 있다.

사용자 삽입 이미지

테마도 내장되어 있는데 ghostty +list-themes를 입력하면 위처럼 테마 프리뷰 화면이 나와서 원하는 테마를 고르기가 꽤 좋다. 물론, 이건 프리뷰일 뿐이므로 원하는 테마를 찾으면 그 이름을 위 config 파일에 지정해야 한다.

문서대로라면 쉘 통합은 자동으로 되어야 하는데 뭔가 처음에 설치해서 써볼 때 zsh 통합이 잘 안되는 느낌이 있어서 추가해 넣었다. 이건 정확하진 않아서 써보다가 뺄 수도 있다.

나는 macOS에서 iTerm2를 10년 정도 사용했는데 iTerm2에도 딱히 불만은 없었지만 이번에 기본 터미널을 Ghostty로 바꿔서 사용하고 있다. 사실 둘 다 기본에 충실한 터미널이라서 갈아타는 데 큰 문제는 없었다. 빠르다는 게 특징이라고는 하지만 이런 엄청난 로그를 출력해 보거나 하는 극한 상황이 아니면 어차피 크게 차이는 안 날 거로 생각한다. 어쨌든 내 zsh 설정은 앱을 따라 바뀌는 건 아니라서 기존 경험과 똑같이 사용하고 있다.

유일하게 걸렸던 게 기존에는 탭 간 이동할 때 ⌘ + ⌥ + 좌우화살표를 사용했는데 Ghostty는 네이티브를 따르기 때문에 탭 간 이동 단축키인 ⌘ + ⌥ + []를 지원하고 있다. 다른 부분은 불편한 게 없는데 이 새로운 단축키만 적응하고 있다. Ghostty가 Native라는 말이 어떤 의미인지를 Gregory Anders라는 사람이 설명한 Ghostty Is Native—So What?을 보면 macOS와 네이티브로 통합되었기 때문에 제목의 경로를 다른 앱으로 보내거나 OS에서 지원하는 찾기 기능이나 보안 키보드 기능 등을 사용할 수 있는 것도 큰 장점이라고 강조한다.

그 외 불편한 점으로는 터미널 명령어를 중단하거나 할 때 사용하는 Ctrl + c를 입력할 때 한글 입력 모드로 되어 있으면 터미널 중단이 되지 않고 2618;5u같은 문자가 입력된다. 습관적으로 터미널에서 이 키를 자주 누르는지 이게 나한테는 꽤 귀찮다. iTerm2에서는 내가 예전에 어떤 설정을 했는지 잘 기억나진 않지만, 입력모드와 상관없이 이런 문제가 없기 때문에 일단 Input Source Pro라는 앱을 이용해서 Ghostty에서는 항상 영어 입력모드가 기본이 되도록 설정했다.

Ghostty를 소개하고 있고 꽤 만족하고 있지만 iTerm2보다 엄청 좋다고까지 말하는 건 아니고 Vagrant, Packer, Terraform부터 해서 HashiCorp뿐 아니라 Mitchell Hashimoto의 오랜 팬이었기 때문에 Mitchell Hashimoto가 만든 Ghostty도 괜히 더 좋아진 게 한몫하고 있다.

2025/01/22 21:57 2025/01/22 21:57