{% extends "layout.html" %}
{% set title = 'Overview' %}
{% block body %}


<br>
<em>Updates:</em>
<ol>
    <li>You can join the Google Groups
   <a href="https://groups.google.com/group/graphterm">mailing list</a>
   or follow <a href="https://twitter.com/intent/user?screen_name=graphterm">@graphterm</a>
   on Twitter for updates.</li>
   <li>The latest version is <a href="http://pypi.python.org/pypi/graphterm">0.57.0</a>
   released July 18, 2014. See the
   <a href="release-notes.html">Release Notes</a>
   </li>
</ol>

<p>
<tt>GraphTerm</tt> is a browser-based graphical terminal interface, that
aims to seamlessly blend the command line and graphical user
interfaces. You can use it just like a regular terminal,
backwards-compatible with <tt>xterm</tt>, and access the additional
graphical features as needed. These features can help impove your
terminal workflow by integrating graphical operations with the
command line and letting you view images and HTML output inline.
</p>

<p> 
GraphTerm has several funky features, but two of the most useful
practical applications are:
<ul>
<li>an <b>inline data visualization tool</b> for plotting with Python or R
   that can work seamlessly across SSH login
   boundaries, with an optional notebook interface. (For remote
   access, it also serves as a detachable terminal, like
   <tt>tmux</tt> or <tt>screen</tt>.)
</li>

<li>a <a href="virtual-setup.html" target="_blank">virtual computer lab</a>
   for teaching and demonstrations. The
   GraphTerm server can be set up in the cloud and accessed by
   multiple users using their laptop/mobile browsers, with Google
   Authentication. The lab instructor can
   <a href="screenshots.html#dashboard-for-a-virtual-computer-lab-viewing-user-terminals">monitor all the users' terminals</a>
   via a "dashboard", and users can collaborate with each other by
   sharing terminals and notebooks.
</li>
</ul>
</p>

<p>
See the <a href="contents.html">Contents</a> page for an overview
of the documentation. For a quick start, see
<a href="start.html">Getting started with GraphTerm</a>
(or the <a href="README.html#installation">README</a> file).
Images of GraphTerm in action can be found in
<a href="screenshots.html">screenshots </a>
and in the
<a href="videos.html">demo videos</a>.

GraphTerm builds
upon two earlier projects, 
<a href="http://www.xml.com/pub/a/2000/06/07/xmlterm/index.html">XMLTerm </a>
which implemented a terminal using the Mozilla framework and
<a href="https://github.com/antonylesuisse/qweb/tree/master/ajaxterm">AjaxTerm </a>
which is an AJAX/Python terminal implementation. (Other recent
projects along these lines include
<a href="http://acko.net/blog/on-termkit/">TermKit</a> and
<a href="http://www.enlightenment.org/p.php?p=about/terminology">Terminology</a>.)
</p>

<p>
You can use the GraphTerm API to build "mashups" of web applications
that work seamlessly within
the terminal. Sample mashups include:
</p>

<ul>
 <li> <tt>greveal</tt>: Inline version of <tt>reveal.js</tt> to display Markdown files as slideshows</li>
 <li> <tt>gtutor</tt>: Inline version of <a href="http://pythontutor.com">pythontutor.com</a> for visual tracing of python programs</li>
 <li> <tt>yweather</tt>: Using Yahoo weather API to display weather</li>
</ul>
For more information on the GraphTerm API, see <a href="extend.html">Extending GraphTerm.</a>.

<p>
Here is a sample screenshot showing the output of the
<a href="https://github.com/mitotic/graphterm/blob/master/graphterm/bin/metro.sh"><tt>metro.sh</tt></a>
command, which embeds six smaller terminals within the main terminal, running
six different commands from the GraphTerm toolchain: (i) live twitter stream output using
<tt class="docutils literal"><span class="pre">gtweet</span></tt>, (ii) weather info using <tt class="docutils literal"><span class="pre">yweather</span></tt>,
(ii) slideshow from markdown file using <tt class="docutils literal"><span class="pre">greveal</span></tt> and <em>reveal.js</em>,
(iv) word cloud using <tt class="docutils literal"><span class="pre">d3cloud</span></tt> and <em>d3.js</em>, (v) inline graphics using <tt class="docutils literal"><span class="pre">gmatplot.py</span></tt>,
and (vi) notebook mode using the standard python interpreter.</p>

<img width="95%" src="https://github.com/mitotic/graphterm/raw/master/doc-images/gt-metro.jpg"></img>

<!--
  <h2>Documentation</h2>

  <table class="contentstable" align="center" style="margin-left: 30px"><tr>
    <td width="50%">
      <p class="biglink"><a class="biglink" href="{{ pathto("tutorial") }}">First steps with Sphinx</a><br/>
         <span class="linkdescr">overview of basic tasks</span></p>
      <p class="biglink"><a class="biglink" href="{{ pathto("contents") }}">Contents</a><br/>
         <span class="linkdescr">for a complete overview</span></p>
    </td><td width="50%">
      <p class="biglink"><a class="biglink" href="{{ pathto("search") }}">Search page</a><br/>
         <span class="linkdescr">search the documentation</span></p>
      <p class="biglink"><a class="biglink" href="{{ pathto("genindex") }}">General Index</a><br/>
         <span class="linkdescr">all functions, classes, terms</span></p>
    </td></tr>
  </table>
-->

{% endblock %}
