changeset 2627:6863ac66a10b

Rename External Editors to Plugins
author Colin Clark <colin.clark@cclark.uk>
date Wed, 11 Oct 2017 19:24:57 +0100
parents 9d3bbd00cf4d
children 3685b630d2e4
files doc/docbook/GuideEditorsConfig.xml doc/docbook/GuideImageManagementExternalEditing.xml doc/docbook/GuideImageManagementPlugins.xml doc/docbook/GuideIndex.xml doc/docbook/GuideMainWindowMenus.xml doc/docbook/GuideOptionsAdditional.xml doc/docbook/GuidePluginsConfig.xml doc/docbook/GuideSidebarsSortManager.xml plugins/template.desktop src/desktop_file.c src/editors.c src/layout_util.c
diffstat 12 files changed, 329 insertions(+), 327 deletions(-) [+]
line wrap: on
line diff
--- a/doc/docbook/GuideEditorsConfig.xml	Wed Oct 11 12:27:00 2017 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,261 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<section id="GuideEditorsConfig">
-  <title id="titleGuideEditorsConfig">External Editor Configuration</title>
-  <para />
-  <section id="EditorsConfigurationDialog">
-    <title>Editor Configuration Dialog</title>
-    <para>
-      This dialog allows user to add new editors or modify the system ones. It is available in the menu
-      <menuchoice>
-        <guimenu>Edit</guimenu>
-        <guimenuitem>Configure Editors</guimenuitem>
-      </menuchoice>
-      .
-    </para>
-    <para>
-      The Editors dialog shows list of all relevant editors i.e. all installed desktop files that are designated either:
-      <itemizedlist spacing="compact">
-        >
-        <listitem>
-          <literal>Categories=Graphics</literal>
-        </listitem>
-        <listitem>
-          <literal>Categories=X-Geeqie</literal>
-        </listitem>
-      </itemizedlist>
-      <para />
-      The list has the following columns:
-    </para>
-    <variablelist spacing="compact">
-      <varlistentry>
-        <term>
-          <guilabel>Name</guilabel>
-        </term>
-        <listitem>
-          <para>Editor name as specified in desktop file, and is the name displayed in menus.</para>
-        </listitem>
-      </varlistentry>
-      <varlistentry>
-        <term>
-          <guilabel>Hidden</guilabel>
-        </term>
-        <listitem>
-          An editor can be
-          <emphasis>Hidden</emphasis>
-          for one of these reasons:
-          <itemizedlist>
-            <listitem>
-              the desktop file contains
-              <literal>Hidden=TRUE</literal>
-              or
-              <literal>NoDisplay=TRUE</literal>
-            </listitem>
-            <listitem>
-              <literal>TryExec</literal>
-              binary was not found
-            </listitem>
-            <listitem>
-              <literal>MimeType</literal>
-              list does not contain images
-            </listitem>
-            <listitem>
-              <literal>MimeType</literal>
-              list is empty and
-              <literal>Categories</literal>
-              does not contain
-              <literal>X-Geeqie</literal>
-            </listitem>
-          </itemizedlist>
-        </listitem>
-      </varlistentry>
-    </variablelist>
-    <variablelist spacing="compact">
-      <varlistentry>
-        <term>
-          <guilabel>Desktop file</guilabel>
-        </term>
-        <listitem>
-          Name of the desktop file, used as an identifier in
-          <link linkend="GuideOptionsKeyboard" endterm="titleGuideOptionsKeyboard" />
-          .
-        </listitem>
-      </varlistentry>
-      <varlistentry>
-        <term>
-          <guilabel>Path</guilabel>
-        </term>
-        <listitem>Full path to the desktop file. Desktop files in user directories override the system ones with the same name.</listitem>
-      </varlistentry>
-    </variablelist>
-  </section>
-  <section id="Addingneweditor">
-    <title>Adding new editor</title>
-    <para>
-      <code>
-        <guibutton>
-          <guiicon>
-            <inlinegraphic fileref="document-new.png" />
-          </guiicon>
-          New
-        </guibutton>
-      </code>
-      opens a text editor with a desktop file template. You must amend the line
-      <programlisting>Exec=command %f</programlisting>
-      to contain the command you wish to execute. If it is more than a single command, you must create a script file and call that. If the location of the script file is not in your $PATH environment variable, you must include the full pathname.
-    </para>
-    <para />
-  </section>
-  <section id="Modifyinganexistingeditor">
-    <title>Modifying an existing editor</title>
-    <para>
-      <code>
-        <guibutton>
-          <guiicon>
-            <inlinegraphic fileref="gtk-edit.png" />
-          </guiicon>
-          Edit
-        </guibutton>
-      </code>
-      opens a text editor with existing desktop file. For desktop files that are not writable by user, it allows saving to a Geeqie specific directory, where it overrides the system file (but only for Geeqie).
-    </para>
-  </section>
-  <section id="Deletinganeditor">
-    <title>Deleting an editor</title>
-    <para>
-      <code>
-        <guibutton>
-          <guiicon>
-            <inlinegraphic fileref="edit-delete.png" />
-          </guiicon>
-          Delete
-        </guibutton>
-      </code>
-      can delete user writable desktop files. System desktop files can't be deleted directly, but it is possible to edit them and set
-      <literal>Hidden=TRUE</literal>
-      , see above.
-    </para>
-  </section>
-  <section id="Specialeditors">
-    <title>Special editors</title>
-    <para>A desktop file with one of the following names has a special function. It will replace the corresponding internal command.</para>
-    <para>
-      <programlisting xml:space="preserve">
-        geeqie-copy-command.desktop
-        geeqie-move-command.desktop
-        geeqie-rename-command.desktop
-        geeqie-delete-command.desktop
-        geeqie-folder-command.desktop
-      </programlisting>
-    </para>
-    <para>This can be used for example for a custom trash command or for manipulation of files under version control.</para>
-  </section>
-  <section id="Geeqieextensions">
-    <title>Geeqie desktop file keys</title>
-    <para>
-      A desktop file for use only by Geeqie should have the following entries:
-      <programlisting>
-        Categories=X-Geeqie;
-        OnlyShowIn=X-Geeqie;
-      </programlisting>
-    </para>
-    <para>
-      A menu path where the editor will appear, instead of in the default
-      <menuchoice>
-        <guimenu>Edit</guimenu>
-        <guimenuitem>External Editors</guimenuitem>
-      </menuchoice>
-      , can be set by including:
-      <programlisting>X-Geeqie-Menu-Path=&lt;FileMenuPath&gt;</programlisting>
-    </para>
-    <para>
-      Possible vales for
-      <emphasis>FileMenuPath</emphasis>
-      are:
-      <programlisting xml:space="preserve">
-        FileMenu
-        FileMenu/OpenSection
-        FileMenu/SearchSection
-        FileMenu/PrintSection
-        FileMenu/FileOpsSection
-        FileMenu/QuitSection
-        GoMenu
-        SelectMenu
-        SelectMenu/SelectSection
-        SelectMenu/ClipboardSection
-        SelectMenu/MarksSection
-        EditMenu/EditMenu
-        EditMenu/ExternalMenu
-        EditMenu/EditSection
-        EditMenu/OrientationMenu
-        EditMenu/RatingMenu
-        EditMenu/PropertiesSection
-        EditMenu/PreferencesSection
-        ViewMenu
-        ViewMenu/WindowSection
-        ViewMenu/FileDirMenu
-        ViewMenu/FileDirMenu/FolderSection
-        ViewMenu/FileDirMenu/ListSection
-        ViewMenu/DirSection
-        ViewMenu/ZoomMenu
-        ViewMenu/ZoomMenu/ConnectZoomMenu
-        ViewMenu/SplitMenu
-        ViewMenu/StereoMenu
-        ViewMenu/ColorMenu
-        ViewMenu/OverlayMenu
-        ViewMenu/ViewSection
-        ViewMenu/ToolsSection
-        ViewMenu/SlideShowSection
-        HelpMenu
-        HelpMenu/HelpSection
-      </programlisting>
-    </para>
-    <para>
-      If you want an editor to use a user-definable path, the following entry must be made in the desktop file:
-      <programlisting>X-Geeqie-Filter=true</programlisting>
-    </para>
-    <para>
-      Desktop files containing this entry will be displayed in the Folder action list of the
-      <link linkend="CopyMoveandLink" endterm="titleGuideSidebarsSortManager" />
-      . The path of the bookmark clicked will be used by the desktop file.
-      <para />
-      If the desktop file is called from the menu, when the external editor is executed you are presented with a dialogue which enables a path to be selected. The path selected, appended by the filename currently being processed, is made available to the editor script either as an environment variable or via a call to geeqie --remote. The following code demonstrates the use of both methods:
-      <programlisting xml:space="preserve">
-        for file in "$@"
-        do
-        destination=$(geeqie --remote --get-destination:"$file")
-        
-        echo "$destination"
-        echo $GEEQIE_DESTINATION
-        done
-      </programlisting>
-    </para>
-    <para>
-      If you want to run an editor in full-screen mode and wish full-screen to be maintained, include the following entry in the desktop file:
-      <programlisting>X-Geeqie-Keep-Fullscreen=true</programlisting>
-    </para>
-    <para>
-      Any terminal output from the editor command can be displayed with the following command:
-      <programlisting>X-Geeqie-Verbose=true</programlisting>
-    </para>
-    <para>
-      The editor can be restricted to run on only certain file types, for example:
-      <programlisting>X-Geeqie-File-Extensions=.jpg; .cr2</programlisting>
-      The entries are case insensitive.
-    </para>
-    <para>
-      <programlisting>X-Geeqie-Keep-Verbose-Multi=</programlisting>
-      TBD
-    </para>
-    <para>
-      The key or key combination to execute this function can be set with:
-      <programlisting>X-Geeqie-Hotkey=</programlisting>
-      Key combinations are of the form:
-
-      <programlisting>X-Geeqie-Hotkey=&lt;control&gt;y</programlisting>
-      <note>
-        This value may conflict with a setting in
-        <link linkend="GuideOptionsKeyboard" endterm="titleGuideOptionsKeyboard" />
-      </note>
-    </para>
-  </section>
-</section>
--- a/doc/docbook/GuideImageManagementExternalEditing.xml	Wed Oct 11 12:27:00 2017 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<chapter id="GuideImageManagementExternalEditing">
-  <title>External Actions</title>
-  <para>Geeqie provides the facility to execute external commands. In Geeqie these are called external editors.</para>
-  <para>However these commands are not limited to editing images - any external command may be called via this facility.</para>
-  <para>Actions may be performed on a single file, or on a set of selected files.</para>
-  <para>External editors can do anything from running simple operations like symlink to activating fully featured programs like Gimp. Nor does the action have to be performed on files - you may, for instance, configure an editor to download images from your digital camera.</para>
-  <para>
-    To perform these actions, Geeqie uses standard
-    <link linkend="GuideReferenceStandards">desktop</link>
-    files.
-  </para>
-  <para>
-    It is not necessary to understand the details of desktop file specifications because the
-    <link linkend="GuideEditorsConfig" endterm="titleGuideEditorsConfig" />
-    dialogue presents you with an easy-to-use template. This dialogue is accessed via
-    <menuchoice>
-      <guimenu>Edit</guimenu>
-      <guimenuitem>Configure Editors</guimenuitem>
-    </menuchoice>
-    .
-  </para>
-  <para>
-    Editors will appear in the menu
-    <menuchoice>
-      <guimenu>Edit</guimenu>
-      <guimenuitem>External Editors</guimenuitem>
-    </menuchoice>
-    , unless specified otherwise in the desktop file.
-  </para>
-  <para />
-  <para>Commands that are set to display their output in a window will show a dialogue when the command is executed.</para>
-  <para>The Result dialogue will display the command's text output. If the editor command will result in multiple runs of the same command for each file, you can use the Stop button to stop Geeqie from executing the command for remaining files.</para>
-  <para>
-    Once all commands have completed, or if the Stop button was pressed and the pending command has completed, you can use the Close button, or press
-    <code>Escape</code>
-    , to close the Result dialogue. The Result dialogue can not be closed while a command is still running.
-  </para>
-</chapter>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/docbook/GuideImageManagementPlugins.xml	Wed Oct 11 19:24:57 2017 +0100
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<chapter id="GuideImageManagementPlugins">
+  <title>Plugins</title>
+  <para>Geeqie provides the facility to execute external commands - any external command may be called via this facility.</para>
+  <para>Actions may be performed on a single file, or on a set of selected files.</para>
+  <para>Plugins can do anything from running simple operations like symlink to activating fully featured programs like Gimp. Nor does the action have to be performed on files - you may, for instance, configure a plugin to download images from your digital camera.</para>
+  <para>
+    To perform these actions, Geeqie uses standard
+    <link linkend="GuideReferenceStandards">desktop</link>
+    files.
+  </para>
+  <para>
+    It is not necessary to understand the details of desktop file specifications because the
+    <link linkend="GuidePluginsConfig" endterm="titleGuidePluginsConfig" />
+    dialogue presents you with an easy-to-use template. This dialogue is accessed via
+    <menuchoice>
+      <guimenu>Edit</guimenu>
+      <guimenuitem>Configure Plugins</guimenuitem>
+    </menuchoice>
+    .
+  </para>
+  <para>
+    Plugins will appear in the menu
+    <menuchoice>
+      <guimenu>Plugins</guimenu>
+    </menuchoice>
+    , unless specified otherwise in the desktop file.
+  </para>
+  <para />
+  <para>Commands that are set to display their output in a window will show a dialogue when the command is executed.</para>
+  <para>The Result dialogue will display the command's text output. If the plugin command will result in multiple runs of the same command for each file, you can use the Stop button to stop Geeqie from executing the command for remaining files.</para>
+  <para>
+    Once all commands have completed, or if the Stop button was pressed and the pending command has completed, you can use the Close button, or press
+    <code>Escape</code>
+    , to close the Result dialogue. The Result dialogue can not be closed while a command is still running.
+  </para>
+</chapter>
--- a/doc/docbook/GuideIndex.xml	Wed Oct 11 12:27:00 2017 +0100
+++ b/doc/docbook/GuideIndex.xml	Wed Oct 11 19:24:57 2017 +0100
@@ -64,7 +64,7 @@
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="GuideSidebars.xml" />
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="GuideOtherWindows.xml" />
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="GuideImageSearch.xml" />
-  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="GuideImageManagementExternalEditing.xml" />
+  <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="GuideImageManagementPlugins.xml" />
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="GuideImageManagement.xml" />
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="GuideColorManagement.xml" />
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="GuideImagePresentation.xml" />
@@ -77,4 +77,4 @@
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="GuideCredits.xml" />
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="GuideGnuFdl.xml" />
   <para />
-</book>
+</book>
--- a/doc/docbook/GuideMainWindowMenus.xml	Wed Oct 11 12:27:00 2017 +0100
+++ b/doc/docbook/GuideMainWindowMenus.xml	Wed Oct 11 19:24:57 2017 +0100
@@ -543,20 +543,6 @@
       <varlistentry>
         <term>
           <menuchoice>
-            <guimenu>External Editors</guimenu>
-          </menuchoice>
-        </term>
-        <listitem>
-          <para>
-            This submenu contains external editors that were found on the system. See
-            <link linkend="GuideImageManagementExternalEditing">Editors section</link>
-            for details.
-          </para>
-        </listitem>
-      </varlistentry>
-      <varlistentry>
-        <term>
-          <menuchoice>
             <guimenu>Orientation</guimenu>
           </menuchoice>
         </term>
@@ -909,6 +895,25 @@
     </variablelist>
     <para />
   </section>
+  <section id="Pluginsmenu">
+    <title>Plugins menu</title>
+    <variablelist>
+      <varlistentry>
+        <term>
+          <menuchoice>
+            <guimenu>Plugins</guimenu>
+          </menuchoice>
+        </term>
+        <listitem>
+          <para>
+            This menu contains the plugins (desktop files) that were found on the system. See the
+            <link linkend="GuideImageManagementPlugins">Plugins section</link>
+            for details.
+          </para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </section>
   <section id="Viewmenu">
     <title>View menu</title>
     <variablelist>
--- a/doc/docbook/GuideOptionsAdditional.xml	Wed Oct 11 12:27:00 2017 +0100
+++ b/doc/docbook/GuideOptionsAdditional.xml	Wed Oct 11 19:24:57 2017 +0100
@@ -8,7 +8,7 @@
     </para>
 
     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="GuideOptionsLayout.xml" />
-    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="GuideEditorsConfig.xml" />
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="GuidePluginsConfig.xml" />
     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="GuideOptionsHidden.xml" />
     <para />
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/docbook/GuidePluginsConfig.xml	Wed Oct 11 19:24:57 2017 +0100
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="utf-8"?>
+<section id="GuidePluginsConfig">
+  <title id="titleGuidePluginsConfig">Plugins Configuration</title>
+  <para />
+  <section id="PluginsConfigurationDialog">
+    <title>Plugins Configuration Dialog</title>
+    <para>
+      This dialog allows user to add new plugins or modify the system ones. It is available in the menu
+      <menuchoice>
+        <guimenu>Edit</guimenu>
+        <guimenuitem>Configure Plugins</guimenuitem>
+      </menuchoice>
+      .
+    </para>
+    <para>
+      The Plugins dialog shows list of all relevant plugins i.e. all installed desktop files that are designated either:
+      <itemizedlist spacing="compact">
+        >
+        <listitem>
+          <literal>Categories=Graphics</literal>
+        </listitem>
+        <listitem>
+          <literal>Categories=X-Geeqie</literal>
+        </listitem>
+      </itemizedlist>
+      <para />
+      The list has the following columns:
+    </para>
+    <variablelist spacing="compact">
+      <varlistentry>
+        <term>
+          <guilabel>Name</guilabel>
+        </term>
+        <listitem>
+          <para>Plugin name as specified in desktop file, and is the name displayed in menus.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>
+          <guilabel>Hidden</guilabel>
+        </term>
+        <listitem>
+          A plugin can be
+          <emphasis>Hidden</emphasis>
+          for one of these reasons:
+          <itemizedlist>
+            <listitem>
+              the desktop file contains
+              <literal>Hidden=TRUE</literal>
+              or
+              <literal>NoDisplay=TRUE</literal>
+            </listitem>
+            <listitem>
+              <literal>TryExec</literal>
+              binary was not found
+            </listitem>
+            <listitem>
+              <literal>MimeType</literal>
+              list does not contain images
+            </listitem>
+            <listitem>
+              <literal>MimeType</literal>
+              list is empty and
+              <literal>Categories</literal>
+              does not contain
+              <literal>X-Geeqie</literal>
+            </listitem>
+          </itemizedlist>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+    <variablelist spacing="compact">
+      <varlistentry>
+        <term>
+          <guilabel>Desktop file</guilabel>
+        </term>
+        <listitem>
+          Name of the desktop file, used as an identifier in
+          <link linkend="GuideOptionsKeyboard" endterm="titleGuideOptionsKeyboard" />
+          .
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>
+          <guilabel>Path</guilabel>
+        </term>
+        <listitem>Full path to the desktop file. Desktop files in user directories override the system ones with the same name.</listitem>
+      </varlistentry>
+    </variablelist>
+  </section>
+  <section id="Addingnewplugin">
+    <title>Adding new plugin</title>
+    <para>
+      <code>
+        <guibutton>
+          <guiicon>
+            <inlinegraphic fileref="document-new.png" />
+          </guiicon>
+          New
+        </guibutton>
+      </code>
+      opens a text editor with a desktop file template. You must amend the line
+      <programlisting>Exec=command %f</programlisting>
+      to contain the command you wish to execute. If it is more than a single command, you must create a script file and call that. If the location of the script file is not in your $PATH environment variable, you must include the full pathname.
+    </para>
+    <para />
+  </section>
+  <section id="Modifyinganexistingplugin">
+    <title>Modifying an existing plugin</title>
+    <para>
+      <code>
+        <guibutton>
+          <guiicon>
+            <inlinegraphic fileref="gtk-edit.png" />
+          </guiicon>
+          Edit
+        </guibutton>
+      </code>
+      opens a text editor with existing desktop file. For desktop files that are not writable by user, it allows saving to a Geeqie specific directory, where it overrides the system file (but only for Geeqie).
+    </para>
+  </section>
+  <section id="Deletingaplugin">
+    <title>Deleting a plugin</title>
+    <para>
+      <code>
+        <guibutton>
+          <guiicon>
+            <inlinegraphic fileref="edit-delete.png" />
+          </guiicon>
+          Delete
+        </guibutton>
+      </code>
+      can delete user writable desktop files. System desktop files can't be deleted directly, but it is possible to edit them and set
+      <literal>Hidden=TRUE</literal>
+      , see above.
+    </para>
+  </section>
+  <section id="Specialplugins">
+    <title>Special plugins</title>
+    <para>A desktop file with one of the following names has a special function. It will replace the corresponding internal command.</para>
+    <para>
+      <programlisting xml:space="preserve">
+        geeqie-copy-command.desktop
+        geeqie-move-command.desktop
+        geeqie-rename-command.desktop
+        geeqie-delete-command.desktop
+        geeqie-folder-command.desktop
+      </programlisting>
+    </para>
+    <para>This can be used for example for a custom trash command or for manipulation of files under version control.</para>
+  </section>
+  <section id="Geeqieextensions">
+    <title>Geeqie desktop file keys</title>
+    <para>
+      A desktop file for use only by Geeqie should have the following entries:
+      <programlisting>
+        Categories=X-Geeqie;
+        OnlyShowIn=X-Geeqie;
+      </programlisting>
+    </para>
+    <para>
+      A menu path where the plugin will appear, instead of in the default
+      <menuchoice>
+        <guimenu>Plugins</guimenu>
+      </menuchoice>
+      , can be set by including:
+      <programlisting>X-Geeqie-Menu-Path=&lt;FileMenuPath&gt;</programlisting>
+    </para>
+    <para>
+      Possible vales for
+      <emphasis>FileMenuPath</emphasis>
+      are:
+      <programlisting xml:space="preserve">
+        FileMenu
+        FileMenu/OpenSection
+        FileMenu/SearchSection
+        FileMenu/PrintSection
+        FileMenu/FileOpsSection
+        FileMenu/QuitSection
+        GoMenu
+        SelectMenu
+        SelectMenu/SelectSection
+        SelectMenu/ClipboardSection
+        SelectMenu/MarksSection
+        EditMenu/EditMenu
+        EditMenu/EditSection
+        EditMenu/OrientationMenu
+        EditMenu/RatingMenu
+        EditMenu/PropertiesSection
+        EditMenu/PreferencesSection
+        PluginsMenu
+        ViewMenu
+        ViewMenu/WindowSection
+        ViewMenu/FileDirMenu
+        ViewMenu/FileDirMenu/FolderSection
+        ViewMenu/FileDirMenu/ListSection
+        ViewMenu/DirSection
+        ViewMenu/ZoomMenu
+        ViewMenu/ZoomMenu/ConnectZoomMenu
+        ViewMenu/SplitMenu
+        ViewMenu/StereoMenu
+        ViewMenu/ColorMenu
+        ViewMenu/OverlayMenu
+        ViewMenu/ViewSection
+        ViewMenu/ToolsSection
+        ViewMenu/SlideShowSection
+        HelpMenu
+        HelpMenu/HelpSection
+      </programlisting>
+    </para>
+    <para>
+      If you want a plugin to use a user-definable path, the following entry must be made in the desktop file:
+      <programlisting>X-Geeqie-Filter=true</programlisting>
+    </para>
+    <para>
+      Desktop files containing this entry will be displayed in the Folder action list of the
+      <link linkend="CopyMoveandLink" endterm="titleGuideSidebarsSortManager" />
+      . The path of the bookmark clicked will be used by the desktop file.
+      <para />
+      If the desktop file is called from the menu, when the plugin is executed you are presented with a dialogue which enables a path to be selected. The path selected, appended by the filename currently being processed, is made available to the shell script either as an environment variable or via a call to geeqie --remote. The following code demonstrates the use of both methods:
+      <programlisting xml:space="preserve">
+        for file in "$@"
+        do
+        destination=$(geeqie --remote --get-destination:"$file")
+        
+        echo "$destination"
+        echo $GEEQIE_DESTINATION
+        done
+      </programlisting>
+    </para>
+    <para>
+      If you want to run a plugin in full-screen mode and wish full-screen to be maintained, include the following entry in the desktop file:
+      <programlisting>X-Geeqie-Keep-Fullscreen=true</programlisting>
+    </para>
+    <para>
+      Any terminal output from the plugin command can be displayed with the following command:
+      <programlisting>X-Geeqie-Verbose=true</programlisting>
+    </para>
+    <para>
+      The plugin can be restricted to run on only certain file types, for example:
+      <programlisting>X-Geeqie-File-Extensions=.jpg; .cr2</programlisting>
+      The entries are case insensitive.
+    </para>
+    <para>
+      <programlisting>X-Geeqie-Keep-Verbose-Multi=</programlisting>
+      TBD
+    </para>
+    <para>
+      The key or key combination to execute this function can be set with:
+      <programlisting>X-Geeqie-Hotkey=</programlisting>
+      Key combinations are of the form:
+
+      <programlisting>X-Geeqie-Hotkey=&lt;control&gt;y</programlisting>
+      <note>
+        This value may conflict with a setting in
+        <link linkend="GuideOptionsKeyboard" endterm="titleGuideOptionsKeyboard" />
+      </note>
+    </para>
+  </section>
+</section>
--- a/doc/docbook/GuideSidebarsSortManager.xml	Wed Oct 11 12:27:00 2017 +0100
+++ b/doc/docbook/GuideSidebarsSortManager.xml	Wed Oct 11 19:24:57 2017 +0100
@@ -60,7 +60,7 @@
       <title>Copy, Move, Link and Desktop actions</title>
       <para>
         Copy, Move and Symbolic Link are available operations to use on the active image; they should be self explanatory. In some cases, Desktop files are also listed. This is detailed in
-        <link linkend="Geeqieextensions" endterm="titleGuideEditorsConfig" />
+        <link linkend="Geeqieextensions" endterm="titleGuidePluginsConfig" />
       </para>
       <para />
     </section>
--- a/plugins/template.desktop	Wed Oct 11 12:27:00 2017 +0100
+++ b/plugins/template.desktop	Wed Oct 11 19:24:57 2017 +0100
@@ -62,12 +62,12 @@
 #    SelectMenu/ClipboardSection
 #    SelectMenu/MarksSection
 #    EditMenu
-#    EditMenu/ExternalMenu
 #    EditMenu/EditSection
 #    EditMenu/OrientationMenu
 #    EditMenu/RatingMenu
 #    EditMenu/PropertiesSection
 #    EditMenu/PreferencesSection
+#    PluginsMenu
 #    ViewMenu
 #    ViewMenu/WindowSection
 #    ViewMenu/FileDirMenu
--- a/src/desktop_file.c	Wed Oct 11 12:27:00 2017 +0100
+++ b/src/desktop_file.c	Wed Oct 11 19:24:57 2017 +0100
@@ -385,7 +385,7 @@
 
 static void editor_list_window_help_cb(GtkWidget *widget, gpointer data)
 {
-	help_window_show("GuideEditorsConfig.html");
+	help_window_show("GuidePluginsConfig.html");
 }
 
 static void editor_list_window_selection_changed_cb(GtkWidget *widget, gpointer data)
@@ -464,7 +464,7 @@
 
 	editor_list_window = ewl = g_new0(EditorListWindow, 1);
 
-	ewl->window = window_new(GTK_WINDOW_TOPLEVEL, "editors", PIXBUF_INLINE_ICON_CONFIG, NULL, _("Editors"));
+	ewl->window = window_new(GTK_WINDOW_TOPLEVEL, "editors", PIXBUF_INLINE_ICON_CONFIG, NULL, _("Plugins"));
 	gtk_window_set_type_hint(GTK_WINDOW(ewl->window), GDK_WINDOW_TYPE_HINT_DIALOG);
 	g_signal_connect(G_OBJECT(ewl->window), "delete_event",
 			 G_CALLBACK(editor_list_window_delete), NULL);
--- a/src/editors.c	Wed Oct 11 12:27:00 2017 +0100
+++ b/src/editors.c	Wed Oct 11 19:24:57 2017 +0100
@@ -308,7 +308,7 @@
 	editor->exec = g_key_file_get_string(key_file, DESKTOP_GROUP, "Exec", NULL);
 
 	editor->menu_path = g_key_file_get_string(key_file, DESKTOP_GROUP, "X-Geeqie-Menu-Path", NULL);
-	if (!editor->menu_path) editor->menu_path = g_strdup("EditMenu/ExternalMenu");
+	if (!editor->menu_path) editor->menu_path = g_strdup("PluginsMenu");
 
 	editor->hotkey = g_key_file_get_string(key_file, DESKTOP_GROUP, "X-Geeqie-Hotkey", NULL);
 
--- a/src/layout_util.c	Wed Oct 11 12:27:00 2017 +0100
+++ b/src/layout_util.c	Wed Oct 11 19:24:57 2017 +0100
@@ -1711,7 +1711,6 @@
   { "SelectMenu",	NULL,			N_("_Select"),				NULL,			NULL,					NULL },
   { "OrientationMenu",	NULL,			N_("_Orientation"),			NULL,			NULL,					NULL },
   { "RatingMenu",	NULL,			N_("_Rating"),					NULL,			NULL,					NULL },
-  { "ExternalMenu",	NULL,			N_("E_xternal Editors"),		NULL,			NULL,					NULL },
   { "PreferencesMenu",	NULL,			N_("P_references"),			NULL,			NULL,					NULL },
   { "ViewMenu",		NULL,			N_("_View"),				NULL,			NULL,					NULL },
   { "FileDirMenu",	NULL,			N_("_Files and Folders"),		NULL,			NULL,					NULL },
@@ -1721,6 +1720,7 @@
   { "SplitMenu",	NULL,			N_("Spli_t"),				NULL,			NULL,					NULL },
   { "StereoMenu",	NULL,			N_("Stere_o"),				NULL,			NULL,					NULL },
   { "OverlayMenu",	NULL,			N_("Image _Overlay"),			NULL,			NULL,					NULL },
+  { "PluginsMenu",	NULL,			N_("_Plugins"),				NULL,			NULL,					NULL },
   { "HelpMenu",		NULL,			N_("_Help"),				NULL,			NULL,					NULL },
 
   { "FirstImage",	GTK_STOCK_GOTO_TOP,	N_("_First Image"),			"Home",			N_("First Image"),			CB(layout_menu_image_first_cb) },
@@ -1773,7 +1773,7 @@
   { "SelectNone",	NULL,			N_("Select _none"),			"<control><shift>A",	N_("Select none"),			CB(layout_menu_unselect_all_cb) },
   { "SelectInvert",	NULL,			N_("_Invert Selection"),		"<control><shift>I",	N_("Invert Selection"),			CB(layout_menu_invert_selection_cb) },
   { "Preferences",	GTK_STOCK_PREFERENCES,	N_("P_references..."),			"<control>O",		N_("Preferences..."),			CB(layout_menu_config_cb) },
-  { "Editors",		GTK_STOCK_PREFERENCES,	N_("Configure _Editors..."),		NULL,			N_("Configure Editors..."),		CB(layout_menu_editors_cb) },
+  { "Plugins",		GTK_STOCK_PREFERENCES,	N_("Configure _Plugins..."),		NULL,			N_("Configure Plugins..."),		CB(layout_menu_editors_cb) },
   { "LayoutConfig",	GTK_STOCK_PREFERENCES,	N_("_Configure this window..."),	NULL,			N_("Configure this window..."),		CB(layout_menu_layout_config_cb) },
   { "Maintenance",	GTK_STOCK_FILE,			N_("_Thumbnail maintenance..."),	NULL,			N_("Thumbnail maintenance..."),		CB(layout_menu_remove_thumb_cb) },
   { "Wallpaper",	NULL,			N_("Set as _wallpaper"),		NULL,			N_("Set as wallpaper"),			CB(layout_menu_wallpaper_cb) },
@@ -1966,8 +1966,6 @@
 "      <separator/>"
 "    </menu>"
 "    <menu action='EditMenu'>"
-"      <menu action='ExternalMenu'>"
-"      </menu>"
 "      <placeholder name='EditSection'/>"
 "      <separator/>"
 "      <menu action='OrientationMenu'>"
@@ -1998,7 +1996,7 @@
 "      <placeholder name='PropertiesSection'/>"
 "      <separator/>"
 "      <menuitem action='Preferences'/>"
-"      <menuitem action='Editors'/>"
+"      <menuitem action='Plugins'/>"
 "      <menuitem action='LayoutConfig'/>"
 "      <menuitem action='Maintenance'/>"
 "      <placeholder name='PreferencesSection'/>"
@@ -2008,6 +2006,8 @@
 #endif
 "      <separator/>"
 "    </menu>"
+"    <menu action='PluginsMenu'>"
+"    </menu>"
 "    <menu action='ViewMenu'>"
 "      <menuitem action='ViewInNewWindow'/>"
 "      <menuitem action='PanView'/>"