일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 컨트롤러
- 정식버전
- tevo
- catalina
- high sierra
- 에어팟
- 3D 프린터
- Mac
- asahi linux
- 업데이트
- macos
- iOS 13
- AirPods
- 버그
- Linux
- IOS
- 모하비
- 맥북프로
- 3D프린터
- 애플
- beta
- Fedora
- 터치바
- mojave
- Tarantula
- 아이폰
- 맥
- sierra
- 터미널
- 시에라
- Today
- Total
elsa in mac
Ghostty 터미널 에뮬레이터 설치 및 간단 사용기 본문
현지시각으로 2024.12.26일 한국시간으로는 27일 아침에 세간의 관심을 끌어왔던 새로운 terminal emulator인 Ghostty 가 1년 이상의 closed beta를 마치고 마침내 대중에 공개되었습니다.
현재 공식적으로 버전 1.0.0 의 macOS 버전과 Linux(arch..) 버전이 배포되고 있습니다 만, 안타깝게도 아직 windows용 버전은 사용할 수 없습니다. 추후 릴리즈 한다고 하네요..
저의 경우에는 Asahi Linux 를 사용하고 있기 때문에, Fedora / aarch64 환경이라 관련 버전을 다운로드 받아야 하는데, 배포를 하고 있지 않기 때문에, Zig 로 빌드를 해야 하지만, "어라~ 빌드가 안되네.." 하지만, 이미 선지자 분께서 비 공식적인 fedora release repository를 만들고 빌드 버전을 배포하고 있다는 것을 알게 되었습니다. (감사합니다.)
설치는 아래와 같이 repository를 추가한 후, dnf install로 ghostty를 설치하면 됩니다.
# enable copr repo
sudo dnf copr enable pgdev/ghostty
# install stable
sudo dnf install ghostty
# or install last build from main branch
sudo dnf install ghostty-git
Ghostty ??
Ghostty는 새롭게 등장한 Terminal Emulator 입니다. zig로 작성된 crossplatform을 지원하는 libghostty를 기반 하에 macOS 버전은 Swift-GUI로, Linux는 GTK4를 이용한 Native GUI 버전으로 구현되었으며, 내부적으로 Metal 혹은 OpenGL GPU 가속 기능을 이용합니다. 구성에 있어 터미널 에뮬레이텨 기능과 GUI를 구분하고, 이를 각 OS에 따라 구성함으로써, 각 OS에서 빠른구현과 환경 최적화에 대응하면서도 통일된 기능성을 유지할 수 있습니다. 1년 전부터 beta tester로 참여한 블로거들과 유튜버들이 침이 마르게 굉장하다.. 뛰어나다.. 등등 칭찬일색의 어그로가 끌려온 터라.. 기대감이 굉장히 높았었지요.. 개인적으로는 Wezterm을 주력으로 사용하고 있고, sub로 Foot 터미널을 사용하고 있습니다.
음.. 기본적으로 Zero Configuration Philosophy.. 즉, 설정파일이 없어도 기본적인 터미널 기능을 그대로 사용할 수 있다는 개념을 갖고 있는데, 폰트는 JetBrains Mono Nerd font를 기본으로 내장하고 있습니다. 하지만, 사용자에 따라 다양한 꾸미기가 불가결하기 때문에 설정파일을 이용해야 겠지요...
Linux의 경우에는 ~/.config/ghostty/config 파일을 생성하고, 옵션들을 설정하면 됩니다. 사용할 수 있는 옵션과 옵션에 대한 설명은 여기를 참조하면 됩니다. 아래는 제가 사용하고 있는 config 내용 입니다. 복잡하지 않는 수준입니다.
# 폰트 설정
font-family = Sarasa Term K Nerd Font
font-size = 11.5
# 폰트 width 조정
adjust-cell-width = -6%
# 윈도우 패딩 (좌/우)
window-padding-x = 10,10
# 윈도우 패딩 (상/하)
window-padding-y = 10,10
# shell integration : none
shell-integration = none
shell-integration-features = cursor, sudo, no-title
# 창, pane 등을 닫을 때 확인창을 표시하지 않음.
confirm-close-surface = false
# 마우스 스크롤 멀티플라리어
mouse-scroll-multiplier = 0.7
# 투명도 설정 : 95%
background-opacity = 0.95
# GTK titlebar 숨김
gtk-titlebar = false
gtk-single-instance = true
# theme
# check theme : ghostty +list-themes
window-theme = dark
theme = catppuccin-mocha
# for custom theme
# palette = 0=#45475a
# palette = 1=#f38ba8
# palette = 2=#a6e3a1
# palette = 3=#f9e2af
# palette = 4=#89b4fa
# palette = 5=#f5c2e7
# palette = 6=#94e2d5
# palette = 7=#bac2de
# palette = 8=#585b70
# palette = 9=#f38ba8
# palette = 10=#a6e3a1
# palette = 11=#f9e2af
# palette = 12=#89b4fa
# palette = 13=#f5c2e7
# palette = 14=#94e2d5
# palette = 15=#a6adc8
# background = 1e1e2e
# foreground = cdd6f4
# cursor-color = f5e0dc
# selection-background = 353749
# selection-foreground = cdd6f4
결과는 아래와 같습니다.
Ghostty는 wezterm과 마찬가지로 자체 multiplexing 기능을 포함하고 있습니다. 따라서, 화면을 분할혀는 split 기능을 갖고 있으며, 자신이 원하는 keybinding을 통해 multiplexing 기능을 사용할 수 있습니다.
기본적인 keybinding은 ghostty +list-keybinds 명령으로 확인할 수 있습니다.
만일 사용자가 해당 기능에 대한 자신이 원하는 키조합으로 변경하고자 한다면, config 파일에 아래와 같이 keybind를 정의하면 됩니다.
# keybinding
# tmux의 keybinding을 참조함.
# ctrl+b 를 leader 키처럼 사용함.
# 공란이 있으면 안됨.
# ctrl+b 한 후, ' 키를 누르면 화면을 세로로 분할하며, 신규 pane은 아래쪽에 나타남.
keybind = ctrl+b>'=new_split:down
# ctrl+b 한 후, ; 키를 누르면 화면을 가로로 분할하며, 신규 pane은 오른쪽에 나타남
keybind = ctrl+b>;=new_split:right
# ctrl+b 한 후, \ 키를 누르면 분할된 pane들을 모두 동일한 크기로 조정함
keybind = ctrl+b>\=equalize_splits
# ctrl+b 한 후, ] 또는 [ 키를 눌러 이전 pane 혹은 다음 pane으로 focus 이동
keybind = ctrl+b>right_bracket=goto_split:next
keybind = ctrl+b>left_bracket=goto_split:previous
# ctrl+b 한 후, z 키를 눌러 focused pane을 zoom / unzoom 시킴.
keybind = ctrl+b>z=toggle_split_zoom
# ctrl+b 한 후, q 키를 눌러 pane 또는 app을 종료 함.
keybind = ctrl+b>q=close_surface
# shift+ctrl 키룰 누른 상태에서 방향키를 눌러 위/아래/좌/우 방향의 pane으로 focus 이동
keybind = shift+ctrl+up=goto_split:top
keybind = shift+ctrl+down=goto_split:bottom
keybind = shift+ctrl+left=goto_split:left
keybind = shift+ctrl+right=goto_split:right
# copy & paste
keybind = super+c=copy_to_clipboard
keybind = super+v=paste_from_clipboard
Ghostty는 shader를 사용할 수 있는 기능을 내장하고 있습니다. 특별히 Linux에서 shader 기능을 사용하기 위해서는 OpenGL 4.2 이상이 필요합니다.
shader 기능을 이용하려면 아래와 같이 설정이 필요 합니다.
# shader 파일 assign
custom-shader = <shader file.glsl>
# shader animation 설정
# true : focused 된 ghostty 에서만 animation
# false : 모든 ghostty 창에서 animation 중지
# always : 항상 animation
custom-shader-animation = always
shader기능을 이용하면 시각적으로 꽤나 근사하기는 하지만 CPU 와 Memory 점유율이 상승하고 프레임이 저하될 수 있습니다. 사용할 수 있는 shader들은 여기를 참고하시기 바랍니다.
사용기
자 그럼 Ghostty 의 첫번째 공식 릴리즈 버전을 사용해 본 소감을 간단히 적어 보겠습니다.
개인적으로 Terminal Emulator를 거의 끼고 사는 사람으로써 터미널을 평가하는 첫번째로 속도에 대해 살펴보면, 자타 공인 가장 빠른 반응성을 보이는 것은 alacritty 인데, 거의 대등 소이한 반응성을 보여 줍니다. 개발자가 필역한 대로 빠른 속도감을 느낄 수 있습니다. 일반적인 사용에서는 kitty나 foot과 비교해도 빠른 반응을 보여 줍니다.
Ghostty는 Kitty Terminal Image Protocol을 포함하고 있기 때문에, kitty와 동일한 수준의 image 표시가 가능합니다.
좋습니다. 괜찮아요.
폰트 가독성도 좋습니다.
자체 multiplexing기능을 사용하지 않고 tmux 사용에도 별 문제는 없어 보입니다.
메모리 사용량을 보면, 역시 foot이 넘사벽이죠? 8.6MiB 수준일때, kitty기 48.9MiB, 그리고 Ghostty가 46.8MiB 수준이니까.. foot 보다는 메모리 사용량이 많지만, kitty와는 대등하거나 약간 작은 수준임을 알 수 있습니다. 아무래도 GPU가속을 사용하기 때문에 그렇지 않은 터미널 보다 메모리를 많이 사용하는 것은 어쩔 수 없습니다.
개인적으로 경함한 단점(?).. 버그라면, swayFX window manager에서 ghostty에 포커스를 주었을 때, border가 표시되지 않는 문제가 있었고, fcitx5 에서 왼쪽 shift키로 한/영 전환을 사용하는데, 이게 Ghostty에서만 작동하지 않아서, Shift+Space 한/영 전환을 사용해야 하는 점등이 좀 불편했습니다.
결론
결론적으로 보자면.. 1여년간의 closed beta를 거처 1.0 버전의 public 버전이 릴리즈 되었지만, "현재 사용하고 있는 터미널을 대치할 만한 것인가 ?" 에 대해서는 아 직 은 "글쎄..." 라는 정도 입니다. 다른 갱쟁자들 보다 나쁘다기 보다는 굳이 손에 익은 도구를 바꿀 동기가 부여될 만하지는 않다는 것인데요, 만약 ghostty를 터미널 에뮬레이터로 처음 사용하는 분들이라면 추천할 만 합니다.
물론, 세세하고 깊이있게 사용해 본 것이 아니라, 특정한 환경이나 일부 CLI 도구들과 사용 시 버그가 발생할 수도 있습니다 만, 개인적인 기준에서는 특별히 심긱한 버그를 발견하지는 못했습니다. 쓸만 해요..
그래도 최대의 장점이라면, Open-Source Project로써, 업데이트나 새로운 기능 추가에 소극적인 여타 다른 터미널 에뮬레이터에 비해 이제 막 대중에 공개된 새로운 프로젝트인 만큼, 현실적인 수요자들의 새로운 요구사항을 적극적으로 수용할 가능성이 높다는 점을 들 수 있을 것 같습니다. 앞으로 수 많은 사용자들의 버그 레포트와 요구 사항들이 얼마나 빠르게 반영할 수 있는가와 최적화가 대중적인 선택를 좌우하게 될 것 입니다.
'Terminal' 카테고리의 다른 글
Yazi 파일 메니저에서 Icon과 파일 및 폴더 text가 붙어서 보기가 불편한가요 ? (0) | 2025.01.12 |
---|---|
Ghostty 터미널에서 fcitx5를 사용할 때, 단일키로 한/영 전환이 되지 않는 문제 대응법 (0) | 2025.01.12 |
neovim, markdown plugin의 최강자 - markview.nvim (0) | 2024.12.11 |
터미널 에뮬레이터에서 chatGPT를 이용해 보자 (0) | 2024.10.31 |
noevim(nvim) 을 배우고 싶다구요 ? cheat sheet 참고 하세요.. ^^ (0) | 2024.10.25 |