ipython/ipython — pull request #6614 by takluyver (2014-10-03 22:59:56+00:00)
Title: Terminal emulator in the notebook

To try this out: `pip install terminado`, launch the notebook server, and go to [http://localhost:8888/terminals/new](http://localhost:8888/terminals/new) (or replace `new` with any alphanumeric name).

You have an arbitrary number of named terminals. Tabs open to the same URL share a terminal - this isn't always flawlessly visually, especially if you open a new tab with something like vim already running, because it just sends the output, as it arrives, to all connected tabs, but it works pretty well in my informal tests.

If it can't load terminado, e.g. because you're on Windows, these handlers don't get added at all.

For now, terminals are only shut down if you quit your shell inside them. It should be easy, however, to build a REST API which can kill terminal sessions, and a UI on top of that.

I've copied the relatively minimal JS from terminado into our JS tree, because that seemed simpler than working out how to handle serving JS from another Python package. The big chunk of JS code, term.js, is added to the components submodule in a branch.

![nb terminal screenshot](https://cloud.githubusercontent.com/assets/327925/4513630/65aee5e8-4b50-11e4-86c5-3349c15ffe10.png)