A Graphical Terminal Interface that extends xterm by adding GUI-like features and session sharing
License
Unknown, Unknown licenses found
Licenses found
Unknown
LICENSE.txt
Unknown
COPYING
mitotic/graphterm
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>README — GraphTerm 0.57.0 documentation</title> <link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: './', VERSION: '0.57.0', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <link rel="search" type="application/opensearchdescription+xml" title="Search within GraphTerm 0.57.0 documentation" href="_static/opensearch.xml"/> <link rel="top" title="GraphTerm 0.57.0 documentation" href="contents.html" /> <link rel="next" title="Getting started" href="start.html" /> <link rel="prev" title="Contact" href="contact.html" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <style type="text/css"> table.right { float: right; margin-left: 20px; } table.right td { border: 1px solid #ccc; } </style> <script type="text/javascript"> // Google Analytics setup var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-35342722-1']); _gaq.push(['_trackPageview']); function goApp() { if (window.navigator.standalone) { // Go home location.href = "/"; } else { // Go to top level domain var url = location.protocol + "//" + location.hostname.split(".").slice(-2).join("."); if (location.port) url += ":" + location.port; location.href = url; } } // Prevent internal links in iOS standalone web apps from opening in browser (function(document,navigator,standalone) { // prevents links from apps from oppening in mobile safari // this javascript must be the first script in your <head> if ((standalone in navigator) && navigator[standalone]) { var curnode, location=document.location, stop=/^(a|html)$/i; document.addEventListener('click', function(e) { curnode=e.target; while (!(stop).test(curnode.nodeName)) { curnode=curnode.parentNode; } // Conditions to do this only on links to your own app if ('href' in curnode) { e.preventDefault(); location.href = curnode.href; } },false); } })(document,window.navigator,'standalone'); </script> </head> <body role="document"> <div style="background-color: white; text-align: left; padding: 10px 10px 15px 15px"> <h1> <a href="/"> code.mitotic.org <!-- <img height="60" src="http://doc.mindmeldr.com/_static/mmrbanner-transp1.png" alt="Mindmeldr banner" /> --> </a>/<a href="/graphterm">graphterm</a> </h1> </div> <div class="related" role="navigation" aria-label="related navigation"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="genindex.html" title="General Index" accesskey="I">index</a></li> <li class="right" > <a href="start.html" title="Getting started" accesskey="N">next</a> |</li> <li class="right" > <a href="contact.html" title="Contact" accesskey="P">previous</a> |</li> <li><a href="index.html">Docs Home</a> | </li> <li><a href="contents.html">Contents</a> »</li> </ul> </div> <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> <div class="sphinxsidebarwrapper"> <h3><a href="contents.html">Table Of Contents</a></h3> <ul> <li><a class="reference internal" href="#">README</a><ul> <li><a class="reference internal" href="#introduction">Introduction</a></li> <li><a class="reference internal" href="#installation">Installation</a></li> <li><a class="reference internal" href="#quick-start">Quick Start</a></li> <li><a class="reference internal" href="#documentation-and-support">Documentation and Support</a></li> <li><a class="reference internal" href="#caveats-and-limitations">Caveats and Limitations</a></li> <li><a class="reference internal" href="#credits">Credits</a></li> <li><a class="reference internal" href="#license">License</a></li> </ul> </li> </ul> <h4>Previous topic</h4> <p class="topless"><a href="contact.html" title="previous chapter">Contact</a></p> <h4>Next topic</h4> <p class="topless"><a href="start.html" title="next chapter">Getting started</a></p> <div role="note" aria-label="source link"> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="_sources/README.txt" rel="nofollow">Show Source</a></li> </ul> </div> <div id="searchbox" style="display: none" role="search"> <h3>Quick search</h3> <form class="search" action="search.html" method="get"> <input type="text" name="q" /> <input type="submit" value="Go" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> <p class="searchtip" style="font-size: 90%"> Enter search terms or a module, class or function name. </p> </div> <script type="text/javascript">$('#searchbox').show(0);</script> </div> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body" role="main"> <div class="section" id="readme"> <span id="id1"></span><h1><a class="toc-backref" href="#id7">README</a><a class="headerlink" href="#readme" title="Permalink to this headline">¶</a></h1> <div class="contents topic" id="contents"> <p class="topic-title first">Contents</p> <ul class="simple"> <li><a class="reference internal" href="#readme" id="id7">README</a><ul> <li><a class="reference internal" href="#introduction" id="id8">Introduction</a></li> <li><a class="reference internal" href="#installation" id="id9">Installation</a></li> <li><a class="reference internal" href="#quick-start" id="id10">Quick Start</a></li> <li><a class="reference internal" href="#documentation-and-support" id="id11">Documentation and Support</a></li> <li><a class="reference internal" href="#caveats-and-limitations" id="id12">Caveats and Limitations</a></li> <li><a class="reference internal" href="#credits" id="id13">Credits</a></li> <li><a class="reference internal" href="#license" id="id14">License</a></li> </ul> </li> </ul> </div> <div class="section" id="introduction"> <h2><a class="toc-backref" href="#id8">Introduction</a><a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h2> <p><code class="docutils literal"><span class="pre">GraphTerm</span></code> 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 <code class="docutils literal"><span class="pre">xterm</span></code>, 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:</p> <blockquote> <div><ul class="simple"> <li>an <strong>inline data visualization tool</strong> 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 <code class="docutils literal"><span class="pre">tmux</span></code> or <code class="docutils literal"><span class="pre">screen</span></code>.)</li> <li>a <a class="reference external" href="http://code.mitotic.org/graphterm/virtual-setup.html">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 class="reference external" href="http://code.mitotic.org/graphterm/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><strong>Screenshot 1: Inline plotting on a remote machine (via SSH)</strong></p> </div></blockquote> <div class="figure align-center" style="width: 85%"> <a class="reference internal image-reference" href="https://github.com/mitotic/graphterm/raw/master/doc-images/gt-ssh-plot.png"><img alt="https://github.com/mitotic/graphterm/raw/master/doc-images/gt-ssh-plot.png" src="https://github.com/mitotic/graphterm/raw/master/doc-images/gt-ssh-plot.png" style="width: 90%;" /></a> </div> <hr style="margin-bottom: 3em;"><blockquote> <div><strong>Screenshot 2: Monitoring multiple user terminals in a “virtual computer lab”</strong></div></blockquote> <div class="figure align-center" style="width: 85%"> <a class="reference internal image-reference" href="https://github.com/mitotic/graphterm/raw/master/doc-images/gt-screen-gadmin-terminals.png"><img alt="https://github.com/mitotic/graphterm/raw/master/doc-images/gt-screen-gadmin-terminals.png" src="https://github.com/mitotic/graphterm/raw/master/doc-images/gt-screen-gadmin-terminals.png" style="width: 90%;" /></a> </div> <p>GraphTerm builds upon two earlier projects, <a class="reference external" 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 class="reference external" 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 class="reference external" href="http://acko.net/blog/on-termkit/">TermKit</a> and <a class="reference external" href="http://www.enlightenment.org/p.php?p=about/terminology">Terminology</a>.)</p> <p>A GraphTerm terminal window is just a web page served from the GraphTerm 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 <em>router</em>, 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.</p> <p>The interface is designed to be touch-friendly for use with tablets, with tappable links and 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.</p> <p>You can use the GraphTerm API to build “mashups” of web applications that work seamlessly within the terminal. Sample mashups include:</p> <blockquote> <div><ul class="simple"> <li><code class="docutils literal"><span class="pre">greveal</span></code>: Inline version of <code class="docutils literal"><span class="pre">reveal.js</span></code> to display Markdown files as slideshows</li> <li><code class="docutils literal"><span class="pre">gtutor</span></code>: Inline version of <a class="reference external" href="http://pythontutor.com">pythontutor.com</a> for visual tracing of python programs</li> <li><code class="docutils literal"><span class="pre">yweather</span></code>: Using Yahoo weather API to display weather</li> </ul> </div></blockquote> <p>Images of GraphTerm in action can be found in <a class="reference external" href="https://github.com/mitotic/graphterm/blob/master/docs/screenshots.rst">screenshots</a> and in this <a class="reference external" href="http://youtu.be/TvO1SnEpwfE">YouTube Video</a>. Here is a sample screenshot showing the output of the <a class="reference external" href="https://github.com/mitotic/graphterm/blob/master/graphterm/bin/metro.sh">metro.sh</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 <code class="docutils literal"><span class="pre">gtweet</span></code>, (ii) weather info using <code class="docutils literal"><span class="pre">yweather</span></code>, (ii) slideshow from markdown file using <code class="docutils literal"><span class="pre">greveal</span></code> and <em>reveal.js</em>, (iv) word cloud using <code class="docutils literal"><span class="pre">d3cloud</span></code> and <em>d3.js</em>, (v) inline graphics using <code class="docutils literal"><span class="pre">gmatplot.py</span></code>, and (vi) notebook mode using the standard python interpreter.</p> <blockquote> <div><strong>Screenshot 3: Embedding terminals within GraphTerm</strong></div></blockquote> <div class="figure align-center" style="width: 100%"> <a class="reference internal image-reference" href="https://github.com/mitotic/graphterm/raw/master/doc-images/gt-metro.jpg"><img alt="https://github.com/mitotic/graphterm/raw/master/doc-images/gt-metro.jpg" src="https://github.com/mitotic/graphterm/raw/master/doc-images/gt-metro.jpg" style="width: 90%;" /></a> </div> </div> <div class="section" id="installation"> <span id="id2"></span><h2><a class="toc-backref" href="#id9">Installation</a><a class="headerlink" href="#installation" title="Permalink to this headline">¶</a></h2> <p>To install <code class="docutils literal"><span class="pre">GraphTerm</span></code>, you need to have Python 2.6+ and the Bash shell on your Mac/Linux/Unix computer. For a quick install, use one of the following two options:</p> <div class="highlight-python"><div class="highlight"><pre>sudo pip install graphterm OR sudo easy_install graphterm; sudo gterm_setup </pre></div> </div> <p>If you wish to install GraphTerm as a non-root user within an Anaconda or Enthought Python environment, you can omit the <code class="docutils literal"><span class="pre">sudo</span></code> prefix.</p> <p>For a manual install procedure, download the release tarball from the <a class="reference external" href="http://pypi.python.org/pypi/graphterm">Python Package Index</a>, untar, and execute the following command in the <code class="docutils literal"><span class="pre">graphterm-<version></span></code> directory:</p> <div class="highlight-python"><div class="highlight"><pre>python setup.py install </pre></div> </div> <p>For the manual install, you will also need to install the <code class="docutils literal"><span class="pre">tornado</span></code> web server, which can be downloaded from <a class="reference external" href="http://www.tornadoweb.org">http://www.tornadoweb.org</a></p> <p>You can also try out GraphTerm without installing it, by untarring the source tarball (or checking out the source from <code class="docutils literal"><span class="pre">github</span></code>). You can run the server as <code class="docutils literal"><span class="pre">./gtermserver.py</span></code> within the <code class="docutils literal"><span class="pre">graphterm</span></code> subdirectory of the distribution, after you have installed the <code class="docutils literal"><span class="pre">tornado</span></code> package on your system (or within the <code class="docutils literal"><span class="pre">graphterm</span></code> subdirectory of the source distribution). In this case, certain commands in the <code class="docutils literal"><span class="pre">graphterm/bin</span></code> subdirectory, such as <code class="docutils literal"><span class="pre">gterm</span></code> and <code class="docutils literal"><span class="pre">gauth</span></code>, would need to be accessed as <code class="docutils literal"><span class="pre">gterm.py</span></code> and <code class="docutils literal"><span class="pre">gauth.py</span></code> respectively.</p> <p>You can browse the <code class="docutils literal"><span class="pre">GraphTerm</span></code> source code, and download the development version, at <a class="reference external" href="https://github.com/mitotic/graphterm">Github</a>.</p> </div> <div class="section" id="quick-start"> <h2><a class="toc-backref" href="#id10">Quick Start</a><a class="headerlink" href="#quick-start" title="Permalink to this headline">¶</a></h2> <p>To start the <code class="docutils literal"><span class="pre">GraphTerm</span></code> server, use the command:</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">gtermserver</span> <span class="o">--</span><span class="n">terminal</span> <span class="o">--</span><span class="n">auth_type</span><span class="o">=</span><span class="n">none</span> </pre></div> </div> <p>This will run the server and open a GraphTerm terminal window using the default browser. For multi-user computers, omit the <code class="docutils literal"><span class="pre">--auth_type=none</span></code> option when starting the server, and enter the authentication code stored in the file <code class="docutils literal"><span class="pre">~/.graphterm/_gterm_auth.txt</span></code> as needed. (The <code class="docutils literal"><span class="pre">gterm</span></code> command can automatically enter this code for you.)</p> <p>You can access the GraphTerm server using any browser that supports websockets. Google Chrome works best, but Firefox, Safari, or IE10 are also supported. Start by entering the following URL:</p> <div class="highlight-python"><div class="highlight"><pre>http://localhost:8900 </pre></div> </div> <p>In the <code class="docutils literal"><span class="pre">graphterm</span></code> browser page, select the GraphTerm host you wish to connect to and create a new terminal session. (Note: The GraphTerm host is different from the network hostname for the server.) Within a GraphTerm window, you can use <em>terminal/new</em> menu option, or type the command <code class="docutils literal"><span class="pre">gmenu</span> <span class="pre">new</span></code>, to create a new GraphTerm session</p> <p>You can also open additional GraphTerm terminal windows using the <code class="docutils literal"><span class="pre">gterm</span></code> command:</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">gterm</span> <span class="o">--</span><span class="n">noauth</span> <span class="p">[</span><span class="n">session_name</span><span class="p">]</span> </pre></div> </div> <p>where the terminal session name argument is optional.</p> <p>Once you have a terminal, try out the following commands:</p> <div class="highlight-python"><div class="highlight"><pre>gls <directory> gvi <text-filename> </pre></div> </div> <p>These are commands in the GraphTerm toolchain that imitate basic features of the standard <code class="docutils literal"><span class="pre">ls</span></code> and <code class="docutils literal"><span class="pre">vi</span></code> commands. (<em>Note:</em> You need to execute the <code class="docutils literal"><span class="pre">sudo</span> <span class="pre">gterm_setup</span></code> command to be able to use the GraphTerm toolchain. Otherwise, you will encounter a <code class="docutils literal"><span class="pre">Permission</span> <span class="pre">denied</span></code> error.) See <a class="reference external" href="http://code.mitotic.org/graphterm/start.html">Getting Started with GraphTerm</a> for more info on using GraphTerm. You can also <a class="reference external" href="http://code.mitotic.org/graphterm/virtual-setup.html">set up a virtual computer lab</a> using GraphTerm.</p> </div> <div class="section" id="documentation-and-support"> <h2><a class="toc-backref" href="#id11">Documentation and Support</a><a class="headerlink" href="#documentation-and-support" title="Permalink to this headline">¶</a></h2> <p>Usage info and other documentation can be found on the project home page, <a class="reference external" href="http://code.mitotic.org/graphterm">code.mitotic.org/graphterm</a>. See the <a class="reference external" href="http://code.mitotic.org/graphterm/contents.html">Contents</a> page for an overview of the documentation and the <a class="reference external" href="http://code.mitotic.org/graphterm/talks.html">Talks and Tutorials</a> page for more advanced usage examples.</p> <p>You can also use the following command:</p> <div class="highlight-python"><div class="highlight"><pre>greveal $GTERM_DIR/bin/landslide/graphterm-talk1.md | gframe -f </pre></div> </div> <p>to view a slideshow about GraphTerm within GraphTerm. Click on the red X in the top right corner to exit the slideshow.</p> <p>There is a <a class="reference external" href="https://groups.google.com/group/graphterm">Google Groups mailing list</a> for announcements of new releases, posting questions related to GraphTerm etc. You can also follow <a class="reference external" href="https://twitter.com/intent/user?screen_name=graphterm">@graphterm</a> on Twitter for updates.</p> <p>To report bugs and other issues, use the Github <a class="reference external" href="https://github.com/mitotic/graphterm/issues">Issue Tracker</a>.</p> </div> <div class="section" id="caveats-and-limitations"> <h2><a class="toc-backref" href="#id12">Caveats and Limitations</a><a class="headerlink" href="#caveats-and-limitations" title="Permalink to this headline">¶</a></h2> <blockquote> <div><ul> <li><p class="first"><em>Reliability:</em> This software has not been subject to extensive testing. Use at your own risk.</p> </li> <li><dl class="first docutils"> <dt><em>Platforms:</em> The <code class="docutils literal"><span class="pre">GraphTerm</span></code> client should work on most recent</dt> <dd><p class="first last">browsers that support Websockets, such as Google Chrome, Firefox, and Safari. (Google Chrome usually works best.) The <code class="docutils literal"><span class="pre">GraphTerm</span></code> server is pure-python, but with some OS-specific calls for file, shell, and terminal-related operations. It has been tested only on Linux and Mac OS X so far.</p> </dd> </dl> </li> <li><dl class="first docutils"> <dt><em>Current limitations:</em></dt> <dd><ul class="first last simple"> <li>Support for <code class="docutils literal"><span class="pre">xterm</span></code> escape sequences is incomplete.</li> <li>Most features of GraphTerm only work with the bash shell, not with C-shell, due the need for PROMPT_COMMAND to keep track of the current working directory.</li> <li>At the moment, you cannot customize the shell prompt. (You should be able to so in the future.)</li> </ul> </dd> </dl> </li> </ul> </div></blockquote> </div> <div class="section" id="credits"> <h2><a class="toc-backref" href="#id13">Credits</a><a class="headerlink" href="#credits" title="Permalink to this headline">¶</a></h2> <p><code class="docutils literal"><span class="pre">GraphTerm</span></code> is inspired by two earlier projects that implement the terminal interface within the browser, <a class="reference external" href="http://www.xml.com/pub/a/2000/06/07/xmlterm/index.html">XMLTerm</a> and <a class="reference external" href="https://github.com/antonylesuisse/qweb/tree/master/ajaxterm">AjaxTerm</a>. It borrows many of the ideas from <em>XMLTerm</em> and re-uses chunks of code from <em>AjaxTerm</em>. The server uses the asynchronous <a class="reference external" href="http://tornadoweb.org">Tornado web framework</a> and the client uses <a class="reference external" href="http://jquery.com">jQuery</a>.</p> <p>The <code class="docutils literal"><span class="pre">gls</span></code> command uses icons from the <a class="reference external" href="http://tango.freedesktop.org">Tango Icon Library</a>, and graphical editing uses the <a class="reference external" href="http://ace.ajax.org">Ajax.org Cloud9 Editor</a> as well as <a class="reference external" href="http://ckeditor.com">CKEditor</a></p> <p>The 3D perspective mode was inspired by Sean Slinsky’s <a class="reference external" href="http://www.seanslinsky.com/star-wars-crawl-with-css3">Star Wars Opening Crawl with CSS3</a>.</p> <p>Other packaged open source components include:</p> <blockquote> <div><ul class="simple"> <li><a class="reference external" href="http://d3js.org/">d3.js</a> Data driven documents</li> <li><a class="reference external" href="https://github.com/adamzap/landslide">Landslide</a> presentation program</li> <li>Online Python Tutorial from <a class="reference external" href="http://pythontutor.com">pythontutor.com</a></li> <li><a class="reference external" href="http://code.google.com/p/pagedown/">Pagedown</a> Javascript Markdown converter</li> <li><a class="reference external" href="http://users.tpg.com.au/j_birch/plugins/superfish/">Superfish</a> menu plugin</li> <li><a class="reference external" href="http://underscorejs.org/">underscore.js</a> utility library</li> </ul> </div></blockquote> </div> <div class="section" id="license"> <h2><a class="toc-backref" href="#id14">License</a><a class="headerlink" href="#license" title="Permalink to this headline">¶</a></h2> <p><code class="docutils literal"><span class="pre">GraphTerm</span></code> is distributed as open source under the <a class="reference external" href="http://www.opensource.org/licenses/bsd-license.php">BSD-license</a>.</p> </div> </div> </div> </div> </div> <div class="clearer"></div> </div> <div class="related" role="navigation" aria-label="related navigation"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="genindex.html" title="General Index" >index</a></li> <li class="right" > <a href="start.html" title="Getting started" >next</a> |</li> <li class="right" > <a href="contact.html" title="Contact" >previous</a> |</li> <li><a href="index.html">Docs Home</a> | </li> <li><a href="contents.html">Contents</a> »</li> </ul> </div> <div class="footer" role="contentinfo"> © Copyright 2012-2014 R. Saravanan. Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.3.1. </div> <div class="footer"> <script type="text/javascript"> (function() { var ga = document.createElement('script'); ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; ga.setAttribute('async', 'true'); document.documentElement.firstChild.appendChild(ga); })(); </script> </div> </body> </html>
About
A Graphical Terminal Interface that extends xterm by adding GUI-like features and session sharing
Resources
License
Unknown, Unknown licenses found
Licenses found
Unknown
LICENSE.txt
Unknown
COPYING
Stars
Watchers
Forks
Packages 0
No packages published