
ターミナルって開発者にとって一番長く触れるツールやと思う。だからこそ、ちょっとした引っかかりが積み重なってストレスになるんよね。iTerm2 は高機能やけど重い、Alacritty は速いけど機能が少ない、Warp は AI 搭載で面白いけどネイティブ感がない。どれも一長一短で「これや」っていうのがなかった
そんな中で出会ったのが Ghostty。HashiCorp の共同創業者である Mitchell Hashimoto が個人プロジェクトとして開発したターミナルエミュレータで、2024 年末にバージョン 1.0 がリリースされた。触ってみたら、もう他のターミナルに戻れなくなってしまった
自分の設定
ワイが実際に使っている設定を載せておく
この設定で、透過感のある美しいターミナルが完成する。テーマは tokyonight を使っていて、ダークな背景に程よい透過とぼかしがかかって、作業していて気持ちいい
Ghostty とは何か
Ghostty は、クロスプラットフォーム対応の GPU アクセラレーションターミナルエミュレータ。macOS と Linux で動作して、コアエンジンは Zig 言語で書かれている
Mitchell Hashimoto は 2022 年に Zig 言語の学習とグラフィックスプログラミングの経験を積むためにこのプロジェクトを始めた。当初はリリース予定がなかったものの、開発を進める中で既存のターミナルエミュレータの問題点に気づいて、革新の余地があると感じて公開を決めたらしい
なぜ Ghostty を選ぶのか
Ghostty が他のターミナルエミュレータと一線を画している理由は、3 つの柱がしっかりしているところ
圧倒的なネイティブ感
macOS 版は Swift と AppKit で書かれていて、Linux 版は Zig で GTK4 API を使っている。つまり、プラットフォーム固有の UI コンポーネントをそのまま使っているんよね
macOS では Quick Look、プロキシアイコン、セキュアキーボード入力、入力メソッド(絵文字キーボードや音声入力)など、ネイティブアプリでしか使えない機能がフルに使える。タブやスプリットも OS のネイティブコンポーネントを使っているから、操作感が macOS のアプリそのもの
Electron ベースのターミナルとは根本的に違う。ネイティブ感というのは説明しにくいけど、使えばすぐにわかる
GPU アクセラレーションによる高速レンダリング
macOS では Metal、Linux では OpenGL を使った GPU アクセラレーションを採用している。実際のベンチマークでは、Terminal.app で htop を 10 リフレッシュ/秒で動かすと、Terminal.app 自体が htop より多くの CPU を使ってしまう。Ghostty ではそれが逆転して、htop のほうが CPU を使う。つまり、ターミナル自体がボトルネックにならない
体感でも、大量のログを流したときやビルドログを見ているときの滑らかさが全然違う
豊富な機能と拡張性
- 数百の組み込みテーマを搭載
- ダークモード・ライトモードの自動切り替え
- リガチャ対応
- Kitty グラフィックスプロトコル対応
- ハイパーリンク対応
- カスタムシェーダーサポート
- Grapheme クラスタリング(絵文字やアラビア文字の正しいレンダリング)
xterm のエスケープシーケンスを、xterm 自身を除けば最も多くサポートしているターミナルエミュレータらしい
インストール方法
macOS では Homebrew でサクッと入る
Linux では各ディストリビューション向けのパッケージが用意されている。Arch Linux なら pacman、Fedora なら dnf で入れられる
公式サイトからプリビルドバイナリをダウンロードすることもできるし、ソースからビルドすることも可能。Zig で書かれているから、ビルド環境さえ整えれば自分でビルドするのも難しくない
設定ファイルの基本
Ghostty は「ゼロコンフィギュレーション」の哲学を持っていて、設定ファイルがなくてもデフォルトでいい感じに動く。やけど、カスタマイズしたくなるのが開発者の性やろ
設定ファイルは以下の場所に置く
| プラットフォーム | パス |
|---|---|
| 共通 | ~/.config/ghostty/config |
| macOS | ~/Library/Application Support/com.mitchellh.ghostty/config |
両方のファイルが存在する場合は、後者が前者の設定を上書きする。macOS で設定ファイルを開くには、メニューから Ghostty > Settings... を選ぶか、Cmd + , を押せば OK
設定ファイルの構文はめちゃくちゃシンプル
キーと値を = で繋ぐだけ。引用符はあってもなくてもいい。空行やコメント行は無視される。設定を変更したら Cmd + Shift + ,(macOS)か Ctrl + Shift + ,(Linux)で即座にリロードできる
便利なコマンド
設定をいじる前に、使えるコマンドを知っておくと便利
特にテーマ一覧は圧巻で、数百のテーマが組み込まれている。自分の好みを探すのが楽しくなるレベル
フォント設定
ターミナルでフォントは超重要。Ghostty では細かくフォントをカスタマイズできる
複数のフォントをフォールバックとして指定することもできる。日本語フォントを使いたいときに便利
同じキーを複数回書くと、フォールバックチェーンとして扱われる。最初のフォントで表示できない文字は、次のフォントで表示される仕組み
テーマと色設定
組み込みテーマを使うのが一番簡単
ダークモードとライトモードで別のテーマを使いたいときはこうする
OS のダークモード設定に連動して自動で切り替わる。これがネイティブ対応の強み
個別に色をカスタマイズすることも可能
透過・ぼかし効果
macOS では背景の透過やぼかし効果を設定できる。これがめっちゃ気持ちいい
透過を設定すると、後ろのウィンドウがうっすら見える。ぼかしを加えると、すりガラスのような効果になる
スプリットを使っているときに、非アクティブなペインを暗くすることもできる
どこにフォーカスがあるか一目でわかるから、複数ペインで作業するときに便利
ウィンドウ設定
ウィンドウの見た目や挙動もカスタマイズできる
macOS 固有の設定
macOS ではプラットフォーム固有の設定がたくさんある
macos-titlebar-style = tabs にすると、タイトルバーとタブバーが一体化してスッキリした見た目になる。スクリーンの縦幅を少しでも稼ぎたいときに最高
Quick Terminal 機能
Ghostty には Quick Terminal という機能がある。これはメニューバーの下からスライドして表示されるターミナルで、iTerm2 の Hotkey Window みたいなもの
設定でグローバルショートカットを割り当てると、どのアプリを使っていてもサッとターミナルを呼び出せる。ちょっとしたコマンドを実行したいときにめちゃくちゃ便利
シェル統合機能
Ghostty のシェル統合機能は、ターミナル体験を大きく向上させる。対応しているシェルは以下の 4 つ
- bash
- zsh
- fish
- elvish
シェル統合が有効になると、こんな機能が使えるようになる
- 新しいタブやスプリットが、前のディレクトリを引き継ぐ
- プロンプト位置で終了確認をスキップ
Ctrl + トリプルクリックでコマンド出力全体を選択- プロンプト間をジャンプするキーバインド
Alt + クリックでプロンプト位置にカーソル移動- 複雑なプロンプトが正しくリサイズされる
デフォルトで自動的にシェル統合スクリプトが注入されるから、特に設定は不要。ただし、macOS に付属の /bin/bash は古いバージョンなので自動注入に対応していない。Homebrew で新しい bash を入れる必要がある
明示的に設定したい場合はこう
キーバインド設定
Ghostty のキーバインド設定はかなり柔軟
既存のキーバインドを無効にすることもできる
今後の展望
Ghostty は 2024 年末に 1.0 がリリースされたばかりで、まだまだ進化の途中。Mitchell Hashimoto は 2025 年内に libghostty という独立したライブラリをリリースする予定らしい
libghostty が安定すれば、他のプロジェクトが Ghostty のターミナルエンジンを使って独自のターミナルエミュレータを作れるようになる。Hashimoto 自身は、libghostty が Ghostty プロジェクトで最も有望な部分だと考えているみたい
また、最近 Ghostty は非営利構造に移行して、Hack Club の財政支援を受けることになった。これでプロジェクトの持続可能性と、コミュニティ重視の開発が保証される
まとめ
Ghostty は、速度・機能・ネイティブ UI という 3 つの要素を妥協なく追求したターミナルエミュレータ。HashiCorp の創業者が本気で作っただけあって、完成度がめちゃくちゃ高い
実際に使ってみると、今まで使っていたターミナルの不満点が明確になる。GPU アクセラレーションによる滑らかなスクロール、ネイティブ UI による違和感のない操作感、シェル統合による作業効率の向上。どれも「あって当たり前」と思えるレベルで完成している
まだ 1.0 がリリースされたばかりやけど、すでにメインで使えるクオリティ。macOS か Linux を使っているなら、一度試してみる価値はある。戻れなくなっても責任は取らんけど