들어가며
안녕하세요! 설날에 심심해서 이것저것 알아보던 중 요즘 핫한 terminal인 Ghostty를 적용해 보았는데요. 아직 기초 수준 밖에 다루지 못하지만, 제가 적용해 본 내용들에 대해 포스팅해 보았습니다!
(계속 사용해보면서 설정하는 내용들을 이어서 추가해보려고 합니다 😊 )
💻 이 글은 mac 기준으로 작성되었습니다!
Ghostty
사실 Ghostty를 처음 접한 건 Geeknews에서 Ghostty에 대한 아티클이 올라와서 보게 된 것인데요. 지금 사용하고 있는 iterm2도 나쁘지 않았지만 Ghostty의 다양한 커스텀 기능과 단축키 기능이 매력적이라고 느껴져 바로 설치해 보았습니다.
Ghostty란?
Ghostty는 빠르고 다양한 기능을 갖춘 크로스 플랫폼 터미널 에뮬레이터로, 플랫폼 고유의 UI와 GPU 가속을 활용합니다. 특히, Ghostty는 Terraform으로 알려진 Hashicorp의 공동창업자인 Mitchell Hashimoto가 개발한 오픈소스 프로젝트라고 합니다!
특징
네이티브 경험
macOS에서는 Swift와 SwiftUI를, Linux에서는 Zig와 GTK4 C API를 사용하여 각 플랫폼의 고유한 UI와 기능을 제공합니다.
풍부한 기능
Kitty 그래픽 프로토콜, 라이트/다크 모드 알림, 하이퍼링크 등 다양한 터미널 기능을 지원하며, 네이티브 탭, 분할 창, macOS의 드롭다운 터미널, 시스템 다크/라이트 모드에 따른 테마 전환 등의 애플리케이션 기능도 제공합니다.
고속 성능
Ghostty는 빠른 시작 시간, 스크롤 속도, 입출력 처리량, 제어 시퀀스 처리량, 프레임 레이트 등 다양한 성능 지표에서 우수한 성능을 목표로 합니다.
libghostty 아키텍처
Ghostty의 핵심은 크로스 플랫폼 C-ABI 호환 라이브러리인 libghostty로, 터미널 에뮬레이션, 폰트 처리, 렌더링 기능을 제공합니다. macOS와 Linux의 GUI 애플리케이션은 이 라이브러리를 활용하여 개발되었습니다.
Ghostty 사용하기
Ghostty의 이론적인 부분보다 어떻게 사용하는지가 최대 관심사일텐데요. 문서를 통해 제가 설정한 내용들을 한번 살펴보겠습니다.
설치
설치에는 binary 파일을 다운로드 받아 설치하는 방법과 homebrew를 통해 설치하는 방법이 존재합니다.
binary
homebrew
https://formulae.brew.sh/cask/ghostty
설치 확인
설치를 완료한 후 Ghostty를 실행시키면 위와 같이 터미널 창이 띄어집니다. (아직까진 별 다른 게 없죠?)
테마 변경
테마 리스트
ghostty +list-themes
위의 명령어를 통해 설정가능한 테마 목록을 확인하실 수 있습니다.
위의 사진처럼 상당히 다양한 테마들이 있는 것을 보실 수 있는데요! 상당히 매력적인 테마들도 많습니다!
이때 / 입력 후 검색할 수도 있습니다!
테마 설정
mkdir -p .config/ghostty # 없다면 생성
vim .config/ghostty/config
테마를 적용하기 위해선 특정 경로인 .config/ghostty 에 설정 파일을 만들어줘야 합니다! (없다면 만들어줘야겠죠?!)
theme = IR_Black
마음에 드는 테마의 이름을 theme의 key에 value로 넣어주시면 됩니다! (저는 IR_Black 테마가 마음에 들어 해당 테마로 설정해 보았습니다 😎 )
위의 사진처럼 cmd + , 으로 설정 파일을 텍스트 에디터로 열어서 수정이 가능합니다.
적용을 하기 위해서 해당 파일을 저장 후 터미널을 다시 열거나 cmd + shift + , 단축키를 입력하시면 적용된 터미널이 보여집니다.
개인 설정
https://ghostty.org/docs/config/reference
위의 문서를 참고해서 직접 커스텀이 가능합니다!
background-opacity = 0.8
background-blur-radius = 10
저는 살짝 투명하게 하는 것이 좋아서 background-opacity 와 background-blur-radius 설정을 해주었습니다!
그 후 적용하면 위의 사진처럼 보입니다!
단축키 지정
https://ghostty.org/docs/config/keybind
Ghostty의 가장 큰 장점은 여러 가지 기능을 keybind 하여 사용할 수 있다는 점입니다! 저도 아직 모든 기능을 다 알지 못하지만 가장 유용하다고 느끼고 있는 Quick Teminal 기능 정도만 keybind하여 사용하고 있습니다.
Quick Terminal
https://ghostty.org/docs/config/keybind/reference#toggle_quick_terminal
Ghostty의 문서와 여러 실사용 영상들을 보면서 정말 유용하겠다 싶었던 기능이 Quick Teminal 기능인데요. 어느 곳에서든 특정 커멘드를 사용하면 임시로 터미널을 사용할 수 있는 기능입니다.
keybind = global:cmd+grave_accent=toggle_quick_terminal
설정 파일의 global keybind에 cmd와 grave accent(~) 키를 사용해 toggle_quick_terminal을 활성화하도록 값을 추가한 후 저장하면 설정이 완료됩니다!
적용 후 cmd + ~ 키를 눌러주시면 Quick Teminal을 사용하실 수 있습니다.
Quick Teminal은 활성화된 임시 터미널이라는 개념으로 활성화되었을 때만 보이고 다른 곳을 클릭하거나 옮겨가면 사라집니다. 하지만 액세스 상태는 유지되기 때문에 다시 Quick Teminal을 활성화시키면 이전 세션이 유지되는 특징이 있습니다.
폰트 변경
폰트 리스트
ghostty +list-fonts
위의 명령어로 설정 가능한 font 목록을 확인하실 수 있습니다. 다만, 위의 명령어로 출력되는 font 목록은 시스템에서 "고정 폭"으로 인식되는 폰트만을 나열하기에 따로 설치했거나 다른 터미널에서 설정했었던 폰트가 이 목록에 나타나지 않을 수 있습니다.
font 설정
font-family = "MesloLGS NF"
저는 위와 같이 MesloLGS NF 로 설정했습니다!
그 후 적용하시면 설정한 font로 보이는 것을 확인하실 수 있습니다. (기본 font는 JetBrains Mono으로 설정됩니다.)
한글이 이상하다?
그런데 한글이 명조체로 보이는데요! 기존에 사용하던 iterm2에서는 한글을 따로 설정하지 않아도 명조로 보이지 않았습니다.
Fallback font 설정(feat.CJK)
이유는 Ghostty는 아직 모든 font에 대해 CJK(China, Japan, Korea)가 지원되지 않습니다. 그렇기에 CJK를 지원하는 fallback font-family를 하나 더 지정해야 합니다.
Fallback font란?
'Fallback 폰트'는 주로 웹 디자인과 타이포그래피에서 사용되는 개념으로, 지정한 폰트가 사용자의 시스템에 없을 경우를 대비하여 대체 폰트를 지정하는 것을 의미합니다.
font-family = "MesloLGS NF"
font-family = "Noto Sans CJK KR"
CJK를 지원하는 font를 따로 설치하고 위와 같이 설정 후 적용하면 됩니다!
https://github.com/ghostty-org/ghostty/discussions/5377#discussioncomment-11958044
해당 내용이 너무 궁금해서 직접 Ghostty 프로젝트에 직접 discussions에 질문까지 했었습니다! (추후엔 지원해줄것이라는 기대를,,,)
하지만 D2Cording font처럼 한글을 지원하는 font를 사용할 경우에는 위와 같은 시행착오 넘어가셔도 됩니다 ! 😎😎
마치며
Ghostty를 통해 기본적인 터미널 설정을 해봤는데요. 다양한 테마로 커스텀할 수 있다는 것이 상당히 매력적이었습니다. 제가 안내드린 theme로 설정하는 것외에 직접 값을 통해 색부터 터미널 너비등 다양한 것을 원하는 입맛대로 커스텀 할 수 있어서 더욱 무궁무진한것 같네요! 아직까진 기초 수준으로 사용하고 있지만, 점차 유용한 기능들을 따로 추가해보며 이 글에 추가하도록 해보겠습니다!
'일상 이야기' 카테고리의 다른 글
2024년 회고 (2) | 2024.12.31 |
---|---|
TerminalTextEffects(TTE)로 터미널에 영화에서 보던 효과주기! (0) | 2024.05.30 |
2024년 1분기 회고 (1) | 2024.03.22 |