terminator/doc/manual/_build/html/gettinginvolved.html

870 lines
47 KiB
HTML

<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Getting involved &mdash; Terminator 1.0 alpha documentation</title>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="top" title="Terminator 1.0 alpha documentation" href="index.html"/>
<link rel="prev" title="Frequently Asked Questions" href="faq.html"/>
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-nav-search">
<a href="index.html" class="icon icon-home"> Terminator
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="licensing.html">Licensing</a></li>
<li class="toctree-l1"><a class="reference internal" href="history.html">Document history</a></li>
<li class="toctree-l1"><a class="reference internal" href="gettingstarted.html">Getting Started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html#the-context-menu">The Context Menu</a></li>
<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html#navigating-around">Navigating around</a><ul>
<li class="toctree-l3"><a class="reference internal" href="gettingstarted.html#click-able-items">Click-able items</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html#changing-the-current-layout">Changing the current layout</a><ul>
<li class="toctree-l3"><a class="reference internal" href="gettingstarted.html#using-the-splitters">Using the splitters</a></li>
<li class="toctree-l3"><a class="reference internal" href="gettingstarted.html#dragging-and-dropping-a-terminal">Dragging and dropping a terminal</a></li>
<li class="toctree-l3"><a class="reference internal" href="gettingstarted.html#using-the-keyboard">Using the keyboard</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html#resetting-the-terminal">Resetting the terminal</a></li>
<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html#the-scrollbar-and-scrollback-buffer">The scrollbar and scrollback buffer</a></li>
<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html#search-the-buffer">Search the buffer</a></li>
<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html#zooming-the-terminal">Zooming the terminal</a></li>
<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html#setting-titles">Setting Titles</a></li>
<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html#insert-terminal-number">Insert terminal number</a></li>
<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html#next-prev-profile">Next/Prev profile</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="preferences.html">Preferences Window</a><ul>
<li class="toctree-l2"><a class="reference internal" href="preferences.html#global">Global</a><ul>
<li class="toctree-l3"><a class="reference internal" href="preferences.html#behaviour">Behaviour</a></li>
<li class="toctree-l3"><a class="reference internal" href="preferences.html#appearance">Appearance</a></li>
<li class="toctree-l3"><a class="reference internal" href="preferences.html#terminal-titlebar">Terminal Titlebar</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="preferences.html#profiles">Profiles</a><ul>
<li class="toctree-l3"><a class="reference internal" href="preferences.html#general">General</a><ul>
<li class="toctree-l4"><a class="reference internal" href="preferences.html#cursor">Cursor</a></li>
<li class="toctree-l4"><a class="reference internal" href="preferences.html#terminal-bell">Terminal bell</a></li>
<li class="toctree-l4"><a class="reference internal" href="preferences.html#not-in-terminator">Not in Terminator</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="preferences.html#command">Command</a><ul>
<li class="toctree-l4"><a class="reference internal" href="preferences.html#id1">Not in Terminator</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="preferences.html#colours">Colours</a><ul>
<li class="toctree-l4"><a class="reference internal" href="preferences.html#foreground-and-background">Foreground and Background</a></li>
<li class="toctree-l4"><a class="reference internal" href="preferences.html#palette">Palette</a></li>
<li class="toctree-l4"><a class="reference internal" href="preferences.html#id2">Not in Terminator</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="preferences.html#background">Background</a></li>
<li class="toctree-l3"><a class="reference internal" href="preferences.html#scrolling">Scrolling</a></li>
<li class="toctree-l3"><a class="reference internal" href="preferences.html#compatibility">Compatibility</a><ul>
<li class="toctree-l4"><a class="reference internal" href="preferences.html#encoding">Encoding</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="preferences.html#layouts">Layouts</a></li>
<li class="toctree-l2"><a class="reference internal" href="preferences.html#keybindings">Keybindings</a></li>
<li class="toctree-l2"><a class="reference internal" href="preferences.html#plugins">Plugins</a></li>
<li class="toctree-l2"><a class="reference internal" href="preferences.html#about">About</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="layouts.html">Layouts and the Layout Launcher</a><ul>
<li class="toctree-l2"><a class="reference internal" href="layouts.html#the-layout-launcher">The Layout Launcher</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="grouping.html">The Grouping Menu</a><ul>
<li class="toctree-l2"><a class="reference internal" href="grouping.html#manipulating-terminal-groups">Manipulating terminal groups</a></li>
<li class="toctree-l2"><a class="reference internal" href="grouping.html#broadcasting-input-to-multiple-terminals">Broadcasting input to multiple terminals</a></li>
<li class="toctree-l2"><a class="reference internal" href="grouping.html#insert-terminal-number">Insert terminal number</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="plugins.html">Plugins</a><ul>
<li class="toctree-l2"><a class="reference internal" href="plugins.html#included-plugins">Included plugins</a><ul>
<li class="toctree-l3"><a class="reference internal" href="plugins.html#activity-watch">Activity Watch</a></li>
<li class="toctree-l3"><a class="reference internal" href="plugins.html#apt-url-handler">APT URL Handler</a></li>
<li class="toctree-l3"><a class="reference internal" href="plugins.html#custom-commands-menu">Custom Commands Menu</a></li>
<li class="toctree-l3"><a class="reference internal" href="plugins.html#inactivity-watch">Inactivity Watch</a></li>
<li class="toctree-l3"><a class="reference internal" href="plugins.html#launchpad-bug-url-handler">Launchpad Bug URL Handler</a></li>
<li class="toctree-l3"><a class="reference internal" href="plugins.html#launchpad-code-url-handler">Launchpad Code URL Handler</a></li>
<li class="toctree-l3"><a class="reference internal" href="plugins.html#logger">Logger</a></li>
<li class="toctree-l3"><a class="reference internal" href="plugins.html#maven-plugin-url-handler">Maven Plugin URL Handler</a></li>
<li class="toctree-l3"><a class="reference internal" href="plugins.html#terminal-shot">Terminal Shot</a></li>
<li class="toctree-l3"><a class="reference internal" href="plugins.html#test-plugin">Test Plugin</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="plugins.html#third-party-plugins">Third party plugins</a></li>
<li class="toctree-l2"><a class="reference internal" href="plugins.html#installing-a-plugin">Installing a plugin</a></li>
<li class="toctree-l2"><a class="reference internal" href="plugins.html#creating-your-own-plugins">Creating your own plugins</a><ul>
<li class="toctree-l3"><a class="reference internal" href="plugins.html#the-basics-of-a-plugin">The basics of a plugin</a></li>
<li class="toctree-l3"><a class="reference internal" href="plugins.html#url-handlers">URL Handlers</a></li>
<li class="toctree-l3"><a class="reference internal" href="plugins.html#context-menu-items">Context menu items</a></li>
<li class="toctree-l3"><a class="reference internal" href="plugins.html#wrap-up">Wrap up</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="advancedusage.html">Advanced Usage</a><ul>
<li class="toctree-l2"><a class="reference internal" href="advancedusage.html#command-line-options">Command line options</a><ul>
<li class="toctree-l3"><a class="reference internal" href="advancedusage.html#general-options">General options</a></li>
<li class="toctree-l3"><a class="reference internal" href="advancedusage.html#window-options">Window options</a></li>
<li class="toctree-l3"><a class="reference internal" href="advancedusage.html#shell-options">Shell options</a></li>
<li class="toctree-l3"><a class="reference internal" href="advancedusage.html#layout-options">Layout options</a></li>
<li class="toctree-l3"><a class="reference internal" href="advancedusage.html#custom-window-manager-options">Custom Window Manager options</a></li>
<li class="toctree-l3"><a class="reference internal" href="advancedusage.html#debugging-options">Debugging options</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="advancedusage.html#the-config-file">The Config file</a></li>
<li class="toctree-l2"><a class="reference internal" href="advancedusage.html#debugging">Debugging</a></li>
<li class="toctree-l2"><a class="reference internal" href="advancedusage.html#dbus">DBus</a></li>
<li class="toctree-l2"><a class="reference internal" href="advancedusage.html#remotinator">Remotinator</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">Frequently Asked Questions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="faq.html#why">Why...</a><ul>
<li class="toctree-l3"><a class="reference internal" href="faq.html#is-there-another-terminal-program-called-terminator">...is there another terminal program called Terminator?</a></li>
<li class="toctree-l3"><a class="reference internal" href="faq.html#write-in-python-it-s-slow-bloated-bad">...write in Python? It&#8217;s slow/bloated/bad?</a><ul>
<li class="toctree-l4"><a class="reference internal" href="faq.html#performance">Performance</a></li>
<li class="toctree-l4"><a class="reference internal" href="faq.html#memory-use-the-dumb-way">Memory use - The dumb way</a></li>
<li class="toctree-l4"><a class="reference internal" href="faq.html#memory-use-the-sensible-way">Memory use - The sensible way</a></li>
<li class="toctree-l4"><a class="reference internal" href="faq.html#python-sucks">&#8220;Python sucks!&#8221;</a></li>
<li class="toctree-l4"><a class="reference internal" href="faq.html#in-summary">In summary</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="faq.html#how-do-i">How do I...</a><ul>
<li class="toctree-l3"><a class="reference internal" href="faq.html#make-terminator-work-like-quake-style-terminals">...make Terminator work like Quake style terminals?</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1 current"><a class="current reference internal" href="">Getting involved</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#translations">Translations</a></li>
<li class="toctree-l2"><a class="reference internal" href="#improve-icons-artwork">Improve icons/artwork</a></li>
<li class="toctree-l2"><a class="reference internal" href="#terminator-action-shots">Terminator action shots</a></li>
<li class="toctree-l2"><a class="reference internal" href="#manual-updates">Manual updates</a></li>
<li class="toctree-l2"><a class="reference internal" href="#testing">Testing</a></li>
<li class="toctree-l2"><a class="reference internal" href="#bugs">Bugs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#bug-handling">Bug handling</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#initial-new">Initial/New</a></li>
<li class="toctree-l4"><a class="reference internal" href="#investigation">Investigation</a></li>
<li class="toctree-l4"><a class="reference internal" href="#acceptance">Acceptance</a></li>
<li class="toctree-l4"><a class="reference internal" href="#resolved">Resolved</a></li>
<li class="toctree-l4"><a class="reference internal" href="#available">Available</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#plugins">Plugins</a></li>
<li class="toctree-l2"><a class="reference internal" href="#main-application-development">Main Application Development</a></li>
<li class="toctree-l2"><a class="reference internal" href="#gtk3-port">GTK3 Port</a></li>
<li class="toctree-l2"><a class="reference internal" href="#terminator-api-docs">Terminator API Docs</a></li>
<li class="toctree-l2"><a class="reference internal" href="#other-docs-for-developers">Other Docs for Developers</a></li>
</ul>
</li>
</ul>
</div>
&nbsp;
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Terminator</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Getting involved</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/gettinginvolved.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document">
<img alt="Saefty first when breaking out the power tools." class="align-right" src="_images/icon_gettinginvolved.png" />
<div class="section" id="getting-involved">
<h1>Getting involved<a class="headerlink" href="#getting-involved" title="Permalink to this headline"></a></h1>
<p>There are many ways to help out, and they don&#8217;t all involve coding.</p>
<div class="section" id="translations">
<h2>Translations<a class="headerlink" href="#translations" title="Permalink to this headline"></a></h2>
<p>Sprechen Sie Deutsch?</p>
<p>Awesome! I&#8217;ve been getting my head around the whole translation
bit (English monoglot I&#8217;m afraid), and as a result there has been
a lot of churn in the translations. So what are you waiting for?</p>
<p>Speak some other language? Take a look at
<a class="reference external" href="https://translations.launchpad.net/terminator">https://translations.launchpad.net/terminator</a> because you might
just be the &lt;insert language here&gt; speaker that we&#8217;re looking for.</p>
</div>
<div class="section" id="improve-icons-artwork">
<h2>Improve icons/artwork<a class="headerlink" href="#improve-icons-artwork" title="Permalink to this headline"></a></h2>
<p>OK, so while the main icon contributed by Cory Kontros is really
good, my hacks of it are... not so good. I&#8217;m no artist, but I do
appreciate them. So if you think you could apply some polish and
a cohesive design to this manuals page header images, please, give
it a go. It may only be to take the existing icon and to make it
suck less.</p>
<p>The only thing I would ask is that you maintain the main icon as
a base like I have done.</p>
</div>
<div class="section" id="terminator-action-shots">
<h2>Terminator action shots<a class="headerlink" href="#terminator-action-shots" title="Permalink to this headline"></a></h2>
<p>This one&#8217;s just for &#8220;PR&#8221; purposes. I want to see famous/awesome
people kicking ass <em>and</em> chewing bubble-gum with Terminator in the
mix.</p>
<p>If you spot it in a TV show, movie, or a news article I want to
know. Maybe you&#8217;re even the famous/awesome person, in which case
drop me a note.</p>
<p>It will warm the cockles of my heart to know that Terminator made
life easier for people who do the really important stuff like
discovering new particles (CERN? Hello?), boldly going (NASA? Come
in Houston), or wrangle 2 more frames per second from Half-Life 3
(Valve? Confirmed?)</p>
<p>Here&#8217;s the ones I&#8217;ve spotted and noted (I&#8217;ve seen quite a few others
previously, but never thought to note them)</p>
<ul>
<li><dl class="first docutils">
<dt><a class="reference external" href="http://www.theverge.com/2015/3/3/8136405/mind-maze-mind-leap-thought-reading-virtual-reality-headset">MindMaze</a> - VR / mind-reading.</dt>
<dd><p class="first last">Visible in the background of the video, and in an image lower down
the page. (The Verge)</p>
</dd>
</dl>
</li>
</ul>
</div>
<div class="section" id="manual-updates">
<h2>Manual updates<a class="headerlink" href="#manual-updates" title="Permalink to this headline"></a></h2>
<p>This manual is a new endeavour to fully document all the nooks and
crannies of Terminator. As such, there may be things that are missing,
incorrect, not explained clearly, or need expanding.</p>
<p>Suggestions, or updates are welcome.</p>
<p>I had a little exposure at work to Sphinx, so I thought I&#8217;d dig in
a bit deeper and learn a bit about it. So far I&#8217;m happy enough, so
till further notice this manual will remain in this format.</p>
<p>If you&#8217;re feeling like a loquacious polyglot you could attempt to
translate the whole manual. So far I haven&#8217;t tested it, but in
principle, just do a checkout of the trunk, and do a full copy of
the <code class="docutils literal"><span class="pre">doc/manual</span></code> folder to <code class="docutils literal"><span class="pre">doc/manual_XXXX</span></code> where XXXX is the
i18n language code. This is usually just the two or three letters of
the language code, but sometimes has the region too... Or something
else entirely in a couple of cases. A couple of examples:</p>
<div class="highlight-python"><div class="highlight"><pre>pt - Portugese
pt_BR - Brazilian Portugese
ca - Catalan
ca@valencia - Catalan (Dialect specific to Valencia?)
</pre></div>
</div>
<p>Then just translate away, and take new screen grabs to replace the
British English ones I&#8217;ve done. If someone was to make a serious
effort to translate the manual, I&#8217;m sure we can get it included.</p>
<p>The Help shortcut checks the LANGUAGE environment variable, and tries
those folders in order, before falling back gracefully to the default
manual, which is British English anyway:</p>
<div class="highlight-python"><div class="highlight"><pre>LANGUAGE=en_GB:en
</pre></div>
</div>
<p>So this is going to try:</p>
<ul class="simple">
<li><em>html_en_GB</em> - the non-existent British English folder</li>
<li><em>html_en</em> - the non-existent generic English folder</li>
<li><em>html</em> - the default document that happens to be in British English</li>
</ul>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Although the source is in a folder beginning with <code class="docutils literal"><span class="pre">manual</span></code>,
that gets replaced with <code class="docutils literal"><span class="pre">html</span></code> for installation.</p>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">If there are any Americans offended by correct spelling,
they are more than welcome to create an Americanised
version, and I&#8217;ll relegate it to the en_US folder. The
default will remain British English.</p>
</div>
<p>In order to create the html for the manual, you must have the
sphinx_rtd_theme package installed. This does not appear to be
packaged for Ubuntu 14.04 LTS as far as I can tell. This means you
must install it using the pip tool. This may need installing on your
system too with:</p>
<div class="highlight-python"><div class="highlight"><pre>sudo apt-get install python-pip
</pre></div>
</div>
<p>Once that is installed you can install the theme with:</p>
<div class="highlight-python"><div class="highlight"><pre>sudo pip install sphinx-rtd-theme
</pre></div>
</div>
<p>This will take care of installing the theme and it&#8217;s dependencies.</p>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">On Ubuntu this also installed a newer version of <em>Sphinx</em>
under the <code class="docutils literal"><span class="pre">/usr/local</span></code> folder. This caused a bit of
confusion at one point, so be aware.</p>
</div>
</div>
<div class="section" id="testing">
<h2>Testing<a class="headerlink" href="#testing" title="Permalink to this headline"></a></h2>
<p>Just use it, explore the features, and complain when they don&#8217;t work.</p>
<p>We actually have quite a lots of outstanding issues, and in many
cases I can&#8217;t reproduce due to either lack of info, differences in
environment, lack of information, or because the bug is so old the
original raiser has moved on and not available for questions.</p>
<p>I&#8217;m particularly interested in cases where I can&#8217;t even see that
something is an issue, such as:</p>
<ul class="simple">
<li><em>Right-to-Left</em> - I can force Terminator to Arabic, and everything
flips around, but I have no idea if it looks &#8220;right&#8221; to a native
speaker. Frankly it just looks <em>weird!</em></li>
<li><em>HighContrast</em> - Again, I can switch to it, but perhaps I&#8217;m not
appreciating the needs of that group.</li>
<li><em>Accessibility</em> - People using only a keyboard, or only a mouse,
on-screen keyboards, text-to-speech, speech-to-text, and so on.</li>
</ul>
</div>
<div class="section" id="bugs">
<h2>Bugs<a class="headerlink" href="#bugs" title="Permalink to this headline"></a></h2>
<p>Bugs (and feature requests) are raised and dealt with in the Launchpad
<a class="reference external" href="https://bugs.launchpad.net/terminator">bugs</a> page.</p>
<ul class="simple">
<li><strong>Fixing</strong> - OK, so yeah, this is coding.</li>
<li><strong>Reproduce and improving</strong> - Sometimes bugs are lacking info to
reproduce, or my system is too different. Or perhaps the original
poster has moved on because we haven&#8217;t fixed their pet peeve fast
enough.</li>
<li><strong>Triaging</strong> - It&#8217;s one of the less glamorous jobs, but someone&#8217;s
gotta do it. Shepherd bugs to the point where it has a priority,
a milestone, reproduction steps, confirmation, submitted patches
validated, and so on.</li>
<li><strong>Raising</strong> - If you have searched and cannot find your bug, you
can raise a new one.</li>
</ul>
<p>Feature requests are initially raised as bugs, and if it passes the
rather undefined criteria, it will be marked as a <strong>wishlist</strong> item.</p>
<div class="section" id="bug-handling">
<h3>Bug handling<a class="headerlink" href="#bug-handling" title="Permalink to this headline"></a></h3>
<p>I have had one person (possibly others) who are hesitant to use the
status&#8217; because they&#8217;ve been &#8220;told off&#8221; by the developers of other
projects, and people/projects are often different in how they want to
handle bugs. So, with that in mind, let me present my idea of how a
bug should be handled. First a pretty picture:</p>
<img alt="_images/launchpad_bugflow.png" src="_images/launchpad_bugflow.png" />
<p>So, the darker blue states are the ones available in Launchpad that
can be manually set. The two marked with a red outline require bug
supervisor role to set, which means a member of the Terminator team.
The pale blue states are ones that I personally feel should be there,
but are missing. I&#8217;ll explain my intention with those in the
appropriate sections below. The grey state is set automatically only,
and cannot be set by anyone.</p>
<div class="section" id="initial-new">
<h4>Initial/New<a class="headerlink" href="#initial-new" title="Permalink to this headline"></a></h4>
<p>When you the user create a bug it goes into <strong>New</strong>. If another user
clicks the <em>This bug affects you</em> link, this gets moved to <strong>Confirmed</strong>.</p>
</div>
<div class="section" id="investigation">
<h4>Investigation<a class="headerlink" href="#investigation" title="Permalink to this headline"></a></h4>
<p>If I (or indeed someone else) go to a <em>New</em> or <em>Confirmed</em> bug, and
are unable to reproduce it then it will be marked <strong>Incomplete</strong>, and
someone (preferably the original raiser, but it can be someone else
affected) needs to revisit and provide the requested additional info.
Ideally when that is added there would be a <em>New Info</em> (or similar)
state that the user would set the bug to, and then the dashed line
would be taken.</p>
<p>Because we don&#8217;t have this state, we &#8220;skip&#8221; straight through and abuse
the <strong>Confirmed</strong> state. Set the bug (back) to <strong>Confirmed</strong>, and
assign the official tag <em>new-info</em>. Once the ticket is reviewed the
tag will be removed, and a new state assigned, possibly even
<em>Incomplete</em> again.</p>
<p>Note that I am aware of the two <em>Incomplete</em> options for with and
without response, but the way it works is unclear, and I can&#8217;t switch
between the two myself, and it is not clear when Launchpad switches
it. So, I&#8217;ll be ignoring them and treating <em>Incomplete</em> as a single
state.</p>
</div>
<div class="section" id="acceptance">
<h4>Acceptance<a class="headerlink" href="#acceptance" title="Permalink to this headline"></a></h4>
<p>At this point the bug should provide enough information to be
reproducible. Only a supervisor can set an issue to <strong>Triaged</strong>. This
state says, &#8220;Yes, the information provided either permits me to
reproduce myself, or see what went wrong from provided logs, config,
etc.&#8221; Typically they go here when I don&#8217;t have the time to start
working on an immediate fix.</p>
<p>Alternatively I (or anyone) could start working on a bug. Ideally the
issue should be set to <strong>In Progress</strong>, and assigned to the person
picking it up. That way, two people don&#8217;t work on the same issue.</p>
<p>Sometimes, for trivial or interesting bugs, they might get looked at
and fixed so fast that they skip all <em>Acceptance</em> categories, and go
straight to one of the <em>Resolved</em> states.</p>
</div>
<div class="section" id="resolved">
<h4>Resolved<a class="headerlink" href="#resolved" title="Permalink to this headline"></a></h4>
<p><strong>Fix Committed</strong> is for when a fix is pushed to the main Launchpad
bazaar repository and typically I do this. If you create a contribution
via a branch, and commit to your branch, do not set to this yourself.
Instead associate the bug with the branch, and request a merge. When
I do the merge I will also set the bug to <em>Fix Committed</em>.</p>
<p>An <strong>Invalid</strong> bug is usually because the user didn&#8217;t understand
something, or it is in fact a support request.</p>
<p>Only a bug supervisor can set an issue to <strong>Won&#8217;t Fix</strong>. It is the
supervisors way of ending the discussion when it is felt that a bug
does not fit the projects plans, but someone can&#8217;t <a class="reference external" href="https://www.youtube.com/watch?v=L0MK7qz13bU#t=1m05s">let it go</a>.</p>
<p><strong>Opinion</strong> is typically when the user and I have a different
expectation about behaviour or a new feature, or I think that something
being proposed would actually be a negative for Terminator. Unlike
<em>Won&#8217;t Fix</em>, this can still be discussed within the ticket.</p>
<p><strong>Not Responsible</strong> is our second missing virtual state. For me this
is when, for example, an issue actually resides in <em>libvte</em>, or <em>GTK</em>.
Again, there is a new official tag <em>not-responsible</em>, and the bug
will actually end up set to <em>Invalid</em>.</p>
<p>The final virtual state is <strong>No Action</strong>, which is for various reasons.
Sometimes other work has resolved an issue already, or the user was
using an old version, and the fix is already in trunk or released.
Again there is a new official tag <em>no-action</em>. These will then be put
in one of the following: <em>Invalid</em>, <em>Fix Committed</em>, or <em>Fix Released</em>,
depending on circumstance.</p>
<p>Our last Resolved state is the automatically set <strong>Expired</strong> one.</p>
</div>
<div class="section" id="available">
<h4>Available<a class="headerlink" href="#available" title="Permalink to this headline"></a></h4>
<p>The last state is <strong>Fix Released</strong>, indicating that there has been a
release containing a fix to the issue.</p>
<p>Of course this flow and states are not set in stone. A bug can be
brought out of <em>Expired</em> if necessary. Or back from <em>In Progress</em> to
<em>Confirmed</em> or <em>Triaged</em> if the assignee decides to stop working on
the bug for some reason.</p>
</div>
</div>
</div>
<div class="section" id="plugins">
<h2>Plugins<a class="headerlink" href="#plugins" title="Permalink to this headline"></a></h2>
<p>Ahem... Yeah... More coding...</p>
<p>Some <a class="reference internal" href="plugins.html#plugins"><span>Plugins</span></a> may have room for improvement, or perhaps you have
an idea for a neat plugin no-one else has done.</p>
</div>
<div class="section" id="main-application-development">
<h2>Main Application Development<a class="headerlink" href="#main-application-development" title="Permalink to this headline"></a></h2>
<p>Oh come on... Coding? Again!</p>
<p>I see lots of people say how Terminator is really good, and it is,
but like anything, it could be better!</p>
<p>To give an idea, as of October 2015, revision 1663, there are 86
<a class="reference external" href="https://bugs.launchpad.net/terminator/+bugs?field.searchtext=&amp;orderby=-importance&amp;search=Search&amp;field.status%3Alist=NEW&amp;field.status%3Alist=CONFIRMED&amp;field.status%3Alist=TRIAGED&amp;field.status%3Alist=INPROGRESS&amp;field.status%3Alist=INCOMPLETE_WITH_RESPONSE&amp;field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE&amp;field.importance%3Alist=WISHLIST&amp;assignee_option=any&amp;field.assignee=&amp;field.bug_reporter=&amp;field.bug_commenter=&amp;field.subscriber=&amp;field.structural_subscriber=&amp;field.tag=&amp;field.tags_combinator=ANY&amp;field.has_cve.used=&amp;field.omit_dupes.used=&amp;field.omit_dupes=on&amp;field.affects_me.used=&amp;field.has_patch.used=&amp;field.has_branches.used=&amp;field.has_branches=on&amp;field.has_no_branches.used=&amp;field.has_no_branches=on&amp;field.has_blueprints.used=&amp;field.has_blueprints=on&amp;field.has_no_blueprints.used=&amp;field.has_no_blueprints=on">wishlist items</a>.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Just because an item is marked as wishlist, it doesn&#8217;t
mean that a great deal of thought has been put into the
appropriateness of the idea on my side. It may be impossible,
or not a good fit, or just plain bat-sh!t crazy. If you
want to pick up a wishlist item that looks like a lot of
work (especially if it makes fundamental changes to the
Terminator ethos) it&#8217;s probably best to check first that
your approach is good, and has a realistic chance of being
merged.</p>
</div>
<p>Some of these wishlist items are also in my own text file of &#8220;Things
to do&#8221; / &#8220;Big bag of crazy&#8221;, which as of October 2015, revision 1663,
looks like this:</p>
<div class="highlight-python"><div class="highlight"><pre>Enhancements which may or may not have a wishlist item
======================================================
Completely new features
Add libunity quicklist of saved layouts
https://wiki.ubuntu.com/Unity/LauncherAPI#Python_Example
http://www.techques.com/question/24-64436/Refreshing-of-Dynamic-Quicklist-doesn%27t-work-after-initialization
http://people.canonical.com/~dpm/api/devel/GIR/python/Unity-3.0.html
Possibly use the progress bar and or counter for something too.
Add an appindicator menu for launching sessions.
If we can figure out how to do arbritrary highlighting, perhaps we can get a &quot;highlight differences&quot; mode like used to exist in ClusTerm.
This could also be limted to highlighting diffs between those in the same group.
Synchronised scroll based on groups
Triggers (actions) based on regex for received text
A &quot;swap&quot; mode for drag and drop
Encrypted dumping/logging to disk
Search
Might be able to missuse the ClusTerm method of overwriting to &quot;highlight&quot; (gtk2 only)
Layouts
Layout Launcher
Could bind the shortcut as a global toggle to hide show
Could save
window position/size
hidden status
always on top
pin to visible workspace
Layout needs to save/load more settings
Per layout?
Group mode status (all, group, off)
Split to this group
Autoclean groups
Per window
always on top
pin to visible workspace
Per tab
Per terminal
Store the custom command and working directory when we load a layout, so making small changes and saving doesn&#39;t lose everything.
It could be possible to detect the current command and working directory with psutil, but could be tricky. (i.e. do we ignore bash?)
A per layout &quot;save on exit&quot; option to always remember last setup/positions etc. Probably requires above to be done first.
A per layout shortcut launch hotkey
Missing shortcuts:
Just shortcut:
Context menu (in addition to Windows menu button - not always available on all keyboards)
Group menu
Open preferences
Change tab text (#1054300-patch), titlebar text, group name
Toggle titlebar visibility
Equalise the splitters (siblings/siblings+children/siblings+parents,all)
Zoom +receiver in/out/reset
Zoom all in/out/reset
New code:
Open a shortcut help overlay (Ctrl-F1?)
Insert tab text, titlebar text, group name value into terminal(s)
Last terminal / tab / window(again to jump back to original) #1440049
Limit broadcast group/all to current tab / window (toggle)
Broadcast temporarily off when maximised or zoomed to single term (toggle)
Titlebar
Add large action/status icons for when titlebar is bigger.
Improve the look/spacing of the titlebar, i.e. the spacing around/between elements
Tabs
right-click menu replicating GNOME-Terminals (move left/right, close, rename)
Menus
Add accelerators (i.e. &quot;Shift+Ctr+O&quot;) might look too cluttered.
Preferences
Profiles
Add preselection to the profile tab
Layouts
Have changing widgets depending on what is selected in the tree
Terminal title editable
Button in prefs to duplicate a layout
Ordering in list
Working directory - add dialog too, see http://stackoverflow.com/questions/10868167/make-filechooserdialog-allow-user-to-select-a-folder-directory
Keybindings
Add a list of the default keybindings to the Preferences -&gt; Keybindings window?
Option for close_button_on_tab in prefs. (needs tab right-click menu first
Option to rebalance siblings on a split (don&#39;t think children or ancestors make sense)
Figure out how to get the tree view to jump to selected row for prefseditor
Plugins
Give plugins ability to register shortcuts
Custom Commands is blocking, perhaps make non-blocking
Drag and Drop
LP#0768520: Terminal without target opens new window
LP#1471009: Tab to different/new window depending on target
Major architectural
Improve DBus interface, add coordination between sessions, i.e.:
multiple DBus ports? register them with a master DBus session, be able to query these, etc
be able to drive them more with command line commands, and not just from within own shell
Remotinator improvements
Abstract out the session/layout allowing multiple logical layouts in the same process to reduce resource used
This is a big piece of work, as a lot of the Terminator class would need seperating out.
Hide window should find the last focussed window and hide that. Second hit unhides and focusses it
Add a power hide to hide all of shortcut bound instances windows
Use the dbus if available to hide the current active window, then unhide it on second shortcut press
If the dbus is available:
The hide will go to the focussed instance, instead of the first to grab the shortcut
Add a super power hide to hide all Terminator windows
In both cases a second shortcut unhides whatever was hidden
Split with command / Inherit command/workdir/groups etc
Somehow make Layout Launcher, Preferences, &amp; poss. Custom Commands singleton/borg (possibly use dbus)
When in zoomed/maximised mode
Perhaps the menu could contain a quick switch sub menu, rather than having to Restore, right-click, maximise
Shortcuts for next/prev,up/down/left/right, etc. How should they behave
All non main windows to be changed to glade files
For me the two different sets of next/prev shortcuts are a bit of a mystery.
Let window title = terminal titlebar - perhaps other combos. Some kind of %T %G %W substitution?
</pre></div>
</div>
<p>So as you can see, still lots of room for improvements, and plenty of
ideas if you are trying to find small starter tasks.</p>
</div>
<div class="section" id="gtk3-port">
<h2>GTK3 Port<a class="headerlink" href="#gtk3-port" title="Permalink to this headline"></a></h2>
<p>Last coding one, I promise!</p>
<p>After some sterling work by Egmont Koblinger, one of the VTE
developers, he came up with a very large patch for rudimentary GTK3
support. A number of things were incomplete or broken, but it got it
far enough along that it was no longer an insurmountable cliff face.</p>
<p>Since then I have resolved to port fixes and features between the
two versions. As I do this I explore and find outstanding issues with
the port, and it is slowly becoming more usable.</p>
<p>Eventually the GTK2 version of Terminator will go into a
deprecated/maintenance mode. Unfortunately due to needing a relatively
new version of libvte, that switch will not be in the immediate
future. I&#8217;m running trusty (14.04 LTS) and even there I had to build
libvte 0.38 from source. This makes the GTK3 out of reach for the
&#8220;Joe Bloggs&#8221; of the world. I could try and maintain my own PPA of the
component, but that doesn&#8217;t help Fedora/OpenSUSE/Arch etc. users.
Even getting &#8220;Joe Bloggs&#8221; to add a PPA can be a struggle.</p>
<p>And for a real nightmare, I tried to compile the 0.40 version and the
thing lit up with a smorgasbord of items where my installed packages
were not new enough.</p>
<p>If you are feeling brave and adventurous, there are some instructions
in this <a class="reference external" href="http://gnometerminator.blogspot.com/2015/09/so-you-want-to-try-terminator-gtk3.html">blog post</a> that will help you get the GTK3 version running.
Assistance knocking off the remaining rough edges will be very much
appreciated.</p>
<p>For the record, as of October 2015, with the <a class="reference external" href="https://code.launchpad.net/~gnome-terminator/terminator/gtk3">gtk3 branch</a> at revision
1612, these are the outstanding items:</p>
<div class="highlight-python"><div class="highlight"><pre>Outstanding GTK3 port tasks/items/reviews etc.
==============================================
Outstanding trunk revisions: 1634 &amp; 1637, 1647 (assuming all is good), 1663
Need to go through all the Gtk.STOCK_* items and remove. Deprecated in 3.10. Very low priority as won&#39;t be problem till 4.0.
Homogeneous_tabbar removed? Why?
terminal.py:on_vte_size_allocate, check for self.vte.window missing. Consequences?
terminal.py:understand diff in args between old fork and new spawn of bash. Consequences?
VERIFY(8)/FIXME(6) FOR GTK3 items to be dealt with
Outstanding GTK3 port tasks/items/reviews etc. for future release
=================================================================
vte 0.40+
Reimplement/restore the word_chars stuff.
</pre></div>
</div>
<p>Once the GTK3 port is done there is also a long overdue port to
Python3, especially in light of some distributions trying to
eliminate Python2 from the base installs. Yes, Python2 will be with
us for a long time yet, but this should serve as a warning.</p>
<p>I even have some new items specifically for the GTK3 branch which I&#8217;m
still thinking about, but I&#8217;m not ready to declare. I suspect I might
get a bit of unwanted pressure if I were to mention these, so for now
they are under NDA. 😃</p>
</div>
<div class="section" id="terminator-api-docs">
<h2>Terminator API Docs<a class="headerlink" href="#terminator-api-docs" title="Permalink to this headline"></a></h2>
<p>Strictly speaking this isn&#8217;t an API as such, because it is just using
sphinx-apidoc over the Terminator code base. It&#8217;s perhaps helpful to
have this as a document that can be browsed.</p>
<p><a class="reference external" href="../apidoc/index.html">Terminator API docs</a></p>
<p>As it stands, this is rather incomplete, or too terse with no examples
given. If you look at the terminatorlib.configobj package, you will
see fairly extensive documentation, along with walk-throughs, etc. This
particular package was written elsewhere, and brought into Terminator
to provide configuration handling.</p>
<p>There are also some aspects of the way this document builds that I&#8217;m
not too happy about. The seemingly unnecessary <code class="docutils literal"><span class="pre">terminatorlib</span></code>
root-node in the side bar; the lack of class/method links in the
sidebar; all <code class="docutils literal"><span class="pre">.py</span></code> files on the same page (this can be changed, but
then even less is displayed in the sidebar.) If you can help, join
the A-Team... Or better yet, send me some changes that fix this.</p>
</div>
<div class="section" id="other-docs-for-developers">
<h2>Other Docs for Developers<a class="headerlink" href="#other-docs-for-developers" title="Permalink to this headline"></a></h2>
<p>Here is a list of some useful sets of documentation:</p>
<table border="1" class="docutils">
<colgroup>
<col width="29%" />
<col width="71%" />
</colgroup>
<tbody valign="top">
<tr class="row-odd"><td colspan="2"><strong>General</strong></td>
</tr>
<tr class="row-even"><td>Python</td>
<td><a class="reference external" href="https://docs.python.org/release/2.7/index.html">https://docs.python.org/release/2.7/index.html</a></td>
</tr>
<tr class="row-odd"><td>GNOME Dev. Center</td>
<td><a class="reference external" href="https://developer.gnome.org/">https://developer.gnome.org/</a></td>
</tr>
<tr class="row-even"><td>Bazaar DVCS</td>
<td><a class="reference external" href="http://doc.bazaar.canonical.com/en/">http://doc.bazaar.canonical.com/en/</a></td>
</tr>
<tr class="row-odd"><td>Launchpad Help</td>
<td><a class="reference external" href="https://help.launchpad.net/">https://help.launchpad.net/</a></td>
</tr>
<tr class="row-even"><td colspan="2"><strong>GTK 2</strong></td>
</tr>
<tr class="row-odd"><td>PyGTK</td>
<td><a class="reference external" href="https://developer.gnome.org/pygtk/stable/">https://developer.gnome.org/pygtk/stable/</a></td>
</tr>
<tr class="row-even"><td>VTE for GTK 2</td>
<td><a class="reference external" href="https://developer.gnome.org/vte/0.28/">https://developer.gnome.org/vte/0.28/</a></td>
</tr>
<tr class="row-odd"><td colspan="2"><strong>GTK 3</strong></td>
</tr>
<tr class="row-even"><td>GObject Introspection</td>
<td><a class="reference external" href="https://wiki.gnome.org/Projects/GObjectIntrospection">https://wiki.gnome.org/Projects/GObjectIntrospection</a></td>
</tr>
<tr class="row-odd"><td>GObject</td>
<td><a class="reference external" href="https://developer.gnome.org/gobject/stable/">https://developer.gnome.org/gobject/stable/</a></td>
</tr>
<tr class="row-even"><td>PyGObject Introspection</td>
<td><a class="reference external" href="https://wiki.gnome.org/Projects/PyGObject">https://wiki.gnome.org/Projects/PyGObject</a></td>
</tr>
<tr class="row-odd"><td>PyGObject</td>
<td><a class="reference external" href="https://developer.gnome.org/pygobject/stable/">https://developer.gnome.org/pygobject/stable/</a></td>
</tr>
<tr class="row-even"><td>Many PIGO autodocs</td>
<td><a class="reference external" href="http://lazka.github.io/pgi-docs/">http://lazka.github.io/pgi-docs/</a></td>
</tr>
<tr class="row-odd"><td>GDK3 Ref. Manual</td>
<td><a class="reference external" href="https://developer.gnome.org/gdk3/stable/">https://developer.gnome.org/gdk3/stable/</a></td>
</tr>
<tr class="row-even"><td>GTK3 Ref. Manual</td>
<td><a class="reference external" href="https://developer.gnome.org/gtk3/stable/index.html">https://developer.gnome.org/gtk3/stable/index.html</a></td>
</tr>
<tr class="row-odd"><td>Python GTK+ 3 Tutorial</td>
<td><a class="reference external" href="http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html">http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html</a></td>
</tr>
<tr class="row-even"><td>VTE for GTK 3</td>
<td><a class="reference external" href="https://developer.gnome.org/vte/0.38/">https://developer.gnome.org/vte/0.38/</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="faq.html" class="btn btn-neutral" title="Frequently Asked Questions" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2015, Stephen Boddy, licensed under the CC-BY-SA..
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'1.0 alpha',
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>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>