GTK シングルインスタンスモード

GTK シングルインスタンスモードは、アプリケーションのインスタンスを同時に 1 つしか実行しないことを保証する機能です。

Ghostty は、CLI 環境から起動されていないと検出した場合に 既定で GTK シングルインスタンスモードを使います。

GTK シングルインスタンスモードは GTK プロジェクトが推奨する方法であり、 公式の Gnome アプリケーションにあるべき慣用的な振る舞いです。2 つめの Ghostty インスタンスが起動されると、元のインスタンスが新しい ウィンドウを作成し、フォーカスを取得し、 2 つめのインスタンスを終了します。

Tip

Linux で Ghostty を使っていて起動が遅かったりメモリ使用量が多かったりする場合は、 GTK シングルインスタンスの検出があなたの環境でうまく機能していない可能性があり、 強制して有効化する必要があるかもしれません。詳しくはこのページの 続きをお読みください。

CLI 環境の検出

Ghostty の既定の振る舞いは、CLI 環境から起動されていない場合に GTK シングルインスタンスモードを使う、というものです。

Ghostty がこの振る舞いをするのは、CLI としてのターミナル利用が よくあるため(つまり ghostty -e "some command")です。そうした場合に期待される 振る舞いは、新しいプロセスを起動し、終了までブロックすることです。 シングルインスタンスモードではこれを簡単に実現できないため、 非 CLI 環境から起動された場合にのみ シングルインスタンスモードを有効化したいのです。

アプリケーションが非 CLI 環境から起動されたかどうかを検出する標準 API は存在しないため、Ghostty は次のヒューリスティックを使います:

  1. TERM_PROGRAM 環境変数が空でない値に 設定されている場合、GUI ターミナルエミュレーターの中にいると仮定し、 GTK シングルインスタンスモードを無効にします。

  2. Ghostty に何らかのコマンドライン引数が渡された場合、 インスタンス固有の設定を望んでいると仮定し、 GTK シングルインスタンスモードを無効にします。

GTK シングルインスタンスモードの強制有効化/無効化

gtk-single-instance オプションを設定すると、 GTK シングルインスタンスモードを強制的に有効または無効にできます:

gtk-single-instance = true

値が true の場合、Ghostty はシングルインスタンスモードでの実行を強制されます。 このモードでは、実行中の Ghostty インスタンスがあれば、 新しい ghostty プロセスが起動されるごとに、その既存の Ghostty インスタンス内に新しいウィンドウが作成されます。

スタートアップ性能とメモリとの関係

Ghostty は GTK アプリケーションです。GTK フレームワークには 起動時にどうしても避けられないオーバーヘッドがあり、かかる時間と 使うメモリ量の両方がそれにあたります。Ghostty にはこれをどうすることもできません。

GTK シングルインスタンスモードは、この後起動される Ghostty インスタンスで このオーバーヘッドを避けます。2 つめの Ghostty インスタンスの 起動は極めて速く、メモリ使用量も ごくわずかです。既存のインスタンス内に 新しいウィンドウを作るだけだからです。