最近サーフィン中に新しいターミナルプロジェクトを見つけて、試してみたらとても良かったので、記事を書いておすすめします:
特徴#
下の画像は開発者のブログからのものです:
開発者の元のブログ記事で、各プロジェクトの説明を確認できます。
簡単に言うと、著者は現在の主流のターミナルプログラムが速度、機能の豊富さ、プラットフォームネイティブの GUI の 3 つの面で不必要な妥協をしていると考えています。この 3 つは同時に達成できるはずです。
既存のターミナルエミュレーターは、速度、機能、プラットフォームネイティブの GUI の間で不必要な選択を強いていると感じました。
Ghostty というプロジェクトは、著者が提示した答えです。
-
高速
Ghostty は公認の非常に速い Alacritty と同等の性能を持ち、第一グループに位置しています。 -
機能が豊富
ほぼすべての現代のターミナル規格をサポートし、分割画面や複数タブなどの機能を内蔵しており、さらに多くの設定項目を含んでいます。 -
プラットフォームネイティブの GUI 体験
他の主流ターミナルプログラムと比較して、Ghostty はよりネイティブな方法でアプリケーションを作成しています。異なるプラットフォーム間で大部分のコアコードを共有していますが、各プラットフォームにはプラットフォームネイティブの GUI ツールキットを使用して開発しています。具体的には、MacOS では Swift を使用し、Linux では GTK を使用しています。これにより、Ghostty はプラットフォームネイティブの機能をより良く活用できるようになり、Dock の統合、入力メソッドのサポート、デスクトップ通知、さらには macOS のセキュア入力モードなどが実現できます。
私の経験#
MacOS を使用し始めて以来、速くてカスタマイズ性の高いターミナルを探し続けています。
長い間、皆が推奨する Iterm2 を使用しており、その体験には基本的に満足していますが、主な問題は遅すぎることです。私の個人的な実体験では、Iterm2 の性能は Vscode の内蔵ターミナルよりも劣っており、大きなテキストを cat する際や速くタイプする際に明らかな遅延を感じます。
そのため、切り替えを検討する際の第一選択は性能で知られる Alacritty でした:
全体的な体験は非常に満足のいくものでしたが、設定ミスなのかプログラムのバグなのか、日常使用中に不快な点がいくつかありました。
MacOS の透明なタイトルサポートが不十分#
Mac で比較的主流の外観は、交通灯ボタンとウィンドウを融合させることで、ターミナルではタイトルバーとテキストの背景が同じ色になります。これは Iterm2 では非常に良好にサポートされていますが、Alacritty ではそうではありません。
Alacritty はタイトルバーを透明に設定することをサポートしており、私が上で説明した外観を実現できますが、奇妙な点は、透明なタイトルバーの実装が無題のウィンドウに 3 つのボタンを強制的に取り付けたように見えることです。これは意味します:
- 明らかにタイトルバーに属する部分が内容を表示でき、交通灯に遮られる
- タイトルバーにマウスをホバーすると、マウスカーソルは依然としてテキストスタイルのまま
- タイトルバーをドラッグしてウィンドウを移動させると、マウスイベントがターミナルに透過してテキストを選択し、ちらつきを引き起こす
もし説明を見てもイメージが湧かない場合は、以下の GIF を確認できます:
仕方がないので、タイトルをボタンなしに設定し、MacOS の cmd + ctrl + マウス左クリックでウィンドウの任意の位置をドラッグ
する方法でこれらの問題を回避しました。
ウィンドウのサイズ調整時の揺れとちらつき#
Alacritty はサイズを調整する際に文字が絶えず揺れ、既存のテキストが徐々にウィンドウの外に移動し、まるで私が行を変えているかのように見え、偶発的な白いちらつきが伴います。
以下の GIF を確認できます(実際には一度ちらつきが発生しましたが、録画には収められませんでした):
偶発的な起動時のフリーズ#
これは記事執筆中には再現できませんでしたが、発生する回数は決して少なくなく、cmd + Q
でプログラムを終了した後にウィンドウをすぐに再オープンすることによる競合が原因だと推測しています。
Ghostty の体験と設定プロセス#
上記の問題のため、Ghostty を見たときにすぐに体験したいという気持ちが湧きました。
簡単に体験した後、Alacritty に似たバグは見つからず、速度に関しても Alacritty との違いは感じませんでした。著者が1.0 のプレビューで言ったように:
簡単に言えば、Ghostty 1.0 は macOS と Linux の現在のターミナルエミュレーターの最良の代替品を目指しています。
少なくとも MacOS に関しては、性能が Alacritty に劣らないネイティブアプリケーションは確かに「現在のターミナルエミュレーターの最良の代替品」と言えるでしょう。
性能を除いても、Ghostty は Alacritty よりも MacOS のサポートを重視していることがわかります。MacOS のためにネイティブの Metal API を使ってレンダリングを行ったり、Swift を使って MacOS の GUI を個別に作成したりしていることから、このプロジェクトが MacOS を第一プラットフォームとして開発していることが明らかです。
そのため、最終的に切り替えることに決めました。Ghostty の公式ドキュメントは非常に詳細に書かれており、公式ドキュメントを参照することで、既存の Alacritty の外観を Ghostty に簡単に移行できます。
以下は私の設定成果の画像と設定項目の参考です。
成果画像#
左が Alacritty、右が Ghostty で、設定後は主体部分にほとんど違いが見られません。
設定項目#
font-family = "ZedMono NFM Extd"
font-style-bold = "Medium"
font-style-bold-italic = "Medium Italic"
font-size = 13.4
font-thicken = true
grapheme-width-method = "unicode"
adjust-cell-width = -5%
palette = 0=#212733
palette = 1=#f08778
palette = 2=#53bf97
palette = 3=#fdcc60
palette = 4=#60b8d6
palette = 5=#ec7171
palette = 6=#98e6ca
palette = 7=#fafafa
palette = 8=#686868
palette = 9=#f58c7d
palette = 10=#58c49c
palette = 11=#ffd165
palette = 12=#65bddb
palette = 13=#f17676
palette = 14=#9debcf
palette = 15=#ffffff
background = #1f2430
foreground = #cbccc6
selection-invert-fg-bg = true
cursor-style = "bar"
cursor-style-blink = true
scrollback-limit = 100000
window-padding-x = 20
window-padding-y = 2,10
window-save-state = "always"