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 は環境変数をリセットし、一部の
プログラムの実行時に 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
を参照してください。
Ghostty の terminfo エントリーを持たないマシンに SSH で
接続すると、missing or unsuitable terminal: xterm-ghostty, Error opening terminal: xterm-ghostty. や
WARNING: terminal is not fully functional のようなエラーメッセージが表示されます。
いつの日か Ghostty の terminfo エントリーが世界中に あらかじめ配給されることを願っていますが、それまでの間、状況を解決する方法は 2 つあります:
- ローカルマシンで、次のワンライナーを実行します:
infocmp -x xterm-ghostty | ssh YOUR-SERVER -- tic -x - - サーバー上で、設定が
/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⟩ に置き換えます。
- ローカルマシンに次の 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 以上の色付きやスタイル付きの 下線といったターミナル機能は動作しません。