Terminfo

Terminfo は、ターミナルのケイパビリティをソフトウェアに知らせるための仕組みです。 Ghostty は、その機能を告知する独自の terminfo エントリーを同梱しています。

Terminfo は、多くのターミナルアプリケーションがターミナルの ケイパビリティを判断するためにいまも使っている、古い フォーマットです。Ghostty は、その機能を告知する 独自の terminfo エントリーを同梱しています。

Ghostty は、TERM の値として xterm-ghostty を使います。

Note

なぜ xterm という接頭辞なのか? 悲しいことに、多くのターミナルアプリケーションが ケイパビリティを推定するために、TERM の値の中に "xterm" という文字列を 検索します。プライベートベータでは、純粋な ghostty 値を試しましたが、あまりに多くのアプリが壊れることがわかり、 エコシステム全体を修正するのは非現実的でした。互換性を維持するため、 xterm-ghostty に落ち着きました。

Ghostty のパッケージには terminfo エントリーが含まれており、 システムで利用できるようにするための 適切なファイルシステムのレイアウトや環境変数が設定されています。 Ghostty を実行すると、terminfo エントリーが利用可能だと 検出された場合に限り、TERM 環境変数が自動的に xterm-ghostty に設定されます。

Important

Ghostty の terminfo エントリーは ncurses 6.5-20241228 以上で利用可能です。 ディストリビューションが ncurses パッケージを更新するにつれ、Ghostty の terminfo エントリーは既定でシステム全体で 利用可能になります。これにはまだ時間がかかります。

Sudo

sudo を使っている場合、sudo は環境変数をリセットし、一部の プログラムの実行時に missing or unsuitable terminal: xterm-ghostty や 'xterm-ghostty': unknown terminal type. に ついてのエラーを目にすることがあります。

これを解決するには、sudo が ⟨TERMINFO⟩ 環境変数を維持するよう設定するか、 shell integration の sudo 機能を有効に します。後者では、Ghostty が sudo をエイリアスしてあなたの代わりに自動的に実行します。shell-integration の機能を有効にするには、あなたの 設定で shell-integration-features = sudo を指定します。

この設定オプションの詳細は shell-integration-features を参照してください。

SSH

Ghostty の terminfo エントリーを持たないマシンに SSH で 接続すると、missing or unsuitable terminal: xterm-ghostty, Error opening terminal: xterm-ghostty. や WARNING: terminal is not fully functional のようなエラーメッセージが表示されます。

いつの日か Ghostty の terminfo エントリーが世界中に あらかじめ配給されることを願っていますが、それまでの間、状況を解決する方法は 2 つあります:

方法 1:Ghostty の terminfo エントリーをリモートマシンへコピーする

  1. ローカルマシンで、次のワンライナーを実行します:
    infocmp -x xterm-ghostty | ssh YOUR-SERVER -- tic -x -
    
  2. サーバー上で、設定が /usr/share/terminfo/... に保存されたことを確認します。 保存されていない場合は、$HOME/.terminfo/... を調べて反映させてください。

サーバー上の tic コマンドでは、tic は通常その結果をシステムデータベースである /usr/share/terminfo に配置します。 この場所は、TERMINFO 環境変数で上書きできます。 TERMINFO が設定されておらず、tic がシステム位置に 書き込めない場合、$HOME/.terminfo が存在すればそこに 結果を配置します。この場合、詳細は man tic を参照してください。

サーバー上では、"<stdin>", line 2, col 31, terminal 'xterm-ghostty': older tic versions may treat the description field as an alias という警告が出ることがありますが、安全に無視できます。

Note

macOS Sonoma より前のバージョンでは、システム同梱の ⟨infocmp⟩ を 使えません。 同梱されている ⟨ncurses⟩ のバージョンが古すぎ ます。新しい ⟨tic⟩ で読める terminfo エントリーを生成できず、 コマンドはIllegal character メッセージの量が多く失敗します。これを修正するには、Homebrew で 新しいバージョンの ⟨ncurses⟩ を ⟨brew install ncurses⟩ でインストールし、上記の ⟨infocmp⟩ をフルパスの ⟨/opt/homebrew/opt/ncurses/bin/infocmp⟩ か ⟨/usr/local/opt/ncurses/bin/infocmp⟩ に置き換えます。

方法 2:SSH をよく知られた terminfo エントリーへフォールバックさせるよう設定する

  1. ローカルマシンに次の SSH 設定を追加します(OpenSSH 8.7 以降が必要です):
    # .ssh/config
    Host example.com
      SetEnv TERM=xterm-256color
    

Ghostty はどちらのバリエーションも自動化できます。ghostty +ssh CLI アクションと ssh-env /ssh-terminfo shell integration 機能の詳細、そして自動化が適用される場合のいくつかの 重要な制限事項は、SSH を参照してください。

Warning

フォールバックは先進的なターミナル機能をサポートしません。xterm-256color は Ghostty のケイパビリティをすべて含んでいないため、xterm 以上の色付きやスタイル付きの 下線といったターミナル機能は動作しません。