Hacker News new | past | comments | ask | show | jobs | submit login
Text-based terminal screencasts (showterm.io)
293 points by daw___ on Aug 10, 2013 | hide | past | favorite | 51 comments



Author of term.js/tty.js[1] here. Nice work. You guys should keep an eye on term.js. The version you're using is slightly old and actually contains a bug (now fixed) wherein all events will become unbound if the reset control sequence is received. I'm also adding fixes for a few other things currently, such as double-width character support, which has been a problem in the past.

[1] https://github.com/chjj/term.js


Hey chjj, thank you so much for tty.js! You definitely deserve the credit for doing all the hard work :).


One thing that I think could help out a bit would be to show key commands as they are pressed as well. I'd love to use this to show my students software development things (using vim or emacs for editor), but showing them the keypresses I make as well is critical for some text editors newbies.


I regret I have but one upvote to give this feature. Can't wait to play around with this.

edit: I actually was thinking about this feature on tty.js rather than showterm.io. I might see how hard it would be to implement it.


http://ascii.io/ does the same and was around for a while, but showterm's text selection works better.


shelr.tv is also doing the same for more than a year now but compared to ascii.io and showterm.io doesn't look as polished.


ascii.io works great with ncurses games http://ascii.io/a/4682

Showterm had buggy black background http://showterm.io/ff11970f1363de1386cbc


Where is that game "cursor war"? Looks cool, easier on the eyes than dwarf fortress.



I have using ascii.io for quite a while, and it has repositories for share with others. I like it!


This is such an incredible idea. I can already see tons of use cases for it. CLI apps can easily demo themselves through this. It even recognizes backspaces!

I'm using a patched font with a git branch symbol in my prompt[0]. As expected, it only displays on devices that have that font installed. Colors don't match my actual terminal either, but that's just a minor problem.

[0] http://showterm.io/e49d0900602104ae4850f


I agreed with the people saying that a confirmation before uploading would be helpful, so I went to file an issue.

It turns out there is one there already. You can weigh in here: https://github.com/ConradIrwin/showterm/issues/12.

EDIT: A follow up: It turns out that there is a slightly hidden and indirect way to abort uploads. Start the program as `showterm -e`, and it will offer you a chance to edit timings before uploading. (This is intended to give you a chance to trim out long pauses.) At that point, if you can cause your editor to abort with a non-zero status, the upload aborts. For Vim users, the gem's author points to exiting with `:cq`.

See here: https://github.com/ConradIrwin/showterm/blob/master/bin/show...


Nice - it automagically translates "CSI 38:5:FG m CSI 48:5:BG m" properly. ( http://showterm.io/6ed840f381fd81a881176 )

This will be very useful! That said, I have to second the concern above that it should ask for confirmation before uploading; just auto-uploading could be an in issue if somebody accidentally pastes sensitive information into the terminal.


I just created a recording using Gate One of the same command (well, I think it is the same) for comparison purposes:

http://riskable.com/files/GateOne_recording-20130810130840.h...

Try resizing your browser while that is playing back (go really small) for a special treat :)


Q1: is there a way to download the resulting screencast so that it can be viewed off the network?

Q2: is there a way to do this without having to upload anything? e.g. pipe to a file locally?


try script(1) and scriptreplay(1)


Or ttyrec(1) and ttyplay(1)


This unfortunately doesn't support the use case of simply wanting to personally back up the screencasts sent to showterm.io.


Source code of showterm: client[1], server[2]

[1] https://github.com/ConradIrwin/showterm [2] https://github.com/ConradIrwin/showterm.io


Mind scrubbing your database.yaml and making a gist? I'm new to rails


Wow! This is quite awesome!

Would love to have live streaming capability for this (though I can't think about a reason to use it yet, but I'm sure it'll be handy.)


Actually, I am working on something similar i.e being able to share terminals using browser.


Cool! Realtime terminal hacking... now that's something I can use.


This has existed for ages in the form of GNU Screen. (Or Byobu, if you want a variation with bells and whistles.)


Gate One has had this feature for ages. You can export your terminal logs to HTML payback files or as traditional flat logs. You can then share them however you like... Web, email, whatever.

It works with full screen apps like tmux, vim, htop, etc. It even plays back images (if the user output them to the terminal).


Pretty cool, but unfortunately it does not work with my PS1 [0]. Looks like any PS1 with a shell call in it won't work.

[0]: http://github.com/impromptu/impromptu


I wonder about credentials leaking to the service. When I show off connecting to a server that uses login/password, will this also be recorded and uploaded or only keys that actually change the ui?

How about ncurses apps?


http://showterm.io/5837e92554dcbeaea129b answers the ncurses question and i'm impressed.


it records only the characters echoed to the terminal-emulator by the pty device (hence passwords are not recorded)


I'm doing some tests [1] with showterm's screencasts embedded in a web page and, argh, apparently you can't control the autorun feature, pretty annoying.

I think that if it had a set of "play"/"pause"/"rewind"/"forward" buttons, tons of websites would benefit (for docs, examples, tutorials, etc).

[1] https://googledrive.com/host/0B9lMEsFXwv0ZLVh5dkRfdmw1UnM/


the ability to copy/paste is particularly useful in this case, given that that's what most people end up doing anyway.. particularly for more complicated commands


This, and also it's efficient. As much as I like video screencasts, I cringe everytime I think I am actually watching an ASCII streams exposed through highly complex high-resolution megabytes long compressed video. Makes me wanna finish my emacs-repl-screencast-mode.el ..


I think the script should ask for a confirmation before uploading stuff. Somebody could get distracted and forget that script runs.


agreed. This is a dangerous utility akin to a key logger.


You don't have to install it in order to use it.

bash <(curl record.showterm.io)

Records everything in that terminal until you exit, then gives you a URL to share.


I just tried to play around with showterm. Why does it have a different theme? When I use Vim with solarized theme, showterm shows it in a different ugly way. http://showterm.io/15104fd85863532b74150 Am i doing something wrong?


This is really sweet! As well as some of the other features requested, real-time might be nice, too.

Plus, the option to cut out backspaces and only go with the finished command might be cool, in case the screencaster has made some mistakes along the way.


Here's another interesting library by floobits: https://floobits.com/help/floomatic/


I've been thinking of better ways to do programming tutorials and something like this is roughly what I had in mind. Thanks for open sourcing it!


If you are interested in seeing code examples from a text editor or IDE we are working on Storyteller:

http://www.storytellersoftware.com

Everything is stored locally and the tool can generate an HTML playback file that can be passed around. One can also make comments during the playback. There tends not to be a great place to document how code evolves, we think a playback is the best place for this.

Its not quite ready for prime time yet but it will be soon. Our long term goals are to make a web app to store playbacks and to make it the next generation of version control.


Would love to see most viewed showterm videos! :)


So if you can work out how to add a red ● to your prompt, this'd be a really good way to indicate recording.


That's easy enough:

    PS1=`printf "\033[1;31m\342\227\217\033[0m\\$ "` sh


Thanks, I was missing the printf.


I've been using ascii.io for a while - I would be interested in a comparison between the two.


awesome. I tried a while ago with terminalcast.com. hopefully this gets more traction. integration with native terminal emulators would be great, so you can start recording at any point in time.


What happens if I run something like htop?



What about tmux?


it does exactly the same as the above htop's screencast


If I want to go back on your site, it keeps me on your site. Absolutely infuriating, remove this.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: