diff --git a/_docs/guides/terminado.md b/_docs/guides/terminado.md new file mode 100644 index 0000000..d5e82fc --- /dev/null +++ b/_docs/guides/terminado.md @@ -0,0 +1,60 @@ +--- +title: Connecting to Terminado +category: Guides +--- + +Xterm.js can connect to backends other than the default node.js backend, as an example we will build a simple [Terminado](https://github.com/takluyver/terminado) application, and hook up to it with `Xterm.js`. `Terminado` is a python/tornado websocket host for terminal applications. + +We begin by downloading and installing `Terminado` with `pip install terminado`. The script for a basic `Terminado` application is surprisingly simple: + +```python +import tornado.web +from tornado.ioloop import IOLoop +from terminado import TermSocket, SingleTermManager + +if __name__ == '__main__': + term_manager = SingleTermManager(shell_command=['bash']) + handlers = [ + (r"/websocket", TermSocket, {'term_manager': term_manager}), + (r"/()", tornado.web.StaticFileHandler, {'path':'index.html'}), + (r"/(.*)", tornado.web.StaticFileHandler, {'path':'.'}), + ] + app = tornado.web.Application(handlers) + app.listen(8010) + IOLoop.current().start() +``` + +This script (referred to as `app.py`) is adapted from the [`Terminado` "single" example](https://github.com/takluyver/terminado/blob/master/demos/single.py). This application requires an `index.html` that correctly hooks `Xterm.js` up to the websockets provided by the `Terminado` server at the `/websocket` endpoint. We will make use of the `terminado` addon provided by `Xterm.js` itself to create a barebones example: + +```html + + +
+ + + + + + +