Ghostty - 爆速で美しい、次世代ターミナル

要約
Ghostty は Mitchell Hashimoto が Zig で開発した GPU アクセラレーション対応のターミナルエミュレータ。速度・機能・ネイティブ UI の 3 つを両立し、macOS では Metal、Linux では GTK4 を採用。シェル統合で作業効率が劇的
意見はこのエリアに表示されます
アイキャッチ画像

ターミナルって開発者にとって一番長く触れるツールやと思う。だからこそ、ちょっとした引っかかりが積み重なってストレスになるんよね。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 を使っているなら、一度試してみる価値はある。戻れなくなっても責任は取らんけど

参考リンク

Explore More
関連記事はありません。