<liclass="toctree-l2"><aclass="reference internal"href="gettingstarted.html#changing-the-current-layout">Changing the current layout</a><ul>
<liclass="toctree-l3"><aclass="reference internal"href="gettingstarted.html#using-the-splitters">Using the splitters</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="gettingstarted.html#dragging-and-dropping-a-terminal">Dragging and dropping a terminal</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="gettingstarted.html#using-the-keyboard">Using the keyboard</a></li>
</ul>
</li>
<liclass="toctree-l2"><aclass="reference internal"href="gettingstarted.html#resetting-the-terminal">Resetting the terminal</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="gettingstarted.html#the-scrollbar-and-scrollback-buffer">The scrollbar and scrollback buffer</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="gettingstarted.html#search-the-buffer">Search the buffer</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="gettingstarted.html#zooming-the-terminal">Zooming the terminal</a></li>
<liclass="toctree-l2"><aclass="reference internal"href="faq.html#how-do-i">How do I...</a><ul>
<liclass="toctree-l3"><aclass="reference internal"href="faq.html#make-terminator-work-like-quake-style-terminals">...make Terminator work like Quake style terminals?</a></li>
<imgalt="I have the POWWWWWWEEEEERRRRRRR!!!!!!"class="align-right"src="_images/icon_plugins.png"/>
<divclass="section"id="plugins">
<spanid="id1"></span><h1>Plugins<aclass="headerlink"href="#plugins"title="Permalink to this headline">¶</a></h1>
<p>Terminator can be expanded using plugins. Additional features can
be created outside of the main application, and added in at runtime.</p>
<p>In theory you should be able to implement fairly powerful plugins,
although so far the included ones we have are fairly small in scope.</p>
<p>The current plugins do not have configuration options in the
<aclass="reference internal"href="preferences.html#prefs-plugins"><span>Plugins</span></a> tab of the <aclass="reference internal"href="preferences.html#preferences"><span>Preferences Window</span></a>. The plugin
architecture was created before I (Steve Boddy) became maintainer,
and so far I haven’t had reason to figure out the detail. I’m not
entirely sure if/how a plugin can add options to the configuration
options in the <aclass="reference internal"href="preferences.html#prefs-plugins"><span>Plugins</span></a> tab. What plugins can definitely
do, because examples are below, is to:</p>
<ulclass="simple">
<li>add menu items to <aclass="reference internal"href="gettingstarted.html#context-menu"><span>The Context Menu</span></a>,</li>
<li>create their own windows,</li>
<li>create handlers for strings that match a pattern.</li>
<pclass="last">Several of the included plugins create <aclass="reference internal"href="gettingstarted.html#clickable-items"><span>Click-able items</span></a> in
the terminal. These are made apparent by underlining the
item when the mouse hovers over it.</p>
</div>
<divclass="section"id="included-plugins">
<h2>Included plugins<aclass="headerlink"href="#included-plugins"title="Permalink to this headline">¶</a></h2>
<p>The following plugins are distributed by default with Terminator.</p>
<divclass="admonition note">
<pclass="first admonition-title">Note</p>
<pclass="last">Unless otherwise stated, the included plugins are under the
<aclass="reference internal"href="licensing.html#licencing"><span>Licensing</span></a> as Terminator, GNU GPL v2.</p>
</div>
<divclass="section"id="activity-watch">
<h3>Activity Watch<aclass="headerlink"href="#activity-watch"title="Permalink to this headline">¶</a></h3>
<p>Adds a menu item, <strong>Watch for activity</strong>, to <aclass="reference internal"href="gettingstarted.html#context-menu"><span>The Context Menu</span></a> which
will create a notification, as seen to the right, when there is output
to the terminal. This is useful when you have a long running command
and wish to know when it has completed, or output an update.</p>
<pclass="last">Which would wait 30 seconds before showing another
notification of activity.</p>
</div>
</div>
<divclass="section"id="apt-url-handler">
<h3>APT URL Handler<aclass="headerlink"href="#apt-url-handler"title="Permalink to this headline">¶</a></h3>
<p>Original Author: Chris Jones</p>
<p>Text matching <codeclass="docutils literal"><spanclass="pre">apt:.*</span></code> will be converted into a click-able item that
when triggered with <codeclass="docutils literal"><spanclass="pre">Ctrl</span></code>+<codeclass="docutils literal"><spanclass="pre">click</span></code> will launch the default
package manager for software on a debian system.</p>
<p><codeclass="docutils literal"><spanclass="pre">right-click</span></code> over the URL will add two entries to <aclass="reference internal"href="gettingstarted.html#context-menu"><span>The Context Menu</span></a>:</p>
<ulclass="simple">
<li><em>Open software manager</em> - Same as <codeclass="docutils literal"><spanclass="pre">Ctrl</span></code>+<codeclass="docutils literal"><spanclass="pre">click</span></code></li>
<li><em>Copy package URI</em> - Just copies the URI to the clipboard</li>
</ul>
</div>
<divclass="section"id="custom-commands-menu">
<h3>Custom Commands Menu<aclass="headerlink"href="#custom-commands-menu"title="Permalink to this headline">¶</a></h3>
<p>Original Author: Chris Jones</p>
<p>Adds a menu item, <strong>Custom Commands</strong>, to <aclass="referenceinternal"href="gettingstarted.html#context-menu"><span>The Context Menu</span></a> which
has a sub-menu containing its own <strong>Preferences</strong> item that launches
the window show below. Below that is a list of user configured
<p>Adds a menu item, <strong>Watch for silence</strong>, to <aclass="reference internal"href="gettingstarted.html#context-menu"><span>The Context Menu</span></a> which
will create a notification, as seen to the right, when a terminal has
been quiet for a given period. This is useful when you have a long
running process that outputs constantly (i.e. compiling a kernel) and
you wish to know when it has ended. This notification will only show
once, unless there is some activity in the terminal after the initial
<h3>Launchpad Bug URL Handler<aclass="headerlink"href="#launchpad-bug-url-handler"title="Permalink to this headline">¶</a></h3>
<p>Original Author: Chris Jones</p>
<p>Text matching <codeclass="docutils literal"><spanclass="pre">lp:</span><spanclass="pre">#12345</span></code> where 12345 is a bug number in launchpad,
will be converted into a click-able item that when triggered with
<codeclass="docutils literal"><spanclass="pre">Ctrl</span></code>+<codeclass="docutils literal"><spanclass="pre">click</span></code> will launch a browser to the bug report in
launchpad.</p>
<p>Additionally the plugin will accept variants where the prefix is in
capitals, i.e. <codeclass="docutils literal"><spanclass="pre">LP</span></code>, and the <codeclass="docutils literal"><spanclass="pre">:</span></code>, white-space, and <codeclass="docutils literal"><spanclass="pre">#</span></code> are
optional.</p>
<p>The item can also be more than one bug number, and each will be opened,
<p><codeclass="docutils literal"><spanclass="pre">Ctrl</span></code>+<codeclass="docutils literal"><spanclass="pre">click</span></code> on this will open four pages; one for each bug
number.</p>
<p><codeclass="docutils literal"><spanclass="pre">right-click</span></code> over the URL will add two entries to <aclass="reference internal"href="gettingstarted.html#context-menu"><span>The Context Menu</span></a>:</p>
<ulclass="simple">
<li><em>Open Launchpad bug</em> - Same as <codeclass="docutils literal"><spanclass="pre">Ctrl</span></code>+<codeclass="docutils literal"><spanclass="pre">click</span></code></li>
<li><em>Copy bug URL</em> - Just copies the URL to the clipboard</li>
<h3>Launchpad Code URL Handler<aclass="headerlink"href="#launchpad-code-url-handler"title="Permalink to this headline">¶</a></h3>
<p>Original Author: Chris Jones</p>
<p>Text matching <codeclass="docutils literal"><spanclass="pre">lp:string</span></code> will be converted into a click-able item
that when triggered with <codeclass="docutils literal"><spanclass="pre">Ctrl</span></code>+<codeclass="docutils literal"><spanclass="pre">click</span></code> will launch a browser
to the page in launchpad, where string is one of the following:</p>
<ulclass="simple">
<li><em>project</em> - i.e. lp:terminator</li>
<li><em>project/series</em> - i.e. lp:terminator/gtk3</li>
<li><em>group/project/branch</em> - i.e. lp:~sparkstar/terminator/terminator</li>
<li><em>group/+junk/branch</em> - i.e. lp:~<yourname>/+junk/terminator</li>
</ul>
<p>Additionally the plugin will accept variants where the prefix is in
capitals, i.e. <codeclass="docutils literal"><spanclass="pre">LP</span></code>.</p>
<p><codeclass="docutils literal"><spanclass="pre">right-click</span></code> over the URL will add two entries to <aclass="reference internal"href="gettingstarted.html#context-menu"><span>The Context Menu</span></a>:</p>
<ulclass="simple">
<li><em>Open Launchpad branch</em> - Same as <codeclass="docutils literal"><spanclass="pre">Ctrl</span></code>+<codeclass="docutils literal"><spanclass="pre">click</span></code></li>
<li><em>Copy branch URL</em> - Just copies the URL to the clipboard</li>
</ul>
</div>
<divclass="section"id="logger">
<h3>Logger<aclass="headerlink"href="#logger"title="Permalink to this headline">¶</a></h3>
<p>Original Author: Sinan Nalkaya</p>
<p>Adds a menu item, <strong>Start Logger</strong>, to <aclass="reference internal"href="gettingstarted.html#context-menu"><span>The Context Menu</span></a> which will
popup a window for selecting a file name to save as. Any content then
written to the terminal will be written to the file too. Once started
the menu item will change to <strong>Stop Logger</strong> which does precisely what
you would expect.</p>
<divclass="admonition warning">
<pclass="first admonition-title">Warning</p>
<pclass="last">There appears to be problems when applications switch
to/from alternate mode (i.e. vi, mc, etc.) The obvious
one is that the alternate screen is not “logged”
although it is not clear how this <em>could</em> be logged. The
second issue is that some of the output after the
alternate screen is not logged. See <aclass="reference external"href="https://bugs.launchpad.net/terminator/+bug/1477386">LP#1477386</a> for
more info and progress.</p>
</div>
</div>
<divclass="section"id="maven-plugin-url-handler">
<h3>Maven Plugin URL Handler<aclass="headerlink"href="#maven-plugin-url-handler"title="Permalink to this headline">¶</a></h3>
<p>Original Author: Julien Nicoulaud</p>
<p>Ummmm..... I’m not entirely sure what this will do, as I don’t use
Maven. Updates on a postcard, please...</p>
<p>From the source:</p>
<blockquote>
<div>Maven plugin handler. If the name of a Maven plugin is
detected, it is turned into a link to its documentation site.
If a Maven plugin goal is detected, the link points to the
particular goal page. Only Apache (org.apache.maven.plugins)
and Codehaus (org.codehaus.mojo) plugins are supported.</div></blockquote>
</div>
<divclass="section"id="terminal-shot">
<h3>Terminal Shot<aclass="headerlink"href="#terminal-shot"title="Permalink to this headline">¶</a></h3>
<p>Original Author: Chris Jones</p>
<p>Adds a menu item, <strong>Terminal screenshot</strong>, to <aclass="reference internal"href="gettingstarted.html#context-menu"><span>The Context Menu</span></a>
that will take a screenshot of the underlying terminal, and present
a dialog for where to save it.</p>
</div>
<divclass="section"id="test-plugin">
<h3>Test Plugin<aclass="headerlink"href="#test-plugin"title="Permalink to this headline">¶</a></h3>
<p>Original Author: Chris Jones (most likely)</p>
<p>An almost comically stripped down example.</p>
</div>
</div>
<divclass="section"id="third-party-plugins">
<h2>Third party plugins<aclass="headerlink"href="#third-party-plugins"title="Permalink to this headline">¶</a></h2>
<p>As I find (or I’m told about) plugins that are available elsewhere,
I’ll add links here. I’ve done a preliminary search, and.. Wow! I
never knew there were so many out there.</p>
<p>If any of the authors would like to get their plugins added to the
main Terminator package, or they would prefer not to be listed here
for some reason, they can reach out to me through the project site
on Launchpad and we can sort it out.</p>
<p>I’m unsure of how these plugins are perceived. They are specific to
Terminator, but does that make them derivative in the eyes of GPL v2,
and therefore allow me to include them? If I want to include one in
the main package, do I have to hope the creator is still active?
Answers on a postcard...</p>
<divclass="admonition warning">
<pclass="first admonition-title">Warning</p>
<pclass="last">I have done no testing or checking of these plugins. You
use at your own risk, and you are responsible for
evaluating the code for bugs, issues, and security.</p>
<h2>Creating your own plugins<aclass="headerlink"href="#creating-your-own-plugins"title="Permalink to this headline">¶</a></h2>
<divclass="admonition note">
<pclass="first admonition-title">Note</p>
<pclass="last">The following guide is initially sourced from a <aclass="reference external"href="http://www.tenshu.net/2010/04/writing-terminator-plugins.html">tutorial</a>
written by Chris Jones back in April 2010. I’m reproducing
it here as a precaution, although I don’t expect the
original will disappear. It will get rewritten and expanded
as more knowledge and information is added.</p>
</div>
<p>One of the features of the new 0.9x series of Terminator releases
that hasn’t had a huge amount of announcement/discussion yet is the
plugin system. I’ve posted previously about the decisions that went
into the design of the plugin framework, but I figured now would be
a good time to look at how to actually take advantage of it.</p>
<p>While the plugin system is really generic, so far there are only two
points in the Terminator code that actually look for plugins - the
Terminal context menu and the default URL opening code. If you find
you’d like to write a plugin that interacts with a different part of
Terminator, please let me know, I’d love to see some clever uses of
plugins and I definitely want to expand the number of points that
plugins can hook into.</p>
<divclass="section"id="the-basics-of-a-plugin">
<h3>The basics of a plugin<aclass="headerlink"href="#the-basics-of-a-plugin"title="Permalink to this headline">¶</a></h3>
<p>A plugin is a class in a <codeclass="docutils literal"><spanclass="pre">.py</span></code> file in <codeclass="docutils literal"><spanclass="pre">terminatorlib/plugins</span></code> or
<codeclass="docutils literal"><spanclass="pre">~/.config/terminator/plugins</span></code>, but not all classes are automatically
treated as plugins. Terminator will examine each of the .py files it
finds for a list called <codeclass="docutils literal"><spanclass="pre">available</span></code> and it will load each of the
classes mentioned therein.</p>
<p>Additionally, it would be a good idea to import <codeclass="docutils literal"><spanclass="pre">terminatorlib.plugin</span></code>
as that contains the base classes that other plugins should be derived
Built with <ahref="http://sphinx-doc.org/">Sphinx</a> using a <ahref="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <ahref="https://readthedocs.org">Read the Docs</a>.