Project description

GraphTerm is a browser-based graphical terminal interface,
that aims to seamlessly blend the command line and graphical
user interfaces. The goal is to provide a fully backwards-compatible
terminal emulator for xterm, with additional graphical extensions
that can be accessed as needed. GraphTerm builds upon two earlier
browser-based terminal projects,
XMLTerm,
and
AjaxTerm.
(Another recent project along these lines is TermKit.)

A GraphTerm terminal window is just a web page served from the
GraphTerm web server program. Multiple users can connect
simultaneously to the web server to share terminal sessions.
Multiple hosts can also connect to the server (on a different port),
allowing a single user to access all of them via the browser.
The GraphTerm server acts as a router, sending input from browser
windows for different users to the appropriate terminal (“pseudo-tty”)
sessions running on different hosts, and transmitting the
terminal output back to the browser windows.

This flexible, networked implementation allows for several possible
applications for GraphTerm, such as:

an enhanced terminal that combines the command line with basic
GUI operations like navigating folders, file drag-and-drop,
displaying images etc.

an inline data visualization tool to view output from plotting
libraries like matplotlib

a notebook interface for data analysis and documentation (like
the Mathematica or iPython Notebook interface, but at the shell
level).

a collaborative terminal that can be remotely accessed
by multiple users simultaneously, to run programs, edit files etc.

a detachable terminal multiplexer, sort of like GNU screen or
tmux

The interface is designed to be touch-friendly for use with
tablets, relying upon command re-use to minimize the need for
a keyboard. It preserves history for all commands,
whether entered by typing, clicking, or tapping.
It is also themable using CSS.

Here is a sample screenshot showing the output of the
metro.sh
command, which embeds six smaller terminals within the main terminal, running
six different commands from the GraphTerm toolchain: (i) live twitter stream output using
gtweet, (ii) weather info using yweather,
(ii) slideshow from markdown file using greveal and reveal.js,
(iv) word cloud using d3cloud and d3.js, (v) inline graphics using gmatplot.py,
and (vi) notebook mode using the standard python interpreter.