tweekmonster / tmux2html
- суббота, 2 апреля 2016 г. в 03:12:35
Python
Render full tmux windows or individual panes as HTML
tmux2html captures full tmux windows or individual panes then parses their contents into HTML in living . The output can either be still snapshots, or animated sequences.
With a web server that uses gzip compression, the size over the network is negligible for reasonably sized windows or panes.
Some of these may be large in dimensions. You'll need to zoom out if you want to see all panes at once. These are not raster graphics!
[disk: 135KB, gzip: 17KB]
: https://share.esdf.io/FGlV4sufpt/color.html[disk: 65KB, gzip: 6KB]
: https://share.esdf.io/saRkuNriJt/single.html[disk: 134KB, gzip: 11KB]
: https://share.esdf.io/h5lGMPdcZF/full.html[disk: 638KB, gzip: 262KB]
: https://share.esdf.io/3qdZm2szkN/animated.html[disk: 192KB, gzip: 79KB]
: https://share.esdf.io/EJHQXoIQDT/partial-animated.html
(Only some panes are animating)If you decide to look at the telnet animations yourself and don't know how to
exit, use Ctrl-]
then type quit
. For the Star Wars animation, press
Ctrl-]<enter>
to get the prompt.
This was a weekend project I made for fun and I have no particular use for it beyond annoying my friends about how bad they should feel for not using tmux. I also thought it would be neat to have a render of my sessions that didn't result in an image using some crummy font on a headless server.
I suppose you can use cron to capture screens and display it on your website, or use it to create terminal snippets for your blog. You could also load a pane render in elinks within your coworker's session. The only limit is your imagination, my friend.
pip install tmux2html
tmux2html 4 -o window_5_in_current_session.html
tmux2html .0 -o first_pane_in_current_window.html
tmux2html other:1.2 -o second_window_third_pane_in_other_session.html
target
(positional) - Target window or pane. Uses tmux's target syntax, but
always 0-indexed. (e.g. sess:1.2
- Session - sess, Window 2, Pane 3.
Default target is window.)-o
, --output
- Output file. Prints to stdout if omitted.-m
, --mode
- Output file permissions. Default - 644--light
- Light background.--interval
- Number of seconds between captures.--duration
- Number of seconds to capture. 0 for indefinite recording, -1
to disable.--stream
- Continuously renders until stopped and adds a script to auto
refresh based on --interval
. See the notes below for more info.--fg
- Foreground color. Can be a color index or R,G,B--bg
- Background color. Can be a color index or R,G,B--full
- Renders the full history of a single pane--stream
doesn't actually "stream", per se. It keeps writing to the same
file and adds a script that reloads the contents. This can be used to
have a live feed of a window or pane. However, it's not elegant. If you set
the interval to too low, your might unintentionally DDoS your own web server.
Caveat Emptor.monospace
if you
don't have any of those fonts installed. The caveat: if you have more than
one of those fonts installed, the first one in the font stack might not be
your favorite and you'll be forced to set your monitor on fire and buy a new
one.