Ghostty 1.3.0

2026 年 3 月 9 日にリリースされた Ghostty 1.3.0 のリリースノート。

Ghostty 1.3.0 は、多くの要望が高かった機能を含む重要なリリースです。スクロールバック検索、ネイティブスクロールバー、shell プロンプト内でのクリックによるカーソル移動など。あらゆるプラットフォームで数百の改善・バグ修正・最適化も含まれています。

このリリースは、2,858 コミットにわたる 180 人のコントリビューターによる6 か月の作業です。このリリースを可能にする手助けをした、すべてのコントリビューター、メンテナー、コミュニティモデレーター、翻訳者、パッケージャー、そしてユーザーに感謝します。

これらのリリースノートは全文の完全なチェンジログも含め、人間の Ghostty メンテナーが手作業で、押しつめに愛情を込めて書いたものです。合わせて 16 時間以上かけて書かれましたので、ぜひご覧ください。🥰

Ghostty is non-profit! Please support development.Almost all donations go directly to paying contributors. Learn more about how you can help.
Learn more →

セキュリティ

  • CVE-2026-26982。貼り付けやドラッグ&ドロップされたテキストに含まれる制御文字(0x03(Ctrl+C)など)が、一部の shell 環境で任意のコマンド実行に使える問題を修正しました。トリガーにはユーザー操作(コピペまたはドラッグ&ドロップ)が必要です。

ハイライト

PR:#9585 #9602 #9687 #9702 #9709 #9756

macOS では cmd+f、GTK では ctrl+shift+f でターミナルのスクロールバックを検索できるようになりました。検索はビューポート内のすべての一致をハイライトし、矢印ボタンや cmd+g / shift+cmd+g(macOS)、enter / shift+enter(GTK)で移動できます。これらのキーバインドはもちろん設定可能です。

macOS では、検索バーが邪魔に思えたら、ターミナルの 4 つの隅のどこへでもドラッグできます。検索は標準的な macOS の規約とも統合されています:メニューバー、Find Next / Find Previous ショートカット、システムの検索ペーストボードが期待どおりに機能します。

GTK でも、検索バーはいずれかの隅に現れ、どの隅にもドラッグできます。

検索は、ターミナル I/O と並行に動作する専用の検索スレッドで実装されています。スレッドは小さなタイムスライスでターミナルロックを掴み、I/O スループットやレンダリングへの影響を最小化しつつ、検索を前進させます。検索を使わない、または検索バーを閉じると、検索スレッドは終了しリソースを消費しません。

スクロールバー

PR:#9225 #9232

Ghostty にネイティブスクロールバーが付きました。新しい scrollbar 設定で、スクロールバーを可視化するかを制御します。system(既定)は OS に委ねます。

macOS と GTK の両方のスクロールバーはネイティブウィジェットとスタイルを使い、ノブのドラッグ、トラックのクリック、スクロールジェスチャーなど、期待される標準的な操作をすべてサポートします。

両プラットフォームで、余計な隙間や溝をリザーブせざるを得ないのは避けるため、最低限のオーバーレイ形式のスクロールバーを使います。スクロールバーは最低限のスタイルでターミナル内容の上に重ねて表示し、選択に影響を与えません。

Shell プロンプト内でクリックしてカーソルを移動

PR:#10455

Ghostty は、OSC 133 セマンティックプロンプト仕様 の click-events と cl=line 拡張をサポートするようになりました。アクティブな shell プロンプト内でマウスをクリックしてカーソルを移動できます。テキストフィールドのように。

この機能は Fish(4.1+)や Nushell(0.111+)でネイティブにサポートされています。他の shell では、Ghostty が注入するシェル統合次第です。対応 shell を使っていれば、魔法のように動作します。

さらに、Ghostty はより完全で正確な OSC 133 実装を備えるようになり、長年サポートしているプロンプトへのジャンプやコマンド出力コピー機能の挙動がより正確になります。アクティブなプロンプト中のリサイズ挙動も向上します。

おもしろい詳細として、OSC 133 領域を示す非常にクールなデバッグオーバーレイも追加しました。これは、これをよりよくサポートしようとする shell 開発者にとって大きな助けとなりました。誰でもターミナルインスペクターで有効化できます。

コマンド完了通知

PR:#8992 #10934

Ghostty は、長時間実行されるコマンドが完了したときに通知するようになりました。ビルドやテストスイートを回して別のウィンドウへ切り替えたとき、完了したら通知が欲しい、といった場合に便利です。

この機能を制御する 3 つの新しい設定オプション:

notify-on-command-finish = unfocused
notify-on-command-finish-action = no-bell,notify
notify-on-command-finish-after = 30s

notify-on-command-finish は通知を送るタイミングを制御します:never(既定)、unfocused(ターミナルにフォーカスがないときのみ)、または always。notify-on-command-finish-action は通知方法を制御し、bell(既定)と notify(デスクトップ通知)に対応し、組み合わせや否定(no-bell,notify など)が可能です。notify-on-command-finish-after は通知を送る前にコマンドが実行されていなければならない最短時間を設定します。既定は 5 秒です。

この機能は OSC 133 エスケープシーケンスを使ってコマンドの実行を追跡するため、シェル統合が有効であること、または Fish や Nushell のように OSC 133 をネイティブに送る shell が必要です。

キーテーブル・チェーンキーバインド・catch_all

PR:#9984 #9961 #9977 #10098

Ghostty 1.3 は、キーバインドの一通りの新機能を追加します。パワーユーザー向け:キーテーブル、チェーンキーバインド、そして catch_all 特殊キーです。

キーテーブルは、tmux に似たモーダルなキーバインドワークフローを可能にします。キーテーブルは名前付きのキーバインドの集合で、必要に応じて有効化・無効化できます。テーブルがアクティブな間、キーの押下はそのテーブル内で検索されるため、まったく別のキーバインドモードを作れます。

テーブルは既存の keybind 設定上の <name>/<binding> 構文で定義します。例:

keybind = resize/arrow_up=resize_split:up,10
keybind = resize/arrow_down=resize_split:down,10
keybind = resize/arrow_left=resize_split:left,10
keybind = resize/arrow_right=resize_split:right,10
keybind = resize/escape=deactivate_key_table
keybind = resize/catch_all=ignore

keybind = ctrl+a=activate_key_table:resize

この例では、ctrl+a を押すと resize テーブルがアクティブになります。テーブルがアクティブな間、矢印キーはスプリットをリサイズし、それ以外のキーは無視されます。escape を押すとテーブルが解除され、通常のキーバインド挙動に戻ります。

macOS と GTK の両方で、キーテーブルがアクティブになったことを示す専用 UI インジケータが表示されます。既存のキーシーケンスインジケータと同様です。

チェーンキーバインドは、複数のアクションを単一のキーへバインドできます。chain キーを使うと、アクションは最後に定義されたバインドへ追加されます:

keybind = ctrl+shift+f=toggle_fullscreen
keybind = chain=toggle_window_decorations

ctrl+shift+f を押すと両方のアクションがトリガーされます。チェーンはキーテーブルやキーシーケンスの内部でも機能します。

catch_all は、明示的にバインドされていない任意のキーに一致する新しい特殊キーです。修飾キーとの組み合わせ(ctrl+catch_all=ignore)やキーシーケンス内での使用(ctrl+a>catch_all=end_key_sequence)も可能で、ターミナルへ意図しない入力を漏らさない自己完結型のモーダルキーバインドセットを容易に構築できます。

実行ディレクトリの継承の細やかな制御

PR:#9158

新しい設定 tab-inherit-working-directory と split-inherit-working-directory で、新しいタブ、ウィンドウ、スプリットペインそれぞれについて実行ディレクトリの継承を独立に制御できます。これは最も要望の多かった設定機能の一つです。

window-inherit-working-directory = false
tab-inherit-working-directory = true
split-inherit-working-directory = true

長期的には、条件分岐の設定をより一般にサポートする計画ですが、この特定のユースケースは要望が強すぎたため、より早く提供するために当面これらの特定オプションを追加しました。

リッチなクリップボードコピー

PR:#9418 #9431

クリップボードコピーは、複数のコンテンツタイプ(text/plain と text/html の両方)をクリップボードへ設定するようになり、整形付きのリッチテキスト貼り付けを可能にします。リッチテキストエディタへ貼り付けると、色や他のスタイルが保持された整形済みテキストが得られます。

copy_to_clipboard バインドは、コピーするフォーマットを指定するパラメータをサポートするようになりました。mixed・plain・HTML フォーマットに加え、このバインドは vt をサポートし、ターミナルエスケープシーケンス付きのテキストをコピーして、別のターミナルへ貼り付けるときにフォーマットを保持します。

Unicode と多言語テキストのレンダリング

PR:#8757 #10895 #9680 #10465 #9883 #10179 #10295 #10332

デーヴァナーガリー、ベンガル語、チベット語、ジャワ語、タイ・タム語、チャクマ語などの Brahmic スクリプトが正しくレンダリングされるようになりました。これらの文字はリガチャの形成、結合文字の配置、文字の結合にフォントシェーピングを使用します。これらはすべて大幅に改善されました。

Unicode 17 への更新は、書記素クラスタリング仕様への完全準拠を伴い、複数コードポイントの文字が選択、カーソル移動、セル幅の計算において正しく単一の単位として扱われます。

最初の行は以前のバージョン、2 行目は 1.3.0 が同じテキストをレンダリングしたものです。リガチャ形成の改善、結合文字の配置、書記素クラスタリングの向上に注目してください。最初の列では、選択ハイライトが今や文字全体を単一の単位として正しく覆っています。

パフォーマンス改善

PR:#9662 #9645

asciinema のおかげで、Ghostty のパフォーマンスを分析し最適化するための公開ターミナル録画データ約 4GB を受け取りました。このデータは合成ワークロードではなく、実際のターミナル使用に基づくものであり、これが大きな意義です。

このデータを使い、I/O 処理を大幅に改善し、Ghostty がデータセット内のすべてを再生する時間を数分から数十秒に短縮しました(asciinema がすべての一時停止を無視するよう設定されていることは言うまでもありません)。これらの改善は、Alacritty の vtebench などの合成ベンチマークでも見えます。

I/O の更新に加え、レンダラーを再設計し、レンダラーがターミナルロックを保持する時間を 2〜5 倍 削減しました。そして多くのフレームでは、改良された dirty/damage 追跡のおかげで、レンダラーはロックを一切保持しません。これは Metal と OpenGL の両方に適用されます。

安定性の改善

PR:#10337 #10401 #11089 #11109 #9594

Ghostty 1.3 は、安定性と堅牢性に多大な投資をしてリリースします。

このリリースは、以前の Ghostty リリースで Claude Code がしばしば引き起こしていた大きなメモリリークを修正します。このリークは Ghostty 1.0 から存在していましたが、Claude Code が大量のユーザーベースの利用を始め、それを大規模に引き起こす完璧な条件を示すようになるまで、発生は稀でした。リークの詳細と修正については、これに特化したブログ投稿 を参照してください。

また、このリリースでは Ghostty のターミナルエスケープシーケンスパーサー(#11089 )とフル VT ストリームプロセッサ(#11109 )に対する広範な AFL++ ファジングテストを実施します。このプロセスで約 10 のクラッシュと潜在的なメモリ安全性の問題が発見され、修正されました。これらが現実の問題を引き起こしたことは知られていませんが、十分にありえます!長期的には、Ghostty を継続的にファジングするインフラを作りたいと考えています。

新しいテストツール Tripwire (#10401 )を構築しました。try の各箇所へ失敗を注入し、errdefer のクリーンアップパスを体系的にテストします。これにより、メモリリーク、状態の破損、フォントサブシステムのグリフキャッシュの破損など、複数のバグが発見されました。これはエラー回復パス内のバグのみを対象とするため、Ghostty が予期しないエラー(OOM、GPU の問題など)に直面したときの安定性を高めます。

メモリ面では、いくつかの場所で最適化しました。オルタナートスクリーンのメモリは必要時に割り当てるようになり、それを使わないセッションでターミナルあたり数 MB を節約します(#9594 )。それに加え、すべてのサブシステムにはいくつかの小規模な改善があります。

AppleScript(macOS)

PR:#11208 #11251

Ghostty は macOS 上で組み込みの AppleScript サポートを備えるようになり、強力な自動化と統合が可能になりました。AppleScript を使うと、ウィンドウ、タブ、スプリット、個々のターミナルをインスペクタしたり制御したりできます。単純な作成やナビゲーションアクションに加え、テキスト、キー、マウス入力も送れます。

スクリプティングで可能なワークフローの例には、ターミナルレイアウトの自動化、コマンド放送、実行ディレクトリによるターミナルへのジャンプなどがあります。

最前面の Ghostty ウィンドウで現在フォーカスされているターミナルを対象にする短い例:

tell application "Ghostty"
    set term to focused terminal of selected tab of front window
    input text "pwd\n" to term
end tell

AppleScript は既定で有効であり、macOS 自動化権限(TCC)によって保護されています。他のアプリが Ghostty を制御する前に macOS がプロンプトを表示します。AppleScript サポートがまったく不要であれば、macos-applescript = false を設定してください。

Important

これは 1.3 でのプレビュー機能 として扱います。AppleScript 機能は他の機能ほどリリース前ビルドでのテスト時間が得られず、ユーザーのフィードバックに基づき 1.4 での破壊的 API 変更と新機能の追加を見込んでいます。

スプリットのドラッグ&ドロップ(macOS)

PR:#10090

macOS では、スプリットをドラッグして並べ替えられるようになりました。スプリットの上に近い位置にカーソルを合わせると、スプリットを他の位置へドラッグするためのグラブハンドルが現れます。ハンドルを掴み、スプリットを望む位置へドロップしてください。ターミナルの内容、実行ディレクトリ、実行中のプロセスはすべて伴って移動します。

スプリットをウィンドウから取り出したり、新しいタブへ移動したりすることもできます。これらはすべて undo/redo システムと連携し、誤って落とした場合は簡単に元へ戻せます。

スプリットを閉じて再作成せずにターミナルレイアウトを並べ替えるマウス駆動のアプローチです。この実装は、スプリットを新しいタブやウィンドウへドラッグするような将来の強化への地盤を築きます。

この機能の GTK 実装は将来のリリースで計画されています。

洗練されたアップデート通知(macOS)

PR:#9116

macOS でのアップデート通知は目立ちにくくなりました。ターミナルウィンドウが開いている場合、更新通知は割り込むようなポップアップウィンドウの代わりに、タイトルバーまたはウィンドウの下隅に小さなピルとして現れます。ピル自体は右クリックで消すことでさらに隠せます。

コマンドパレットの「Update and Restart」(#9131 )から完全な更新と再起動を直接トリガーすることもでき、更新プロセス全体をキーボード駆動にできます。

システム要件

Ghostty 1.2 からシステム要件の変更はありません。

macOS: Ghostty 1.3 が必要とする macOS の最小バージョンは変更ありません(macOS 13 Ventura)。

GTK: Ghostty 1.3 は GTK 4.14 と libadwaita 1.5 を必要とします。これは当方の GTK/Adwaita バージョンポリシー と一致します。GTK や Adwaita の古いバージョンのシステムでは、この要件を回避するために Ghostty の旧バージョンか、コミュニティがメンテナンスする snap や flatpak パッケージを使用できます。

Important

これは macOS 13 をサポートする最後のバージョンです。 Ghostty 1.4 から(そして 1.4 以前の tip リリースから)、macOS の最低要件は macOS 14 になります。Apple は 2025 年秋に macOS 13 向けのセキュリティサポートを終了したため、この変更は Apple の全般的なサポートと一貫しています。

破壊的変更

1.3.0 で次の既定のふるまいが変更されました:

  • クリップボードコピーの既定の形式が text から mixed に変更されました。mixed 形式はクリップボードへ plain テキストと HTML の両方を設定します。これで問題が起こる場合、copy_to_clipboard を特定の形式で再バインドする必要があります。#9418
  • GTK:FreeType は full ヒンティング代わりに light ヒンティングが既定になりました。これは大多数の GTK アプリのふるまいと一致します。旧いふるまいは freetype-load-flags 設定で復元できます。#9253

完全なチェンジログ

  • スクロールバック検索がターミナルのスクロールバックを検索できるように。macOS では cmd+f、GTK では ctrl+shift+f で起動し、多数の新しいバインド可能なアクションも付属します。#189
  • ネイティブスクロールバーで、スクロールバックのナビゲートが可能になりました。新しい scrollbar 設定で制御できます。#111
  • 実行ディレクトリの継承設定を、ウィンドウ、タブ、スプリットそれぞれ別に指定できるように。#1392
  • キーバインドが chain キーで複数のアクションを連結して実行できるようになりました。1 つのキーバインドが複数のアクションをトリガーします(例:全画面化とウィンドウ装飾の同時切替)。#9961
  • キーバインドがキーテーブルをサポート:有効化・無効化できる名前付きキーバインドの集合で、モーダルなキーバインドワークフローが可能です。テーブルはワンショットモード、全捕型のフォールスルー、スタッキング、キーシーケンスやチェーンアクションとの組み合わせに対応します。#9963
  • 新しい catch_all 特殊キーがキーバインドで、明示的にバインドされていない任意のキーに一致します。修飾キー(ctrl+catch_all=...)とトリガーシーケンス(ctrl+a>catch_all=...)をサポートします。#9977
  • クリップボードへコピーしたデータがリッチテキストをサポートし、copy_to_clipboard バインドアクションパラメータで設定できます。#9396
  • ウィンドウとタブのタイトルを、スプリットのタイトルとは個別に、メニューやコマンドパレット、新しいキーバインドアクションで設定できるように。#9879
  • コマンドパレットのセッション検索で、タイトルや実行ディレクトリの検索により、実行中の任意のターミナルへジャンプできます。タブの色インジケータ付き(macOS)。#9945
  • Kitty の click_events 拡張をサポートし、対応 shell ではプロンプトをクリックしてカーソルを移動できます。Fish 4.1+ や Nushell 0.111+ など。#10536
  • OSC133 cl=line をサポートし、bash と zsh でも上記のクリック可能なプロンプトを得られます。#10542
  • Ghostty の設定に .ghostty 拡張が使えるようになりました。#8689
  • Ghostty は、notify-on-command-finish 設定でコマンドが完了したときに通知を表示できるようになりました。遅いコマンド、非フォーカスのウィンドウなど、さまざまな条件でトリガーするよう設定できます。#8991
  • サーフェスを「readonly」とマーキングできるようになり、pty へ入力イベントを送らなくなり、終了の前に必ず警告を出します。新しいキーボードバインディングやコマンドパレットなどでトリガー可能。#8432
  • 新しい設定 key-remap で、Ghostty の範囲内でキーを別のキーへ再マッピングできます。例:key-remap = ctrl=super。#5160
  • 新しい設定 clipboard-codepoint-map で、クリップボードへのコピー(正確にはクリップボードへの書き込み)の際に一部のコードポイントを置換するマッピングを設定できます。これにより、プログラミング用記号やブランチを描く文字などのコピーが可能になります。#8383
  • 新しい設定 selection-word-chars で、ダブルクリック選択の語境界を決める文字を設定できます。#9335
  • 新しい設定 mouse-reporting = false で、すべての TUI マウスレポーティング機能を無効化できます。#8430
  • 新しい設定値 scroll-to-bottom = output で、任意の出力時にウィンドウを最下部へ自動スクロールします(既定オフ)。#9938
  • 新しい設定オプション split-preserve-zoom、顕在的に 1 つのオプション navigation(既定 false)から始まります。navigation が設定されると、スプリットナビゲート(goto_split)時、最大表示されたスプリットは最大表示のまま維持されます。#8458 #9089
  • 新しいバインドアクション goto_window:next と goto_window:previous、決定的にウィンドウ間をナビゲートします。#8387
  • 新しいバインドアクション toggle_mouse_reporting が、TUI へのマウスレポーティングを切り替えます。#9282
  • 新しい end_key_sequence バインドアクションで、アクティブなキーシーケンスを明示的に終了し、トリガーキー(ctrl+w>escape=end_key_sequence など)をエンコードせずに、以前のキーのみターミナルへフラッシュします。#10098
  • close_tab バインドアクションに新しいパラメータ right、それより右側のすべてのタブを閉じます。#9783
  • ペインが 1 つだけのとき、resize_split と toggle_split_zoom アクションが false を返すようになり、performable: キーバインドがキーをターミナルアプリケーションへ送れるようになりました。#10376
  • quick terminal は GHOSTTY_QUICK_TERMINAL 環境変数を設定します。あらゆる用途に使えます。たとえばカスタム shell プロンプト。#9673
  • cursor シェル統合機能が cursor-style-blink を尊重し、ブリンクが無効な場合は点滅しないバーブを使います(常に点滅するバーブではなく)。#10643
  • URL を右クリックすると完全な URL がハイライトされます。#9298
  • Unicode 17 へのアップグレード。#8757
  • +list-themes コマンドに、設定ファイルを書き出すキーバインドが付きました。#8930
  • -e で起動したコマンドは、端末タイトルを argv[0] に設定します。#9121
  • カスタムシェーダーに、カーソル形状、位置、前位置、変化後の時間、配色などの多数の新しい uniforms が追加され、より高度なシェーダーが可能になります。#9416 #9417
  • OSC7 URI 解析が MAC アドレスなどのエッジケースをより良く扱うように。#9193
  • 貼り付けテキスト内の危険な制御文字が空白で置換され、悪意ある貼り付けがユーザーを意図しないコマンドの実行へ誘導しなくなりました。xterm のふるまいと一致します。#10746
  • IME の確定前文字列が、反転色ではなくアンダーラインで描画され、複数プログラム間での可読性と一貫性が向上しました。#10368
  • 一部の低 DPI モニターでのフォントレンダリングを改善。#9432
  • フォントメトリクスでは、行の高さからセル高を切り上げではなく丸め算します。この変更は高 DPI と低 DPI ディスプレイの間で一貫した結果を与えるはずです。#9648
  • バランスの取れた上部と左側のパディングを切り離し、斜めリサイズ時のウィンドウの揺れを防ぎます。#9518
  • 多くの既定のキーバインドが他のキーボードレイアウトでも機能するよう更新。これは標準的な US レイアウトには影響しないはずです。#9469
  • 設定ファイル内の Unicode のバイト順マーク(BOM)文字を無視。#9490
  • キーパッドのバリエーションシーケンスが Unicode VS16 を尊重します。#9502
  • VS15/16 チェックは、絵文字の基底文字を正しく考慮します。#9679
  • 書記素の分割ポイントアルゴリズムが Unicode 仕様に完全に一致するよう更新。#9680
  • デーヴァナーガーなどの文字で、2 セルを占有すべき単一のクラスターへ結びついた広い書記素クラスターのレンダリングを修正。#10465
  • ハイパーリンクを検索する際のデータ競合による潜在的なクラッシュを修正。#9813
  • 選択とコピーの間のデータ競合による潜在的なクラッシュを修正。#9818
  • Kitty 画像のドラッグのような、配置リストの更新における競合状態で生じうるクラッシュを修正。Yazi などのアプリで画像を高速に切り替えるとトリガーされます。#10680
  • 独自のサイズのページでスクロールバックを剪定する際の大きなメモリリークを修正。非標準ページ(emoji やハイパーリンクの多いもの、Claude Code の出力など)が誤ってメモリプールへ返し、unmap されていませんでした。#10251
  • 挿入行または削除行(IL/DL)の VT 操作が特定のエッジケースで引き起こしうるレンダリングのアーティファクトを修正。#10290

ターミナル能力

  • vt:より完全で正確な OSC 133 の解析と実装。#10427
  • vt:ConEmu OSC9 が完全にパースされるように(サブコマンド 1〜12)。Ghostty GUI はその一部だけを実装しますが、libghostty はすべてをパースできます。#3125
  • vt:カラースキームイベントの報告が同期的に行われるように。#5922
  • vt:modify other keys state 2 が、macOS 上で option を alt としてエンコードしなくなりました。#9406
  • vt:shift+backspace が Kitty Keyboard Protocol に対して正しくエンコードされます。#9896
  • vt:CSI スクロールアップ(\e[nS)が、スクロールバックバッファからスクロールオフした行を消すのではなく保持するようにしました。これは他のターミナルエミュレーターのふるまいと一致します。これにより Fish shell の Ctrl-L(scrollback-push)で履歴が消える問題が修正されました。#9905
  • vt:リセット(RIS)がプログレスバーもリセットするように。#10168
  • vt:フォーカス移動クリックに対するマウスレポートを抑制し、スプリットフォーカスの変化がターミナルアプリへ意図しないマウス入力を送らないように。#11167
  • vt:Kitty の text sizing プロトコル(OSC 66)をパースします。GUI への実装はまだ。#10315
  • vt:iTerm2 の OSC 1337 拡張をパース(実装はせず)。#10417
  • vt:Kitty のクリップボードプロトコル(OSC 5522)をパース(実装はせず)。#10560
  • vt:tmux のコントロールモード解析を大幅に追加。GUI への接続はまだ。#9803 #9860
  • vt:Kitty Graphics で特殊に細工された大きな画像によるクラッシュを修正。#9579
  • vt:BEL (0x07) の連打によるクラッシュを修正。#9800
  • vt:Ghostty の terminfo が SGR dim の対応をアドバタイズするように。#11144

シェル統合

  • nu:SSH のシェル統合をサポート。#7877
  • fish:Ghostty の fish shell 補完に説明文を追加。#9531
  • zsh:zsh でコマンドを実行した際にウィンドウタイトルに文字通りの \n が現れる問題を、可視表現へ変換する代わりに制御文字を除去することで修正。#10341
  • bash:bash 4.4+ 向けのシェル統合が bash-preexec に依存しなくなり、より速くよりシンプルなフックのためネイティブの PS0 と PROMPT_COMMAND を使用するように。旧 Bash バージョン(macOS の 3.2 など)は引き続き bash-preexec を使用。#10609
  • elvish:実行ディレクトリの変更について常に報告し、タイトル報告機能と分離。#10533
  • sudo シェル統合機能が、あらゆる shell でより安定に。#9891
  • SSH キャッシュが、$TMPDIR と $XDG_STATE_HOME が異なるファイルシステムにある場合に失敗する問題を修正。#10364
  • cursor-style が手動で設定された場合、shell-integration-features が既定で no-cursor を含むように。#8681

macOS

  • macOS:スプリットの並べ替え、ターミナルの新しいタブやウィンドウへの移動などのために、すべてのターミナルの上端にドラッグハンドルが現れるように。#1525 #10090
  • macOS:新しい「Set Ghostty as Default Terminal App」オプションを追加し、Ghostty をディレクトリや shell スクリプトなどを開く既定のハンドラーとして簡単に設定できます。#10810
  • macOS:タブのダブルクリックで、タブタイトルのインライン編集が可能に。Enter で確定、Escape で取消。#10963
  • macOS:command-palette-entry 付きのカスタムコマンドパレットエントリ。GTK は 1.2.0 から対応済み。#7158
  • macOS:アップデート通知がポップアップダイアログではなく、ターミナルウィンドウ内の目立たないピルとして表示されるように。#9116
  • macOS:マウスボタン 8/9(進む/戻る)が端末内で正しくエンコードされるように。#10381 #2425
  • macOS:Apple Shortcuts から利用できる、特定のターミナルへフォーカスする新しい app intent。#8961
  • macOS:タブを右クリックしてタブの色を設定。#9784
  • macOS:background-blur が、macOS 26 のネイティブなリキッドグラスのぼかしを使う新しいオプションをサポート。#8801
  • macOS:bell-features = audio が macOS 上で機能するように。端末ベルイベント時に再生するカスタムオーディオファイルを指定できます。#11154
  • macOS:fullscreen 設定で、ネイティブ全画面に加えて非ネイティブ全画面での起動にも使用できるように。#9876
  • macOS:close_all_windows バインドアクションを実装。#9552
  • macOS:新しいキーボードバインディング toggle_background_opacity を追加。#9117
  • macOS:ターミナルのスクロールバックの最上部/最下部にスクロールするネイティブの Cmd+Home/Cmd+End ショートカットをサポート。#10003
  • macOS:スプリット区切りをダブルクリックしてスプリットを均等化。#9524
  • macOS:アクティブなすべての端末ベルがクリアされたとき、通知バッジもクリアされるように。#8487
  • macOS:system ベル設定(既定オフ)がシステムビープを使用するように。#9339
  • macOS:聴写アイコンがより正確な場所に現れるように。#8493
  • macOS:window-width と window-height が、タブバーなどのウィンドウクロームを正しく考慮するように。#2660
  • macOS:復元された非ネイティブ全画面ウィンドウが正しく復元されるように。#8435
  • macOS:quick terminal の状態が正しく復元されるように。#9588
  • macOS:toggle_quick_terminal が隠されているウィンドウを可視化しなくなりました。#8414
  • macOS:危険な貼り付け確認のテキストフィールドが編集不可能になりました。#9400
  • macOS:閉じる確認シートが関連するウィンドウへ付着するように。#9509
  • macOS:Metal がカーソルセル用の前景色をリニア化して読み込むことで、カーソルテキストが正しく表示されるように。#9695
  • macOS:特定のシステムで「Undo New Tab」がクラッシュする問題を修正。#9512
  • macOS:focus-follows-mouse が設定されているときに、マウスクリックでコマンドパレットが閉じない問題を修正。#9533
  • macOS:quick-terminal-size が一貫して機能しなかった問題を修正。#9837
  • macOS:カスタムアプリアイコンが NSDockTilePlugIn を使ってより確実に更新されるように、旧 macOS バージョンでの角丸問題を修正。#9983
  • macOS:メニュー相当物を持つキーボードショートカット(Cmd+V、Cmd+N、Cmd+T など)を使うと、メニューバーが短く点滅するように。これは標準的な macOS のふるまいと一致します。#10122
  • macOS:セル幅がアドバンスより狭い場合にもサブピクセル水平アラインメントを適用し、より滑らかな描画を実現。#9646
  • macOS:フォントシェーピングが正しい配置のためにグリフ位置を使用するようにし、グリフが論理テキスト順序から視覚的に並べ替えられる文字体系的なレンダリングを修正(例:タイ・タム語の母音が付随する子音より前面に現れる問題)。#9883
  • macOS:window-width/window-height が可視の画面サイズに正しくクランプされ、window-position と正しく連携するように。#9975
  • macOS:Escape でタブ概要を正しく隠すように。#9971
  • macOS:~ を含むファイルパス(~/Documents/file.txt など)の Cmd-クリックを、開く前にチルダをユーザーのホームディレクトリへ展開することで修正。#10863
  • macOS:ターミナルウィンドウのテクスチャが GPU の最大許容サイズを超えた場合のクラッシュを、テクスチャ寸法をデバイス上限へクランプすることで修正。#9972
  • macOS:Secure Keyboard Input オーバーレイアニメーションを最適化し、CPU 使用量を約 35% 削減するとともに、以前の innerShadow() 実装による遅延やフレームの固まりを修正。#10903
  • macOS:Vim の filetype 検出が、macOS 固有の Ghostty 設定パスを Ghostty 設定ファイルとして認識するように。#10101
  • macOS:macos-titlebar-style = tabs に関連するさまざまなウィンドウ処理の修正。#9596 #9597
  • macOS:ダーク/ライトテーマ再読み込み周りのさまざまな修正。#9360
  • macOS:マウスカーソルが状態に応じてより正確になるよう、さまざまな修正。#9580 #8409

GTK(Linux、FreeBSD)

  • GTK:二本指の左右スワイプでタブページが切り替わるように。#10575
  • GTK:キーテーブルとシーケンスに、macOS と一致する保留中のキーボード入力状態を表示する専用 UI が付きました。#2127
  • GTK:空間的なスプリットナビゲーションが端で折り返すように。1 方向で最後のスプリットを過ぎると、反対側の最初のスプリットへ回り込みます。#10811
  • GTK:+new-window CLI コマンドが -e と --working-directory を受け付けるように。#10809
  • GTK:cgroup を再構築し、cgroup がサーフェス単位で正しくスコープされるように。#10611 #2084
  • GTK:スプリットの作成、リサイズ、終了といった変更アクションがウィンドウ全体をちらつかせなくなりました。#8208
  • GTK:カスタムの window-height や window-width を持つウィンドウが正しく中央に配置されるように。#7937
  • GTK:クリップボードにテキスト(画像など)が含まれない場合、paste_from_clipboard が false を返すようになり、performable: キーバインドがキー押下をターミナルアプリケーションへ渡せるように。#10089
  • GTK:i3 のウィンドウボーダーが全画面の切替を往復した後に消える問題を修正。#8075
  • GTK:Kitty キーボードプロトコルが、合成キー(国際キーボードレイアウトでの Compose キーによるアクセント文字など)のテキストイベントを報告しない問題を修正。#10049
  • GTK:gtk-enable-primary-paste GSettings オプションを尊重し、GNOME のデスクトップ設定から中クリック貼り付けを無効化できます。#10328
  • GTK:OpenGL バージョンが古すぎる場合に、無音のクラッシュの代わりに警告をログへ出すように。#9586
  • GTK:FreeType の旗標の既定を full ヒンティングから light ヒンティングへ変更し、大多数の GTK アプリのふるまいと一致させました。#9253
  • GTK:XKB マッピングが Linux 上で正しく機能するように。#9454
  • GTK:4.2 が利用可能なら、CSS でメディアクエリと prefers-color-scheme を使用します。#9520

ローカリゼーション

Ghostty 1.3 は 6 つの新しい言語をサポートします:

  • クロアチア語
  • カザフ語
  • ラトビア語
  • リトアニア語
  • スペイン語(スペインで話される)
  • ベトナム語

ローカリゼーションはボランティアのコントリビューターが維持しています。あなたの言語で Ghostty のローカリゼーションを手伝いたい場合は、GitHub リポジトリでディスカッションを開いてください。Ghostty のローカリゼーションに貢献したすべてのボランティアに感謝します!

パッケージメンテナー向けの変更

  • Ghostty のビルドには Zig 0.15 が必要になりました。#8372

Libghostty

1.3 のリリースに直接関係するものではありませんが、1.3 の開発サイクルの目標の一つは libghostty に本格的に取り組み始めることでした。その進捗をここでお知らせします。

1.3 の開発サイクル中に libghostty は正常に切り出され、スタンドアロンの Zig モジュールとして利用可能になりました。Zig モジュールはフル機能を備え、そのほとんどすべてのコードを Ghostty と共有します。同時に、作業中の C API もあります。Ghostty リポジトリには Zig と C のサンプル一式 があります。

モジュールのバージョン付きリリースにタグを付ける準備はまだできていませんが、フリーと商用の数十のプロジェクトがすでにlibghostty を使用しており、私は期待に胸を膨らませています!興味があれば、私たちの Discord に libghostty チャンネルがあります。

Ghostty 開発チームは、Ghostty GUI と libghostty のリリースサイクルを分離することを決めました。libghostty は Ghostty デスクトップアプリとは独立した、独自のバージョン番号とリリース計画を持ちます。これにより、異なるユーザーベースと安定性の要件を持つライブラリとデスクトップアプリのために、異なる開発ペースを維持できます。

最初の libghostty リリースにタグを付ける時期はまだ決まっていませんが、Zig モジュールと C API の両方の作業は続いており、近いうちにリリースできることを願っています!

資金面の更新

1.3 の開発サイクル中に、Ghostty は正式に非営利プロジェクトとなりました。

これには意味があります。Ghostty が商業目的のために売られたり、方向転換されたり、転用されたりできない、強制力のある保証となるからです。非営利構造は、Ghostty を採用し貢献する人とコミュニティを守り、プロジェクトが公的利益を個人の利潤より優先するミッション駆動の実体によって管理されることを確実にします。この決定の動機については、当初のアナウンス を参照してください。

当方ではすでに正式に 5 件のコントリビューター契約 を締結し、プロジェクトに関わり継続的に高品質の仕事を示した個人に報酬を支払っています。契約の対象は、コミュニティ管理、グラフィック作業、Unicode 互換性、GTK、Discord/GitHub 統合です。これらの契約は合計ほぼ 300 時間の有償作業をコミットしており、コントリビューターに Ghostty での活動を続けるための有償機会を提供できることを嬉しく思います。

Ghostty を支援したい方は、当方のスポンサーシップページ をご覧ください。

ロードマップ

スクロールバック検索やネイティブスクロールバーなど、要望の高かった機能が実装されたことにより、Ghostty 1.3 は Ghostty を「既存の最良のターミナルエミュレーター」にするという長年の目標を果たした優れたリリースだと考えています。

「最良」は主観的なものですが、要点は、Ghostty 1.3 が確立されたターミナルエミュレーターに対してユーザーが期待するすべての主流機能を備え、高水準の磨きとパフォーマンスを提供しているということです。もちろん Ghostty の改善は続けますが、これはプロジェクトの発展における重大な里程碑です。

短期の焦点は、libghostty リリースの安定化とタグ付けです。数十のプロジェクトがすでに libghostty を使用しており、libghostty は最終的に Ghostty デスクトップアプリそのものよりも広く使われ影響力を持つようになるでしょう。したがって、これはプロジェクトの重要な次のステップです。

また、コーポレートスポンサーシッププログラムの構築、スポンサーにより具体的な見返りの提供、Ghostty が資金で何をしているかのより良い告知など、非営利の開発作業を数多く行う必要があります。

Ghostty 1.4 は、デスクトップアプリの反復と改善を続けます。特定の機能は約束しませんが、Ghostty をスクリプト化可能にする、真の Tmux control mode を実現する、グラフィカルな設定画面を提供するなどに取り組んでいます。

よくあるリクエストへの回答として、Microsoft Windows のサポートは依然として計画されていません。これは長期ロードマップの一部ですが、強力で有能な libghostty に焦点を当てることが、長期的にはより良い Windows サポートをもたらすと考えています。libghostty 自体はすでに Windows をサポートしています。

Ghostty 1.4 は 6 か月のリリースサイクルを継続し、9 月に予定されています。より頻繁な更新を望むユーザーには、macOS ではtip リリースチャンネル の使用を、Linux では頻繁なソースからのビルド をお勧めします。