大きなターミナルウィンドウでasciinemaを開始し、ウィンドウのサイズを(記録中に)小さいサイズに変更すると、ビデオがすべて間違って表示されます。
興味深いことに、それは反対の方法でうまく生き残ります。
この例では、大きなターミナルウィンドウでsl
(お気に入りのプログラム)を実行してから、ウィンドウのサイズを小さなウィンドウに変更し(これが「厄介な一時停止」です。ウィンドウのサイズを変更します)、 sl
を実行します。再び
https://asciinema.org/a/5wvarzb4545pohhfqnj8g9fta
説明のために、これは反対の例です。 小さいものから始めて、大きいものにサイズ変更します。 どちらの実行もうまく機能します。
asciinemaは画面を記録しませんが、stdoutストリームを記録します。 また、記録セッションの終了時に現在の端末の寸法sl
)は、実際のターミナルサイズによって異なります。 これらは、任意の時点での現在の端末の幅/高さに適したエスケープシーケンスを生成します。 asciinemaプレーヤーは実際に記録されたstdoutを解釈/実行するため、これらのエスケープシーケンスは現在のasciinema端末サイズに対して実行されます。
言い換えると、この問題を解決するには、asciinemaは端末のサイズ変更イベントを保存し(これは実行可能)、再生中にそれらを使用して独自の「端末」のサイズを変更する必要があります。 ただし、これによりプレーヤー自体のサイズが変更され、(asciinema.orgで再生した場合)面白く見え、(サイトに埋め込まれた場合)実用的ではなくなります。
私は課題を理解しており、あなたがそれを修正したくないのであれば、私はあなたに知らせたかっただけです。
これは、プレーヤーをすべての幅の最大幅とすべての高さの最大高さにすることで解決でき、テキストを左上に配置できます。これは、小さな端末で開始し、大きな端末で終了する場合と同じです。 。 修正する価値があるかどうかはわかりませんが:)
私がそれを修正したくないというわけではありませんが、これにはもっと微妙な点があります(あなたの提案した解決策はそれでも場合によっては悪い結果をもたらすでしょう)。 とにかく、これは一種のエッジケースであり、修正する価値があるかどうかはわかりません。
ただし、これは開いたままにしておきます。
これは、毎日の作業をすべて記録するためにasciinemaをカジュアルに使用することを禁止し、ターミナルウィンドウを決して縮小しないという苛立たしい制限を作成するという問題です。
@xloem @mukkachaitanya新しい記録形式を設計しています(https://github.com/asciinema/asciinema/pull/196)。 たぶん、「ターミナルサイズ変更」イベントをサポートするようにすることができます...
ターミナルアクティビティを「バックアップ」するには、ユーティリティが必要です。 そしてもちろん、ターミナルのサイズを変更しても、このユーティリティは「正常に機能する」はずです。 たぶん、この機能をサポートする他のプログラムがありますか?
ターミナルのサイズ変更イベントをキャプチャする方法に光を当てることができますか? 私がリアルタイムのアシキャストのために取り組んでいるブランチで本当に役立つでしょう(そして私が確信している記録中のサイズ変更の場合)
@jiangtsは、レコーダーが端末のサイズ変更(SIGWINCH信号)を処理する場所です: https :
最も参考になるコメント
これは、毎日の作業をすべて記録するためにasciinemaをカジュアルに使用することを禁止し、ターミナルウィンドウを決して縮小しないという苛立たしい制限を作成するという問題です。