{"id":1983,"date":"2018-07-05T07:40:54","date_gmt":"2018-07-04T22:40:54","guid":{"rendered":"http:\/\/matoken.org\/blog\/?p=1983"},"modified":"2018-07-05T07:41:39","modified_gmt":"2018-07-04T22:41:39","slug":"record-operation-on-terminal-in-svg-format-termtosvg","status":"publish","type":"post","link":"https:\/\/matoken.org\/blog\/2018\/07\/05\/record-operation-on-terminal-in-svg-format-termtosvg\/","title":{"rendered":"\u7aef\u672b\u3067\u306e\u64cd\u4f5c\u3092SVG\u5f62\u5f0f\u3067\u8a18\u9332\u3059\u308b termtosvg"},"content":{"rendered":"<ul>\n<li><a href=\"https:\/\/github.com\/nbedos\/termtosvg\">nbedos\/termtosvg: Record terminal sessions as SVG animations<\/a><\/li>\n<\/ul>\n<p>ttyrec\/play\u307f\u305f\u3044\u306b\u7aef\u672b\u64cd\u4f5c\u3092\u9332\u753b\u51fa\u6765\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\uff0e\u518d\u751f\u306f\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u306a\u3069\u3067\u3067\u304d\u307e\u3059\uff0e<\/p>\n<p>\u5c0e\u5165\u306fpip\u3067<\/p>\n<div class=\"codehilite\">\n<pre><span><\/span>$ pip3 install termtosvg\r\n$ termtosvg -h\r\nusage: termtosvg <span class=\"o\">[<\/span>output_file<span class=\"o\">]<\/span> <span class=\"o\">[<\/span>--font FONT<span class=\"o\">]<\/span> <span class=\"o\">[<\/span>--theme THEME<span class=\"o\">]<\/span> <span class=\"o\">[<\/span>--help<span class=\"o\">]<\/span> <span class=\"o\">[<\/span>--verbose<span class=\"o\">]<\/span>\r\nRecord a terminal session and render an SVG animation on the fly\r\n\r\npositional arguments:\r\n  output_file    optional filename of the SVG animation<span class=\"p\">;<\/span> <span class=\"k\">if<\/span> missing, a random\r\n                 filename will be automatically generated\r\n\r\noptional arguments:\r\n  -h, --help     show this <span class=\"nb\">help<\/span> message and <span class=\"nb\">exit<\/span>\r\n  --font FONT    font to specify in the CSS portion of the SVG animation\r\n                 <span class=\"o\">(<\/span>DejaVu Sans Mono, Monaco...<span class=\"o\">)<\/span>. If the font is not installed\r\n                 on the viewer<span class=\"s1\">&#39;s machine, the browser will display a default<\/span>\r\n<span class=\"s1\">                 monospaced font instead.<\/span>\r\n<span class=\"s1\">  --theme THEME  color theme used to render the terminal session (circus,<\/span>\r\n<span class=\"s1\">                 classic-dark, classic-light, dracula, isotope, marrakesh,<\/span>\r\n<span class=\"s1\">                 material, monokai, solarized-dark, solarized-light, zenburn)<\/span>\r\n<span class=\"s1\">  -v, --verbose  increase log messages verbosity<\/span>\r\n\r\n<span class=\"s1\">See also &#39;<\/span>termtosvg record --help<span class=\"s1\">&#39; and &#39;<\/span>termtosvg render --help<span class=\"err\">&#39;<\/span>\r\n<\/pre>\n<\/div>\n<p>\u5c0e\u5165\u5f8c\u5b9f\u884c\u3059\u308b\u3068\u305d\u306e\u307e\u307e\u7aef\u672b\u306b\u623b\u3063\u3066exit\u3059\u308b\u307e\u3067\u306e\u64cd\u4f5c\u3092\u8a18\u9332\u3057\u3066\u304f\u308c\u308b\uff0eexit\u3059\u308b\u3068SVG\u3092\u66f8\u304d\u51fa\u3057\u3066\u305d\u306e\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u6559\u3048\u3066\u304f\u308c\u308b\uff0e<\/p>\n<div class=\"codehilite\">\n<pre><span><\/span>mk@T430s:~ (551)$ termtosvg\r\nRecording started, enter &quot;exit&quot; command or Control-D to end\r\nmk@T430s:~ (554)$ cowsay -f duck &quot;hello termtosvg!&quot;\r\n __________________\r\n&lt; hello termtosvg! &gt;\r\n ------------------\r\n \\\r\n  \\\r\n   \\ &gt;()_\r\n      (__)__ _\r\nmk@T430s:~ (555)$ cowsay -f duck &quot;hello termtosvg!&quot;|lolcat\r\n __________________\r\n&lt; hello termtosvg! &gt;\r\n ------------------\r\n \\\r\n  \\\r\n   \\ &gt;()_\r\n      (__)__ _\r\nmk@T430s:~ (556)$ exit\r\nRecording ended, SVG animation is \/tmp\/termtosvg_vpd7hh0z.svg\r\n<\/pre>\n<\/div>\n<p>\u51fa\u6765\u4e0a\u304c\u3063\u305f\u30d5\u30a1\u30a4\u30eb\u306fSVG\u306a\u306e\u3067\u4e2d\u3092\u898b\u3066\u30b3\u30d4\u30da\u3068\u304b\u51fa\u6765\u306a\u304f\u306f\u306a\u3044\uff0e<\/p>\n<div class=\"codehilite\">\n<pre><span><\/span>$ xmllint --format \/tmp\/termtosvg_vpd7hh0z.svg|head\r\n<span class=\"cp\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<\/span>\r\n<span class=\"nt\">&lt;svg<\/span> <span class=\"na\">xmlns=<\/span><span class=\"s\">&quot;http:\/\/www.w3.org\/2000\/svg&quot;<\/span> <span class=\"na\">xmlns:ev=<\/span><span class=\"s\">&quot;http:\/\/www.w3.org\/2001\/xml-events&quot;<\/span> <span class=\"na\">xmlns:xlink=<\/span><span class=\"s\">&quot;http:\/\/www.w3.org\/1999\/xlink&quot;<\/span> <span class=\"na\">baseProfile=<\/span><span class=\"s\">&quot;full&quot;<\/span> <span class=\"na\">height=<\/span><span class=\"s\">&quot;408&quot;<\/span> <span class=\"na\">version=<\/span><span class=\"s\">&quot;1.1&quot;<\/span> <span class=\"na\">width=<\/span><span class=\"s\">&quot;640&quot;<\/span><span class=\"nt\">&gt;<\/span>\r\n  <span class=\"nt\">&lt;defs&gt;<\/span>\r\n    <span class=\"nt\">&lt;style<\/span> <span class=\"na\">type=<\/span><span class=\"s\">&quot;text\/css&quot;<\/span><span class=\"nt\">&gt;<\/span><span class=\"cp\">&lt;![CDATA[* {font-family: &quot;DejaVu Sans Mono&quot;, monospace; font-style: normal; font-size: 14px}<\/span>\r\n<span class=\"cp\">text {dominant-baseline: text-before-edge}<\/span>\r\n<span class=\"cp\">.bold {font-weight: bold}<\/span>\r\n<span class=\"cp\">.background {fill: #002b36}]]&gt;<\/span><span class=\"nt\">&lt;\/style&gt;<\/span>\r\n    <span class=\"nt\">&lt;g<\/span> <span class=\"na\">id=<\/span><span class=\"s\">&quot;1&quot;<\/span><span class=\"nt\">&gt;<\/span>\r\n      <span class=\"nt\">&lt;text<\/span> <span class=\"na\">fill=<\/span><span class=\"s\">&quot;#93a1a1&quot;<\/span> <span class=\"na\">lengthAdjust=<\/span><span class=\"s\">&quot;spacingAndGlyphs&quot;<\/span> <span class=\"na\">textLength=<\/span><span class=\"s\">&quot;144&quot;<\/span> <span class=\"na\">x=<\/span><span class=\"s\">&quot;0&quot;<\/span><span class=\"nt\">&gt;<\/span>mk@T430s:~ (554)$ <span class=\"nt\">&lt;\/text&gt;<\/span>\r\n      <span class=\"nt\">&lt;text<\/span> <span class=\"na\">fill=<\/span><span class=\"s\">&quot;#002b36&quot;<\/span> <span class=\"na\">lengthAdjust=<\/span><span class=\"s\">&quot;spacingAndGlyphs&quot;<\/span> <span class=\"na\">textLength=<\/span><span class=\"s\">&quot;8&quot;<\/span> <span class=\"na\">x=<\/span><span class=\"s\">&quot;144&quot;<\/span><span class=\"nt\">&gt;<\/span> <span class=\"nt\">&lt;\/text&gt;<\/span>\r\n<\/pre>\n<\/div>\n<p>\u4ee5\u4e0b\u306bexample\u304c\u3042\u308b<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/nbedos\/termtosvg\/blob\/0.3.0\/examples\/examples.md\">termtosvg\/examples.md at 0.3.0 \u00b7 nbedos\/termtosvg<\/a><\/li>\n<\/ul>\n<p>\u30b5\u30fc\u30d0\u306b\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u3066\u5171\u6709\u3060\u3068asciinema\u304c\u4fbf\u5229\u3060\u3051\u3069\u3053\u308c\u306f\u3053\u308c\u3067\u30d5\u30a1\u30a4\u30eb\u4e00\u500b\u306a\u306e\u3067\u4fbf\u5229\u305d\u3046\u3067\u3059\uff0e<br \/>\nPython\u88fd\u3067\u30e9\u30a4\u30bb\u30f3\u30b9\u306fBSD 3-Clause License\u3067\u3059\uff0e<\/p>\n<ul>\n<li><a href=\"https:\/\/matoken.org\/blog\/2015\/08\/13\/terminal-web-share-asciinema\/\" title=\"\u7aef\u672b\u64cd\u4f5c\u3092 Web \u3067\u5171\u6709\u51fa\u6765\u308b asciinema \u2013 matoken&amp;apos;s meme\">\u7aef\u672b\u64cd\u4f5c\u3092 Web \u3067\u5171\u6709\u51fa\u6765\u308b asciinema \u2013 matoken&rsquo;s meme<\/a><\/li>\n<li><a href=\"http:\/\/0xcc.net\/ttyrec\/\" title=\"ttyrec: a tty recorder\">ttyrec: a tty recorder<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>nbedos\/termtosvg: Record terminal sessions as SVG animations ttyrec\/play\u307f\u305f\u3044\u306b\u7aef\u672b\u64cd\u4f5c\u3092\u9332\u753b\u51fa\u6765\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\uff0e\u518d\u751f\u306f\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u306a\u3069\u3067\u3067\u304d [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"webmentions_disabled_pings":false,"webmentions_disabled":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[7,6,199],"tags":[359,360,358],"class_list":["post-1983","post","type-post","status-publish","format-standard","hentry","category-debian-linux","category-linux","category-sid","tag-svg","tag-terminal","tag-termtosvg"],"_links":{"self":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts\/1983","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/comments?post=1983"}],"version-history":[{"count":0,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts\/1983\/revisions"}],"wp:attachment":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/media?parent=1983"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/categories?post=1983"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/tags?post=1983"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}