822 lines
48 KiB
HTML
822 lines
48 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>Plugins — 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="next" title="Advanced Usage" href="advancedusage.html"/>
|
|
<link rel="prev" title="The Grouping Menu" href="grouping.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 current"><a class="current reference internal" href="">Plugins</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="#included-plugins">Included plugins</a><ul>
|
|
<li class="toctree-l3"><a class="reference internal" href="#activity-watch">Activity Watch</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="#apt-url-handler">APT URL Handler</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="#custom-commands-menu">Custom Commands Menu</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="#inactivity-watch">Inactivity Watch</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="#launchpad-bug-url-handler">Launchpad Bug URL Handler</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="#launchpad-code-url-handler">Launchpad Code URL Handler</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="#logger">Logger</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="#maven-plugin-url-handler">Maven Plugin URL Handler</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="#terminal-shot">Terminal Shot</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="#test-plugin">Test Plugin</a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#third-party-plugins">Third party plugins</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#installing-a-plugin">Installing a plugin</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#creating-your-own-plugins">Creating your own plugins</a><ul>
|
|
<li class="toctree-l3"><a class="reference internal" href="#the-basics-of-a-plugin">The basics of a plugin</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="#url-handlers">URL Handlers</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="#context-menu-items">Context menu items</a></li>
|
|
<li class="toctree-l3"><a class="reference internal" href="#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#write-in-python-it-s-slow-bloated-bad">...write in Python? It’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">“Python sucks!”</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"><a class="reference internal" href="gettinginvolved.html">Getting involved</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="gettinginvolved.html#translations">Translations</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="gettinginvolved.html#improve-icons-artwork">Improve icons/artwork</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="gettinginvolved.html#terminator-action-shots">Terminator action shots</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="gettinginvolved.html#manual-updates">Manual updates</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="gettinginvolved.html#testing">Testing</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="gettinginvolved.html#bugs">Bugs</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="gettinginvolved.html#plugins">Plugins</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="gettinginvolved.html#main-application-development">Main Application Development</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="gettinginvolved.html#gtk3-port">GTK3 Port</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="gettinginvolved.html#api-docs">API Docs</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</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> »</li>
|
|
|
|
<li>Plugins</li>
|
|
<li class="wy-breadcrumbs-aside">
|
|
|
|
|
|
<a href="_sources/plugins.txt" rel="nofollow"> View page source</a>
|
|
|
|
|
|
</li>
|
|
</ul>
|
|
<hr/>
|
|
</div>
|
|
<div role="main" class="document">
|
|
|
|
<img alt="I have the POWWWWWWEEEEERRRRRRR!!!!!!" class="align-right" src="_images/icon_plugins.png" />
|
|
<div class="section" id="plugins">
|
|
<span id="id1"></span><h1>Plugins<a class="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
|
|
<a class="reference internal" href="preferences.html#prefs-plugins"><span>Plugins</span></a> tab of the <a class="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 <a class="reference internal" href="preferences.html#prefs-plugins"><span>Plugins</span></a> tab. What plugins can definitely
|
|
do, because examples are below, is to:</p>
|
|
<ul class="simple">
|
|
<li>add menu items to <a class="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>
|
|
</ul>
|
|
<div class="admonition note">
|
|
<p class="first admonition-title">Note</p>
|
|
<img alt="_images/plugins_links.png" class="align-center" src="_images/plugins_links.png" />
|
|
<p class="last">Several of the included plugins create <a class="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>
|
|
<div class="section" id="included-plugins">
|
|
<h2>Included plugins<a class="headerlink" href="#included-plugins" title="Permalink to this headline">¶</a></h2>
|
|
<p>The following plugins are distributed by default with Terminator.</p>
|
|
<div class="admonition note">
|
|
<p class="first admonition-title">Note</p>
|
|
<p class="last">Unless otherwise stated, the included plugins are under the
|
|
<a class="reference internal" href="licensing.html#licencing"><span>Licensing</span></a> as Terminator, GNU GPL v2.</p>
|
|
</div>
|
|
<div class="section" id="activity-watch">
|
|
<h3>Activity Watch<a class="headerlink" href="#activity-watch" title="Permalink to this headline">¶</a></h3>
|
|
<p>Original Author: Chris Jones</p>
|
|
<img alt="_images/activitywatch_notification.png" class="align-right" src="_images/activitywatch_notification.png" />
|
|
<p>Adds a menu item, <strong>Watch for activity</strong>, to <a class="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>
|
|
<p>There is one option for this plugin:</p>
|
|
<p><strong>hush_period</strong> (default: 10.0)</p>
|
|
<blockquote>
|
|
<div>How long in seconds until the next notification of activity is
|
|
presented.</div></blockquote>
|
|
<div class="admonition note">
|
|
<p class="first admonition-title">Note</p>
|
|
<p>There is currently no way to edit these options in the GUI,
|
|
it must be done directly in <a class="reference internal" href="advancedusage.html#config-file"><span>The Config file</span></a>.</p>
|
|
<p>An extract of this item being set would be:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre>[plugins]
|
|
[[ActivityWatch]]
|
|
hush_period = 30.0
|
|
</pre></div>
|
|
</div>
|
|
<p class="last">Which would wait 30 seconds before showing another
|
|
notification of activity.</p>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="apt-url-handler">
|
|
<h3>APT URL Handler<a class="headerlink" href="#apt-url-handler" title="Permalink to this headline">¶</a></h3>
|
|
<p>Original Author: Chris Jones</p>
|
|
<p>Text matching <code class="docutils literal"><span class="pre">apt:.*</span></code> will be converted into a click-able item that
|
|
when triggered with <code class="docutils literal"><span class="pre">Ctrl</span></code>+<code class="docutils literal"><span class="pre">click</span></code> will launch the default
|
|
package manager for software on a debian system.</p>
|
|
<p><code class="docutils literal"><span class="pre">right-click</span></code> over the URL will add two entries to <a class="reference internal" href="gettingstarted.html#context-menu"><span>The Context Menu</span></a>:</p>
|
|
<ul class="simple">
|
|
<li><em>Open software manager</em> - Same as <code class="docutils literal"><span class="pre">Ctrl</span></code>+<code class="docutils literal"><span class="pre">click</span></code></li>
|
|
<li><em>Copy package URI</em> - Just copies the URI to the clipboard</li>
|
|
</ul>
|
|
</div>
|
|
<div class="section" id="custom-commands-menu">
|
|
<h3>Custom Commands Menu<a class="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 <a class="reference internal" 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
|
|
commands that can be chosen.</p>
|
|
<img alt="_images/custom_commands.png" class="align-center" src="_images/custom_commands.png" />
|
|
<p>In this window you can create a <strong>New</strong> item, and <strong>Edit</strong> or
|
|
<strong>Delete</strong> existing ones. The selected item can be repositioned in
|
|
the sub-menu order using the <strong>Top</strong>, <strong>Up</strong>, <strong>Down</strong> and <strong>Last</strong>
|
|
buttons.</p>
|
|
<p>Clicking <em>New</em> or <em>Edit</em> gives the smaller window. An <strong>Enabled</strong>
|
|
item is shown in sub-menu, and a disabled one is not. The <strong>Name</strong> is
|
|
used for the sub-menu item text. The <strong>Command</strong> is the text that will
|
|
be entered into the current terminal with a <code class="docutils literal"><span class="pre">Return</span></code> at the end to
|
|
execute/enter it. You <em>do not</em> get a chance to edit the text first.</p>
|
|
<div class="admonition note">
|
|
<p class="first admonition-title">Note</p>
|
|
<p class="last">If other terminals are receiving, they too will receive and
|
|
execute the <em>Command</em>.</p>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="inactivity-watch">
|
|
<h3>Inactivity Watch<a class="headerlink" href="#inactivity-watch" title="Permalink to this headline">¶</a></h3>
|
|
<p>Original Author: Chris Jones</p>
|
|
<img alt="_images/inactivitywatch_notification.png" class="align-right" src="_images/inactivitywatch_notification.png" />
|
|
<p>Adds a menu item, <strong>Watch for silence</strong>, to <a class="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
|
|
notification.</p>
|
|
<p>There are two options for this plugin:</p>
|
|
<p><strong>inactive_period</strong> (default: 10.0)</p>
|
|
<blockquote>
|
|
<div>How long in seconds until a terminal is considered inactive.</div></blockquote>
|
|
<p><strong>watch_interval</strong> (default: 5000)</p>
|
|
<blockquote>
|
|
<div>How long in milliseconds between checks for inactivity.</div></blockquote>
|
|
<p>Be aware that this combination will result in some uncertainty as to
|
|
the exact timing of the notification. In the worst case, with the
|
|
values given, the notification may take 14.9 seconds to appear.</p>
|
|
<div class="admonition note">
|
|
<p class="first admonition-title">Note</p>
|
|
<p>There is currently no way to edit these options in the GUI,
|
|
it must be done directly in <a class="reference internal" href="advancedusage.html#config-file"><span>The Config file</span></a>.</p>
|
|
<p>An extract of these items being set would be:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre>[plugins]
|
|
[[InactivityWatch]]
|
|
inactive_period = 30.0
|
|
watch_interval = 1000
|
|
</pre></div>
|
|
</div>
|
|
<p class="last">Which would check every second if the terminal had been
|
|
silent for 30 seconds.</p>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="launchpad-bug-url-handler">
|
|
<h3>Launchpad Bug URL Handler<a class="headerlink" href="#launchpad-bug-url-handler" title="Permalink to this headline">¶</a></h3>
|
|
<p>Original Author: Chris Jones</p>
|
|
<p>Text matching <code class="docutils literal"><span class="pre">lp:</span> <span class="pre">#12345</span></code> where 12345 is a bug number in launchpad,
|
|
will be converted into a click-able item that when triggered with
|
|
<code class="docutils literal"><span class="pre">Ctrl</span></code>+<code class="docutils literal"><span class="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. <code class="docutils literal"><span class="pre">LP</span></code>, and the <code class="docutils literal"><span class="pre">:</span></code>, white-space, and <code class="docutils literal"><span class="pre">#</span></code> are
|
|
optional.</p>
|
|
<p>The item can also be more than one bug number, and each will be opened,
|
|
for example:</p>
|
|
<blockquote>
|
|
<div><code class="docutils literal"><span class="pre">lp:</span> <span class="pre">#12345.</span> <span class="pre">#67890,</span> <span class="pre">54321,#9876</span></code></div></blockquote>
|
|
<p><code class="docutils literal"><span class="pre">Ctrl</span></code>+<code class="docutils literal"><span class="pre">click</span></code> on this will open four pages; one for each bug
|
|
number.</p>
|
|
<p><code class="docutils literal"><span class="pre">right-click</span></code> over the URL will add two entries to <a class="reference internal" href="gettingstarted.html#context-menu"><span>The Context Menu</span></a>:</p>
|
|
<ul class="simple">
|
|
<li><em>Open Launchpad bug</em> - Same as <code class="docutils literal"><span class="pre">Ctrl</span></code>+<code class="docutils literal"><span class="pre">click</span></code></li>
|
|
<li><em>Copy bug URL</em> - Just copies the URL to the clipboard</li>
|
|
</ul>
|
|
</div>
|
|
<div class="section" id="launchpad-code-url-handler">
|
|
<h3>Launchpad Code URL Handler<a class="headerlink" href="#launchpad-code-url-handler" title="Permalink to this headline">¶</a></h3>
|
|
<p>Original Author: Chris Jones</p>
|
|
<p>Text matching <code class="docutils literal"><span class="pre">lp:string</span></code> will be converted into a click-able item
|
|
that when triggered with <code class="docutils literal"><span class="pre">Ctrl</span></code>+<code class="docutils literal"><span class="pre">click</span></code> will launch a browser
|
|
to the page in launchpad, where string is one of the following:</p>
|
|
<ul class="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. <code class="docutils literal"><span class="pre">LP</span></code>.</p>
|
|
<p><code class="docutils literal"><span class="pre">right-click</span></code> over the URL will add two entries to <a class="reference internal" href="gettingstarted.html#context-menu"><span>The Context Menu</span></a>:</p>
|
|
<ul class="simple">
|
|
<li><em>Open Launchpad branch</em> - Same as <code class="docutils literal"><span class="pre">Ctrl</span></code>+<code class="docutils literal"><span class="pre">click</span></code></li>
|
|
<li><em>Copy branch URL</em> - Just copies the URL to the clipboard</li>
|
|
</ul>
|
|
</div>
|
|
<div class="section" id="logger">
|
|
<h3>Logger<a class="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 <a class="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>
|
|
<div class="admonition warning">
|
|
<p class="first admonition-title">Warning</p>
|
|
<p class="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 <a class="reference external" href="https://bugs.launchpad.net/terminator/+bug/1477386">LP#1477386</a> for
|
|
more info and progress.</p>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="maven-plugin-url-handler">
|
|
<h3>Maven Plugin URL Handler<a class="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>
|
|
<div class="section" id="terminal-shot">
|
|
<h3>Terminal Shot<a class="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 <a class="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>
|
|
<div class="section" id="test-plugin">
|
|
<h3>Test Plugin<a class="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>
|
|
<div class="section" id="third-party-plugins">
|
|
<h2>Third party plugins<a class="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>
|
|
<div class="admonition warning">
|
|
<p class="first admonition-title">Warning</p>
|
|
<p class="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>
|
|
</div>
|
|
<p>In absolutely no order at all...</p>
|
|
<dl class="docutils">
|
|
<dt><a class="reference external" href="https://github.com/rail/dotfiles/blob/master/terminator_bugzilla_handler.py">https://github.com/rail/dotfiles/blob/master/terminator_bugzilla_handler.py</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>terminator_bugzilla_handler: Link “bug:12345” to the Mozilla bugzilla.
|
|
(As it is for Mozilla, it seems a bit misnamed.)</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://github.com/ilgarm/terminator_plugins">https://github.com/ilgarm/terminator_plugins</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>clone_session: Split and clone ssh session</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://github.com/arnaudh/terminator-plugins">https://github.com/arnaudh/terminator-plugins</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>open_any_file_plugin: Open any file with it’s default application</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://github.com/dr1s/terminator-plugins">https://github.com/dr1s/terminator-plugins</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>cluster_connect: A way to connect to multiple machines as a cluster</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://github.com/mchelem/terminator-editor-plugin">https://github.com/mchelem/terminator-editor-plugin</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>editor_plugin: Click on file:line style links to launch a text editor</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://github.com/camillo/TerminatorPlugins">https://github.com/camillo/TerminatorPlugins</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>LayoutManager: Saves and restores Layouts (which is built-in now, possibly redundant)</li>
|
|
<li>TerminalExporter: Export contents to file</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://github.com/choffee/terminator-plugins">https://github.com/choffee/terminator-plugins</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>searchplugin: Search Google for the selected text in a terminal</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://github.com/papajoker/editor_terminator">https://github.com/papajoker/editor_terminator</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>editor_plugin: Another text editor launcher</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://github.com/papajoker/git_terminator">https://github.com/papajoker/git_terminator</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>git_plugin: adds commands for git when it detects a .git folder</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://github.com/iambibhas/terminator-plugins">https://github.com/iambibhas/terminator-plugins</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>hastebin: Uploads selected text to Hastebin and opens browser on it</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://github.com/abourget/abourget-terminator">https://github.com/abourget/abourget-terminator</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>TenscoresPlugin: Seems to be for launching set of tabs (which is built-in now, possibly redundant)</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://github.com/mikeadkison/terminator-google">https://github.com/mikeadkison/terminator-google</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>google: Another google-the-text plugin</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://github.com/mariolameiras/ssh-menu-terminator">https://github.com/mariolameiras/ssh-menu-terminator</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>ssh_menu: I’m guessing a bit, but I think it works with SSH Menu ;-) the code is quite big to understand at a glance.</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://github.com/alesegdia/terminator-plugins">https://github.com/alesegdia/terminator-plugins</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>Session: Save/load sessions (which is built-in now, possibly redundant)</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://github.com/Theer108/colorize">https://github.com/Theer108/colorize</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>colorize: Colour titlebar of each terminal separately</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://github.com/ju1ius/clisnips">https://github.com/ju1ius/clisnips</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>clisnips: Snippets for the command line.</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://github.com/GratefulTony/TerminatorHostWatch">https://github.com/GratefulTony/TerminatorHostWatch</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>hostWatch: Attempts to figure out your current host, and apply a certain theme.</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://github.com/kmoppel/dumptofile">https://github.com/kmoppel/dumptofile</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>dump_to_file: Dump console contents to a text file.</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://bitbucket.org/pgularski/terminator-plugins">https://bitbucket.org/pgularski/terminator-plugins</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>show_titlebar: Menu item to show/hide the titlebar.</li>
|
|
<li>searchplugin: Yup, another Googler.</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://bitbucket.org/johnsanchezc/terminator-applauncher">https://bitbucket.org/johnsanchezc/terminator-applauncher</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>applauncher: A launcher/set-up tool (which is built-in now, possibly redundant)</li>
|
|
</ul>
|
|
</dd>
|
|
<dt><a class="reference external" href="https://www.snip2code.com/Snippet/58595/Terminator-plugin----log-the-output-of-t">https://www.snip2code.com/Snippet/58595/Terminator-plugin—-log-the-output-of-t</a></dt>
|
|
<dd><ul class="first last simple">
|
|
<li>my_logger: Log the output to a file with a time-stamp as the name, and prefix each line with the time.
|
|
(Seems to be similar to, or derived from, the included one)</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<div class="section" id="installing-a-plugin">
|
|
<h2>Installing a plugin<a class="headerlink" href="#installing-a-plugin" title="Permalink to this headline">¶</a></h2>
|
|
<p>A plugin can be installed by adding the main python file (along with
|
|
any additional files) in one of two locations:</p>
|
|
<dl class="docutils">
|
|
<dt><code class="docutils literal"><span class="pre">/usr/[local/]share/terminator/terminatorlib/plugins/</span></code></dt>
|
|
<dd>This will need root permissions to do. The optional <code class="docutils literal"><span class="pre">local/</span></code> is
|
|
usually for packages installed by hand, rather than through the
|
|
package manager, and this depends on how Terminator was installed
|
|
on your system.</dd>
|
|
<dt><code class="docutils literal"><span class="pre">~/.config/terminator/plugins/</span></code></dt>
|
|
<dd>This allows you to use plugins without needing root.</dd>
|
|
</dl>
|
|
</div>
|
|
<div class="section" id="creating-your-own-plugins">
|
|
<h2>Creating your own plugins<a class="headerlink" href="#creating-your-own-plugins" title="Permalink to this headline">¶</a></h2>
|
|
<div class="admonition note">
|
|
<p class="first admonition-title">Note</p>
|
|
<p class="last">The following guide is initially sourced from a <a class="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>
|
|
<div class="section" id="the-basics-of-a-plugin">
|
|
<h3>The basics of a plugin<a class="headerlink" href="#the-basics-of-a-plugin" title="Permalink to this headline">¶</a></h3>
|
|
<p>A plugin is a class in a <code class="docutils literal"><span class="pre">.py</span></code> file in <code class="docutils literal"><span class="pre">terminatorlib/plugins</span></code> or
|
|
<code class="docutils literal"><span class="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 <code class="docutils literal"><span class="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 <code class="docutils literal"><span class="pre">terminatorlib.plugin</span></code>
|
|
as that contains the base classes that other plugins should be derived
|
|
from.</p>
|
|
<p>A quick example:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">terminatorlib.plugin</span> <span class="kn">as</span> <span class="nn">plugin</span>
|
|
<span class="n">available</span> <span class="o">=</span> <span class="p">[</span><span class="s">'myfirstplugin'</span><span class="p">]</span>
|
|
<span class="k">class</span> <span class="nc">myfirstplugin</span><span class="p">(</span><span class="n">plugin</span><span class="o">.</span><span class="n">SomeBasePluginClass</span><span class="p">):</span>
|
|
<span class="c"># etc.</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>So now let’s move on to the simplest type of plugin currently available
|
|
in Terminator, a URL handler.</p>
|
|
</div>
|
|
<div class="section" id="url-handlers">
|
|
<h3>URL Handlers<a class="headerlink" href="#url-handlers" title="Permalink to this headline">¶</a></h3>
|
|
<p>This type of plugin adds new regular expressions to match text in the
|
|
terminal that should be handled as URLs. We ship an example of this
|
|
with Terminator, it’s a handler that adds support for the commonly
|
|
used format for Launchpad. Ignoring the comments and the basics above,
|
|
this is ultimately all it is:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre><span class="k">class</span> <span class="nc">LaunchpadBugURLHandler</span><span class="p">(</span><span class="n">plugin</span><span class="o">.</span><span class="n">URLHandler</span><span class="p">):</span>
|
|
<span class="n">capabilities</span> <span class="o">=</span> <span class="p">[</span><span class="s">'url_handler'</span><span class="p">]</span>
|
|
<span class="n">handler_name</span> <span class="o">=</span> <span class="s">'launchpad_bug'</span>
|
|
<span class="n">match</span> <span class="o">=</span> <span class="s">'</span><span class="se">\\</span><span class="s">b(lp|LP):?\s?#?[0-9]+(,\s*#?[0-9]+)*</span><span class="se">\\</span><span class="s">b'</span>
|
|
|
|
<span class="k">def</span> <span class="nf">callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">):</span>
|
|
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">re</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">r'[0-9]+'</span><span class="p">,</span> <span class="n">url</span><span class="p">):</span>
|
|
<span class="k">return</span><span class="p">(</span><span class="s">'https://bugs.launchpad.net/bugs/</span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">item</span><span class="p">)</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>That’s it! Let’s break it down a little to see the important things
|
|
here:</p>
|
|
<ul class="simple">
|
|
<li>inherit from plugin.URLHandler if you want to handle URLs.</li>
|
|
<li>include ‘url_handler’ in your capabilities list</li>
|
|
<li>URL handlers must specify a unique handler_name (no enforcement of
|
|
uniqueness is performed by Terminator, so use some common sense with
|
|
the namespace)</li>
|
|
<li>Terminator will call a method in your class called callback() and
|
|
pass it the text that was matched. You must return a valid URL
|
|
which will probably be based on this text.</li>
|
|
</ul>
|
|
<p>And that’s all there is to it really. Next time you start terminator
|
|
you should find the pattern you added gets handled as a URL!</p>
|
|
</div>
|
|
<div class="section" id="context-menu-items">
|
|
<h3>Context menu items<a class="headerlink" href="#context-menu-items" title="Permalink to this headline">¶</a></h3>
|
|
<p>This type of plugin is a little more involved, but not a huge amount
|
|
and as with URLHandler we ship an example in
|
|
<code class="docutils literal"><span class="pre">terminatorlib/plugins/custom_commands.py</span></code> which is a plugin that
|
|
allows users to add custom commands to be sent to the terminal when
|
|
selected. This also brings a second aspect of making more complex
|
|
plugins - storing configuration. Terminator’s shiny new configuration
|
|
system (based on the excellent ConfigObj) exposes some API for plugins
|
|
to use for loading and storing their configuration. The nuts and bolts
|
|
here are:</p>
|
|
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">terminatorlib.plugin</span> <span class="kn">as</span> <span class="nn">plugin</span>
|
|
<span class="kn">from</span> <span class="nn">terminatorlib.config</span> <span class="kn">import</span> <span class="n">Config</span>
|
|
<span class="n">available</span> <span class="o">=</span> <span class="p">[</span><span class="s">'CustomCommandsMenu'</span><span class="p">]</span>
|
|
|
|
<span class="k">class</span> <span class="nc">CustomCommandsMenu</span><span class="p">(</span><span class="n">plugin</span><span class="o">.</span><span class="n">MenuItem</span><span class="p">):</span>
|
|
<span class="n">capabilities</span> <span class="o">=</span> <span class="p">[</span><span class="s">'terminal_menu'</span><span class="p">]</span>
|
|
<span class="n">config</span> <span class="o">=</span> <span class="bp">None</span>
|
|
|
|
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">config</span> <span class="o">=</span> <span class="n">Config</span><span class="p">()</span>
|
|
<span class="n">myconfig</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">plugin_get_config</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">)</span>
|
|
<span class="c"># Now extract valid data from sections{}</span>
|
|
|
|
<span class="k">def</span> <span class="nf">callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">menuitems</span><span class="p">,</span> <span class="n">menu</span><span class="p">,</span> <span class="n">terminal</span><span class="p">):</span>
|
|
<span class="n">menuitems</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">gtk</span><span class="o">.</span><span class="n">MenuItem</span><span class="p">(</span><span class="s">'some jazz'</span><span class="p">))</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>This is a pretty simplified example, but it’s sufficient to insert a
|
|
menu item that says “some jazz”. I’m not going to go into the detail
|
|
of hooking up a handler to the ‘activate’ event of the MenuItem or
|
|
other PyGTK mechanics, but this gives you the basic detail. The method
|
|
that Terminator will call from your class is again “callback()” and
|
|
you get passed a list you should add your menu structure to, along
|
|
with references to the main menu object and the related Terminal. As
|
|
the plugin system expands and matures I’d like to be more formal about
|
|
the API that plugins should expect to be able to rely on, rather than
|
|
having them poke around inside classes like Config and Terminal.
|
|
Suggestions are welcome :)</p>
|
|
<p>Regarding the configuration storage API - the value returned by
|
|
Config.plugin_get_config() is just a dict, it’s whatever is currently
|
|
configured for your plugin’s name in the Terminator config file.
|
|
There’s no validation of this data, so you should pay attention to it
|
|
containing valid data. You can then set whatever you want in this
|
|
dict and pass it to Config().plugin_set_config() with the name of
|
|
your class and then call Config().save() to flush this out to disk
|
|
(I recommend that you be quite liberal about calling save()).</p>
|
|
</div>
|
|
<div class="section" id="wrap-up">
|
|
<h3>Wrap up<a class="headerlink" href="#wrap-up" title="Permalink to this headline">¶</a></h3>
|
|
<p>Right now that’s all there is to it. Please get in touch if you have
|
|
any suggestions or questions - I’d love to ship more plugins with
|
|
Terminator itself, and I can think of some great ideas. Probably the
|
|
most useful thing would be something to help customise Terminator for
|
|
heavy ssh users (see the earlier fork of Terminator called
|
|
‘ssherminator’)</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
<footer>
|
|
|
|
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
|
|
|
<a href="advancedusage.html" class="btn btn-neutral float-right" title="Advanced Usage" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
|
|
|
|
|
|
<a href="grouping.html" class="btn btn-neutral" title="The Grouping Menu" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
|
|
|
|
</div>
|
|
|
|
|
|
<hr/>
|
|
|
|
<div role="contentinfo">
|
|
<p>
|
|
© 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> |