端末での操作をSVG形式で記録する termtosvg

nbedos/termtosvg: Record terminal sessions as SVG animations

ttyrec/playみたいに端末操作を録画出来るアプリケーション．再生はウェブブラウザなどでできます．

導入はpipで

$ pip3 install termtosvg
$ termtosvg -h
usage: termtosvg [output_file] [--font FONT] [--theme THEME] [--help] [--verbose]
Record a terminal session and render an SVG animation on the fly

positional arguments:
output_file optional filename of the SVG animation; if missing, a random
filename will be automatically generated

optional arguments:
-h, --help show this help message and exit
--font FONT font to specify in the CSS portion of the SVG animation
(DejaVu Sans Mono, Monaco...). If the font is not installed
on the viewer's machine, the browser will display a default
monospaced font instead.
--theme THEME color theme used to render the terminal session (circus,
classic-dark, classic-light, dracula, isotope, marrakesh,
material, monokai, solarized-dark, solarized-light, zenburn)
-v, --verbose increase log messages verbosity

See also 'termtosvg record --help' and 'termtosvg render --help'

導入後実行するとそのまま端末に戻ってexitするまでの操作を記録してくれる．exitするとSVGを書き出してそのファイル名を教えてくれる．

mk@T430s:~ (551)$ termtosvg
Recording started, enter "exit" command or Control-D to end
mk@T430s:~ (554)$ cowsay -f duck "hello termtosvg!"
__________________
< hello termtosvg! >
------------------
\
\
\ >()_
(__)__ _
mk@T430s:~ (555)$ cowsay -f duck "hello termtosvg!"|lolcat
__________________
< hello termtosvg! >
------------------
\
\
\ >()_
(__)__ _
mk@T430s:~ (556)$ exit
Recording ended, SVG animation is /tmp/termtosvg_vpd7hh0z.svg

出来上がったファイルはSVGなので中を見てコピペとか出来なくはない．

$ xmllint --format /tmp/termtosvg_vpd7hh0z.svg|head
<?xml version="1.0" encoding="utf-8"?>

<defs>
* {font-family: "DejaVu Sans Mono", monospace; font-style: normal; font-size: 14px}
text {dominant-baseline: text-before-edge}
.bold {font-weight: bold}
.background {fill: #002b36}
<g id="1">
<text fill="#93a1a1" lengthAdjust="spacingAndGlyphs" textLength="144" x="0">mk@T430s:~ (554)$ </text>
<text fill="#002b36" lengthAdjust="spacingAndGlyphs" textLength="8" x="144"> </text>

以下にexampleがある

termtosvg/examples.md at 0.3.0 · nbedos/termtosvg

サーバにアップロードして共有だとasciinemaが便利だけどこれはこれでファイル一個なので便利そうです．
Python製でライセンスはBSD 3-Clause Licenseです．

端末操作を Web で共有出来る asciinema – matoken’s meme

ttyrec: a tty recorder