同期出力

見た目の広い範囲を更新するコマンドラインプログラムは、同期 出力が有効でないと、Ghostty のような高速なターミナルで 画面の途切れが見えることがあります。

システムによっては、画面の見えている広い範囲を頻繁に更新する コマンドラインプログラムが Ghostty を使用すると、何度も点滅したり 重度の画面の途切れ(ティアリング)を起こしたりしますが、 その他のターミナルエミュレーターではこの現象が起きません。これは通常 Ghostty のバグではなく、プログラム自身のバグです。

その背後によくある理由は、Ghostty のレンダリングが速すぎること、 そして画面を再描画するプログラムが、画面のセルを 更新する速度がレンダラーに追いつけない—— というティアリングの原因です。

パフォーマンスを犠牲にしなければ、Ghostty はここで多くを為せません。そのため、 影響を受けているプログラムのユーザーには、 このページの開発者向け の節への リンクを添えて、上流の開発者に issue を報告することを強く おすすめします。そうすれば、背後にある問題の直し方を彼らに知ってもらえます。

影響を受けることが知られているプログラムには次のものがあります:

開発者向け

この問題を抱える CLI や TUI アプリの開発者は、[同期出力] プロトコルを実装する必要があります。これは、画面が完全に 更新されて次のフレームをレンダリングしても 安全であることを、Ghostty(およびその他のモダンで高性能なターミナルエミュレーター)に通知します。

ただし、ベストプラクティスとして、絶対に更新が必要なセルだけを 更新すること、また新しいセルを更新する前に 行全体やアクティブな画面全体を消去しないこともおすすめします。 代わりに、[カーソル位置 (CUP)] を使ってカーソルを 更新したい部分へ戻し、セルを更新し、[行消去 (EL)] で 行の残りを消去してください。これは同期出力プロトコルをサポートしないかもしれない ターミナルでの画面の途切れを和らげるだけでなく、不要な更新と ターミナルへ送るデータ量を減らすことで 性能を大幅に向上させることもできます。