web-dev-qa-db-ja.com

スクロール可能なターミナルウィンドウ(RoxTerm)をpng画像に保存するにはどうすればよいですか?

Rubyプログラムカラー端末出力をpngファイルに保存したいのですが、出力が画面の高さに合わないのでスクロール可能です。全体または一部を保存することは可能ですか?スクロール可能なターミナルウィンドウ領域(もちろん表示部分だけでなく、少し上にスクロール)をpngファイルに変換しますか?

3
Konstantin

限られたサイズの実際の画面を使用する必要はありません。すべての出力を一度に表示するのに必要なサイズの仮想画面を作成し、その画面または端末をダンプします。例えば:

$ Xvfb :1 -screen 0 100x4000x24 -noreset &
$ xterm -geometry 10x200 -display :1 -e \
   sh -c 'echo $WINDOWID >/tmp/id;ls -l /etc;sleep 99' &
$ DISPLAY=:1 convert x:$(cat /tmp/id) /tmp/out.png 
$ identify /tmp/out.png
  /tmp/out.png PNG 79x2604 ...

これにより、高さがxterm200行の100x4000ピクセルの画面が作成されます。 WINDOWID変数はxtermによってエクスポートされ、ImageMagickのconvertプログラムに渡して、画像をpngファイルにコピーすることができます。 identifyコマンドは、xtermのコンテンツ全体がキャプチャされたことを示しています。これは、1080ピクセルしかない私の実際の画面には当てはまりません。

1
meuh

私はasciienma.org(以前はascii.io)を使用して、端末にアクションを埋め込んだり共有したりする必要があるチュートリアルの記録されたセッションを作成してきました。録音は保存して.cast形式にダウンロードし、それを.gif形式に変換できます。

.castファイルを.gifに変換するには、このプロジェクトを使用します asciicast2gif 。結果はそれ自体を物語っています:

ss1

参考文献

1
slm