最近よく名前を聞くターミナルエミュレータ「Ghostty」。気になったので公式ドキュメントを読み込んで、macOS純正のTerminal.appと何が違うのか調べてみました。
Ghosttyってなに?
GhosttyはHashiCorpの共同創業者Mitchell Hashimoto氏が作ったターミナルエミュレータです。
公式いわく「高速・多機能・クロスプラットフォーム・ネイティブUI・GPU加速」がウリとのこと。
ネイティブへのこだわりがすごい
Ghosttyの一番の特徴はネイティブであることへのこだわりです。
macOSではSwift/AppKit/SwiftUI、LinuxではZig言語でGTK4を使ってるらしく、Electronみたいなクロスプラットフォームフレームワークは使ってません。だから各OSで「ちゃんとそのOSのアプリっぽく」動きます。
コア部分は「libghostty」というZig製ライブラリで、これをmacOS/Linuxそれぞれのネイティブアプリが使う構造になってます。
設定ゼロで使える思想
もう一つ面白いのが「Zero Configuration Philosophy」という考え方。
- デフォルトフォント(JetBrains Mono)内蔵
- Nerd Fontsもビルトイン
- テーマは数百種類プリセット
公式ドキュメントにはこう書いてあります。
if you find yourself needing to configure something other than highly subjective things like the theme and you think it should be a default, please open a discussion.
(テーマのような主観的なもの以外で設定が必要だと感じたら、それはデフォルトにすべきかもしれないのでdiscussionを開いてください)
純正ターミナルと何が違う?
じゃあ実際、macOSにもともと入ってるTerminal.appと何が違うのか。調べてみました。
GPU使ってるから速い
| Terminal.app | Ghostty | |
|---|---|---|
| レンダリング | CPU | GPU(Metal) |
GhosttyはGPUで画面描画してます。大量のログ流したりスクロールしたりするときの滑らかさが全然違うらしい。
フォント周りが充実
| Terminal.app | Ghostty | |
|---|---|---|
| リガチャ | ✗ | ✓ |
| Nerd Fonts | 手動設定 | ビルトイン |
| 絵文字の合成 | 限定的 | 完全対応 |
リガチャ(=> とか -> を合字で表示するやつ)に対応してるので、プログラミングフォントの恩恵をフルに受けられます。絵文字の肌色バリエーションとか国旗もちゃんと1文字で表示されます。
ペイン分割がネイティブでできる
| Terminal.app | Ghostty | |
|---|---|---|
| タブ | ✓ | ✓ |
| ペイン分割 | ✗ | ✓(ネイティブ) |
| Quick Terminal | ✗ | ✓ |
これが個人的に一番嬉しいポイント。tmuxなしでペイン分割できます。しかもテキスト描画じゃなくてネイティブUIなので見た目も操作感も自然。
Quick Terminalも便利そうで、グローバルショートカット一発でメニューバー下からターミナルがシュッと出てきます。いわゆるQuake風ターミナルってやつですね。
keybind = global:cmd+backquote=toggle_quick_terminalこんな感じで設定できます。
macOSならではの機能も
純正ターミナルにはない機能がいくつかあります。
- Proxy Icon: タイトルバーのアイコンでファイルパス操作できる
- Quick Look: 3本指タップで定義検索
- Secure Keyboard Entry: パスワード入力を自動検出して保護(右上に鍵アイコン出る)
- Undo/Redo: 間違えて閉じたタブを
Cmd+Zで復活できる
Undo/Redoは地味に嬉しいですね。
Shell Integrationが賢い
bash、zsh、fish、elvishに対応したshell integrationを自動で入れてくれます。
これで何ができるかというと:
- 新規ターミナルが前のターミナルと同じディレクトリで開く
Cmd + トリプルクリックでコマンド出力を選択- プロンプト間をジャンプ
Option+クリックでカーソル移動
あとSSH接続時のterminfo問題を解決する機能もあって、リモートサーバーでも快適に使えるみたいです。
設定はテキストファイル
| Terminal.app | Ghostty | |
|---|---|---|
| 設定方法 | GUI | テキストファイル |
| 設定場所 | システム環境設定 | ~/.config/ghostty/config |
設定はkey = value形式のシンプルなテキストファイルです。
theme = Catppuccin Frappefont-family = JetBrains MonodotfilesでGit管理できるのは嬉しい。設定変更はCmd+Shift+,でホットリロードできます。
まとめて比較
| Terminal.app | Ghostty | |
|---|---|---|
| レンダリング | CPU | GPU(Metal) |
| リガチャ | ✗ | ✓ |
| Nerd Fonts | 手動 | ビルトイン |
| ペイン分割 | ✗ | ✓ |
| Quick Terminal | ✗ | ✓ |
| 画像表示 | ✗ | ✓ |
| 設定管理 | GUI | テキストファイル |
| テーマ | 限定的 | 数百プリセット |
| Undo/Redo | ✗ | ✓ |