Warning, /utilities/krusader/doc/handbook/useractions.docbook is written in an unsupported language. File is not indexed.

0001 <!--
0002     SPDX-FileCopyrightText: 2000-2003 Shie Erlich <erlich@users.sourceforge.net>
0003     SPDX-FileCopyrightText: 2000-2003 Rafi Yanai <yanai@users.sourceforge.net>
0004     SPDX-FileCopyrightText: 2004-2010 Frank Schoolmeesters <codeknight@users.sourceforge.net>
0005     SPDX-FileCopyrightText: 2000-2022 Krusader Krew <https://krusader.org>
0006 -->
0007 <sect1 id="useractions">
0008   <title>UserActions</title>
0009   <indexterm>
0010     <primary>UserActions</primary>
0011   </indexterm>
0012   <!-- Thanks to Jonas Bar -->
0013   <para>With ActionMan you can set up, configure and manage
0014   UserActions. Some general settings are configured with 
0015   <link linkend="konfig-useractions">Konfigurator</link>. With
0016   UserActions you can perform actions on files in the panel or to
0017   access &krusader; internal functions with parameters
0018   directly using placeholders. The actions integrate seamlessly
0019   into &plasma; action system, which means that the
0020   standard Edit Toolbar and Edit Shortcut dialogs will show
0021   UserActions, too. The UserActions are stored in 
0022   <filename>
0023   ~/.local/share/krusader/useractions.xml</filename> or <filename>krusader/useraction.xml</filename> in the folder which can be determined using the <userinput>qtpaths --paths GenericDataLocation</userinput> command.
0024   Several 
0025   <link linkend="useraction-xml">examples</link> are included in the
0026   documentation. UserActions can be edited / added / imported /
0027   exported by using ActionMan. The default UserActions are stored
0028   in 
0029   <filename>
0030   /usr/share/krusader/useraction-examples.xml</filename>.
0031   UserActions can appear nearly everywhere where <quote>normal</quote> KActions
0032   can be placed. The actions can even be placed in the menu bar, but for that the 
0033   <filename>krusaderui.rc</filename> file must be edited. A few
0034   examples:</para> 
0035   <itemizedlist>
0036     <listitem>
0037       <para>
0038         <link linkend="useractions-menu">Useractions Menu</link>
0039       </para>
0040     </listitem>
0041     <listitem>
0042       <para><link linkend="useractions">User Menu</link></para>
0043     </listitem>
0044     <listitem>
0045       <para><link linkend="actions_toolbar">Actions Toolbar</link></para>
0046     </listitem>
0047     <listitem>
0048       <para>right click menus</para>
0049     </listitem>
0050     <listitem>
0051       <para>&etc;</para>
0052     </listitem>
0053   </itemizedlist>
0054   <para>&krusader;'s UserActions tool is very
0055   powerful and customizable if you are familiar with writing
0056   UserActions in general.</para>
0057   <tip>
0058     <para>Several UserActions are provided by default. Please 
0059     <link linkend="help_krusader">upload your favorite
0060     UserActions</link> so that they become available for the
0061     &krusader; community. Thanks!<!-- We provide also an
0062 <ulink url="https://krusader.org/phpBB/viewforum.php?f=11">UserActions Forum</ulink>.--></para>
0063   </tip>
0064   <figure id="screenshot-actionman" float="1">
0065     <title>ActionMan</title>
0066     <mediaobject>
0067       <imageobject>
0068         <imagedata fileref="actionman.png"></imagedata>
0069       </imageobject>
0070       <textobject>
0071         <phrase>ActionMan</phrase>
0072       </textobject>
0073     </mediaobject>
0074   </figure>
0075   <para>Basically, UserActions are a method to call external
0076   programs with variable parameters. For example, you could have a
0077   UserAction with the following 
0078   <command>xmms 
0079   <option>--enqueue %aList("Selected")%</option></command> to
0080   enqueue all selected items of the active panel to the current
0081   instance of xmms. Additionally, there is limited access to
0082   &krusader; internal functions requiring parameters.
0083   For example, 
0084   <command>%aPanelSize("80")%</command> will set the width of the
0085   active panel to 80% of the &krusader; mainwindow.
0086   Since the parameter of placeholders can contain other
0087   placeholders, few scripts are possible.
0088   </para>
0089   <para>
0090     <emphasis role="bold">Managing UserActions</emphasis>
0091   </para>
0092   <para>Open Konfigurator and choose <menuchoice><guimenu>User Actions</guimenu>
0093   <guimenuitem>Start ActionMan</guimenuitem></menuchoice>, in which you can add, edit, remove, import and export
0094   UserActions.</para> 
0095   <itemizedlist>
0096     <listitem>
0097       <para>
0098       <guimenuitem>Add Action</guimenuitem>: If you add an new
0099       action, you get an empty input mask where you can enter all
0100       the properties you desire. The action will be added as soon
0101       as you press 
0102       <guimenuitem>Apply</guimenuitem>. Afterwards, the name is shown
0103       in the list on the left.</para>
0104     </listitem>
0105     <listitem>
0106       <para>To edit a UserAction: Select the UserAction on the
0107       left. Then choose it if you want to edit its properties. The
0108       changes will only take effect when you press 
0109       <guimenuitem>Apply</guimenuitem>.</para>
0110     </listitem>
0111     <listitem>
0112       <para>
0113       <guimenuitem>To remove a UserAction</guimenuitem>: Select the
0114       UserAction on the left and click the <inlinemediaobject>
0115 <imageobject> <imagedata fileref="Icon-edit-delete.png"
0116 format="PNG"/> </imageobject> </inlinemediaobject>button.</para>
0117     </listitem>
0118     <listitem>
0119       <para>
0120       <guimenuitem>To import a UserAction</guimenuitem>: If you
0121       import some actions, they will be automatically added to your
0122       list. If there are name conflicts (the names have to be
0123       unique because these are the ID for &plasma; action
0124       system), you are asked to resolve them. For this, the list on
0125       the left will only show the actions where conflicts exist.
0126       You can now give them new names or remove them.</para>
0127     </listitem>
0128     <listitem>
0129       <para>
0130       <guimenuitem>Export Action</guimenuitem>: If you export a
0131       UserAction you have to give a filename in which to store it.
0132       If it does not exist, it will be created. If the file already
0133       contains UserActions, the action you are exporting will be
0134       added to that file.</para>
0135     </listitem>
0136   </itemizedlist>
0137   <para>All actions you have defined are now shown in the
0138   user menu and in &plasma; dialogs for changing shortcuts
0139   and managing the toolbar. In addition, all actions available for
0140   the current item will also show up in the right click
0141   menu.</para>
0142   <para>
0143     <emphasis role="bold">Basic Properties</emphasis>
0144   </para>
0145   <para>
0146   <guimenuitem>Identifier</guimenuitem>, <guimenuitem>Title</guimenuitem>
0147   and <guimenuitem>Command line</guimenuitem> are always required, all the other properties
0148   are optional.</para> 
0149   <itemizedlist>
0150     <listitem>
0151       <para>
0152       <guimenuitem>Identifier</guimenuitem>: A unique name of
0153       the UserAction, used to identify it for &plasma;
0154       action system.</para>
0155     </listitem>
0156     <listitem>
0157       <para>
0158       <guimenuitem>Icon button</guimenuitem>: The icon for your
0159       UserAction.</para>
0160     </listitem>
0161     <listitem>
0162       <para>
0163       <guimenuitem>Category</guimenuitem>: Categories are used for a
0164       better overview. They appear as submenu items in
0165       the <guimenuitem>Useractions</guimenuitem> menu.</para>
0166     </listitem>
0167     <listitem>
0168       <para>
0169       <guimenuitem>Title</guimenuitem>: The title displayed in
0170       the menus or dialogs.</para>
0171     </listitem>
0172     <listitem>
0173       <para>
0174       <guimenuitem>Tooltip</guimenuitem>: A tooltip for your
0175       UserAction, &eg; displayed in the toolbar on
0176       mouseover.</para>
0177     </listitem>
0178     <listitem>
0179       <para>
0180       <guimenuitem>Description</guimenuitem>: A description of
0181       what the UserAction does. This is also displayed as 
0182       <guimenuitem>What's This</guimenuitem> if you 
0183       <keycombo action="simul">&Shift;
0184       <keycap>F1</keycap></keycombo> click on your
0185       UserAction.</para>
0186     </listitem>
0187     <listitem>
0188       <para>
0189       <guimenuitem>Command</guimenuitem>: The command which
0190       will be executed. You can add placeholder using a &GUI; with
0191       the <guibutton>add</guibutton> button.</para>
0192     </listitem>
0193     <listitem>
0194       <para>
0195       <guimenuitem>Workdir</guimenuitem>: The working folder
0196       for the command which will be executed.</para>
0197     </listitem>
0198     <listitem>
0199       <para>
0200       <guimenuitem>Execution mode</guimenuitem>:</para>
0201       <itemizedlist>
0202         <listitem>
0203           <para>
0204           <guimenuitem>Normal</guimenuitem>: Normal execution
0205           mode.</para>
0206         </listitem>
0207         <listitem>
0208           <para>
0209           <guimenuitem>Run in terminal</guimenuitem>: Runs the
0210           command in the terminal.</para>
0211         </listitem>
0212         <listitem>
0213           <para>
0214           <guimenuitem>Run in embedded terminal emulator</guimenuitem>: Runs the
0215           command in the embedded terminal.</para>
0216         </listitem>
0217         <listitem>
0218           <para>
0219           <guimenuitem>Collect output</guimenuitem>: Collects the
0220           output of the executed program in a &GUI;
0221           window.</para>
0222         </listitem>
0223         <listitem>
0224           <para>
0225           <guimenuitem>Separate standard error</guimenuitem>:
0226           When <quote>Collect output</quote> is used the stdout and stderr are
0227           separately collected.</para>
0228         </listitem>
0229       </itemizedlist>
0230     </listitem>
0231     <listitem>
0232       <para>
0233       <guimenuitem>Command accepts</guimenuitem>:</para>
0234       <itemizedlist>
0235         <listitem>
0236           <para>
0237           <guimenuitem>Local files only (no &URL;s)</guimenuitem>: Tells
0238           the placeholder it should return local addresses.</para>
0239         </listitem>
0240         <listitem>
0241           <para>
0242           <guimenuitem>&URL;s (remote and local)</guimenuitem>:
0243           Tells the placeholder it should return
0244           &URL;s.</para>
0245         </listitem>
0246       </itemizedlist>
0247     </listitem>
0248     <!--    Not yet implemented, but will be after 1.50 stable is released
0249         <listitem><para><guimenuitem>On multiple selection</guimenuitem>:  </para>
0250         <itemizedlist>
0251    <listitem><para><guimenuitem>Separate call for each file</guimenuitem>: executes the command for each selected file.
0252              </para></listitem>
0253          </itemizedlist>
0254       </listitem> -->
0255     <listitem>
0256       <para>
0257       <guimenuitem>Default shortcut</guimenuitem>: Configures a default
0258       shortcut for the UserAction.</para>
0259     </listitem>
0260     <listitem>
0261       <para>
0262       <guimenuitem>Enabled</guimenuitem>: if checked, the useraction is shown in the <link linkend="useractions">User Menu</link>, 
0263        otherwise the useraction will be hidden.</para>
0264     </listitem>
0265   </itemizedlist>
0266   <para>
0267     <emphasis role="bold">Command-line syntax</emphasis>
0268   </para>
0269   <para>Basically, everything you type in the command line will get
0270   executed (if you type <quote>ls -l</quote>, <quote>ls -l</quote> gets executed). You have
0271   the possibility to get a character string from
0272   &krusader; which represents the current state of the
0273   panel. This is done using placeholders. A placeholder begins with
0274   a percent-sign ('%') and is followed by a panel indicator ('a'
0275   for the active, 'o' for the other, 'l' for the left and 'r' for
0276   the right panel. If the placeholder does not need a panel to
0277   operate on, you have to indicate this by an underscore ('_')).
0278   Then comes the name of the placeholder (see the list below),
0279   which may get some parameters enclosed in quotes. Finally, again
0280   the percent sign.</para>
0281   <para>This sounds very complicated, so let's make an example:
0282   '%aList("Selected")%' is replaced by a list of all selected items
0283   in the active panel. So a command like 'xmms --enqueue
0284   %aList("All", " ", "", "*.mp3")%' will execute xmms with a list
0285   of all .mp3s in the current panel, separated by a single
0286   blank.</para>
0287   <para>Currently, these placeholders are implemented:</para> 
0288   <itemizedlist>
0289     <listitem>
0290       <para>
0291       <userinput>Path</userinput> - replaced by the panels
0292       path</para>
0293       <orderedlist>
0294         <listitem>
0295           <para>Parameter (optional):
0296           Automatic escape spaces. Default:
0297           yes</para>
0298         </listitem>
0299       </orderedlist>
0300     </listitem>
0301     <listitem>
0302       <para>
0303       <userinput>Count</userinput> - replaced by the number of
0304       &lt;first parameter&gt;</para>
0305       <orderedlist>
0306         <listitem>
0307           <para>Parameter: Which items;
0308           either <quote>All</quote>, <quote>Selected</quote>, <quote>Files</quote> or <quote>Dirs</quote></para>
0309         </listitem>
0310       </orderedlist>
0311     </listitem>
0312     <listitem>
0313       <para>
0314       <userinput>Filter</userinput> - replaced by the panel's filter
0315       mask</para>
0316     </listitem>
0317     <listitem>
0318       <para>
0319       <userinput>Current</userinput> - replaced by the current
0320       item</para>
0321       <orderedlist>
0322         <listitem>
0323           <para>Parameter (optional): Omit the
0324           current path. Default: no</para>
0325         </listitem>
0326         <listitem>
0327           <para>Parameter (optional):
0328           Automatic escape spaces. Default:
0329           yes</para>
0330         </listitem>
0331       </orderedlist>
0332     </listitem>
0333     <listitem>
0334       <para>
0335       <userinput>List</userinput> - replaced by a list of all
0336       &lt;first parameter&gt;</para>
0337       <orderedlist>
0338         <listitem>
0339           <para>Parameter: Which items;
0340           either <quote>All</quote>, <quote>Selected</quote>, <quote>Files</quote> or <quote>Dirs</quote></para>
0341         </listitem>
0342         <listitem>
0343           <para>Parameter (optional):
0344           Separator between the items.
0345           Default:
0346           <quote>&nbsp;</quote></para>
0347         </listitem>
0348         <listitem>
0349           <para>Parameter (optional): Omit the
0350           current path. Default: no</para>
0351         </listitem>
0352         <listitem>
0353           <para>Parameter (optional):
0354           Filtermask (for all but <quote>Selected</quote>).
0355           Default: *</para>
0356         </listitem>
0357         <listitem>
0358           <para>Parameter (optional):
0359           Automatic escape spaces. Default:
0360           yes</para>
0361         </listitem>
0362       </orderedlist>
0363     </listitem>
0364     <listitem>
0365       <para>
0366       <userinput>Select</userinput> - manipulates the selection in a
0367       panel</para>
0368       <orderedlist>
0369         <listitem>
0370           <para>Parameter: Filtermask</para>
0371         </listitem>
0372         <listitem>
0373           <para>Parameter (optional):
0374           manipulate in which way; either <quote>Set</quote>, <quote>Add</quote> or <quote>Remove</quote>.
0375           Default: <quote>Set</quote></para>
0376         </listitem>
0377       </orderedlist>
0378     </listitem>
0379     <listitem>
0380       <para>
0381       <userinput>Goto</userinput> - changes the panels' path to
0382       &lt;first parameter&gt;</para>
0383       <orderedlist>
0384         <listitem>
0385           <para>Parameter: A relative or
0386           absolute path, or an &URL;</para>
0387         </listitem>
0388         <listitem>
0389           <para>Parameter (optional): Open the
0390           location in a new tab. Default:
0391           no</para>
0392         </listitem>
0393       </orderedlist>
0394     </listitem>
0395     <listitem>
0396       <para>
0397       <userinput>Ask</userinput> - asks the user for some text and
0398       is replaced by the answer</para>
0399       <orderedlist>
0400         <listitem>
0401           <para>Parameter: The
0402           Question</para>
0403         </listitem>
0404         <listitem>
0405           <para>Parameter (optional): A
0406           default answer</para>
0407         </listitem>
0408         <listitem>
0409           <para>Parameter (optional): A
0410           caption for the question box</para>
0411         </listitem>
0412       </orderedlist>
0413     </listitem>
0414     <listitem>
0415       <para>
0416       <userinput>Clipboard</userinput> - manipulates the
0417       clipboard</para>
0418       <orderedlist>
0419         <listitem>
0420           <para>Parameter: The text that
0421           should go to the clipboard (you may want to use
0422           <quote>%aCurrent%</quote> here)</para>
0423         </listitem>
0424         <listitem>
0425           <para>Parameter (optional): Append
0426           the text to the current content of the clipboard with
0427           this separator</para>
0428         </listitem>
0429       </orderedlist>
0430     </listitem>
0431     <listitem>
0432       <para>
0433       <userinput>Copy</userinput> - copies a file, useful for quick,
0434       local backups</para>
0435       <orderedlist>
0436         <listitem>
0437           <para>Parameter: What should be
0438           copied</para>
0439         </listitem>
0440         <listitem>
0441           <para>Parameter: Where it should
0442           be copied</para>
0443         </listitem>
0444       </orderedlist>
0445     </listitem>
0446     <listitem>
0447       <para>
0448       <userinput>Sync</userinput> - opens the Synchronizer with a
0449       given profile</para>
0450       <orderedlist>
0451         <listitem>
0452           <para>Parameter: A profile for the
0453           Synchronizer</para>
0454         </listitem>
0455       </orderedlist>
0456     </listitem>
0457     <listitem>
0458       <para>
0459       <userinput>NewSearch</userinput> - opens the search windows
0460       with a given profile</para>
0461       <orderedlist>
0462         <listitem>
0463           <para>Parameter: A profile for the
0464           search module</para>
0465         </listitem>
0466       </orderedlist>
0467     </listitem>
0468     <listitem>
0469       <para>
0470       <userinput>Profile</userinput> - loads a given panel
0471       profile</para>
0472       <orderedlist>
0473         <listitem>
0474           <para>Parameter: A panel
0475           profile</para>
0476         </listitem>
0477       </orderedlist>
0478     </listitem>
0479     <listitem>
0480       <para>
0481       <userinput>Each</userinput> - splits the commandline into a
0482       list. These commands are executed one after another.</para>
0483       <orderedlist>
0484         <listitem>
0485           <para>Parameter: A list item (all,
0486           all files, all dirs, all selected).</para>
0487         </listitem>
0488       </orderedlist>
0489     </listitem>
0490     <listitem>
0491       <para>
0492       <userinput>Move</userinput> - move from source to
0493       destination.</para>
0494       <orderedlist>
0495         <listitem>
0496           <para>Parameter: A source</para>
0497         </listitem>
0498         <listitem>
0499           <para>Parameter: A
0500           destination</para>
0501         </listitem>
0502       </orderedlist>
0503     </listitem>
0504     <listitem>
0505       <para>
0506       <userinput>PanelSize</userinput> - change the ratio between
0507       the two panels.</para>
0508       <orderedlist>
0509         <listitem>
0510           <para>Parameter (optional): A
0511           integer value, &eg;, 80 makes the active panel use 80% of
0512           &krusader;'s width (height in vertical mode),
0513           omitting the parameter means 50%.</para>
0514         </listitem>
0515       </orderedlist>
0516     </listitem>
0517     <listitem>
0518       <para>
0519       <userinput>Ask</userinput> - cancel the execution.</para>
0520       <orderedlist>
0521         <listitem>
0522           <para>Parameter (optional): A string
0523           for the cancel question.</para>
0524         </listitem>
0525       </orderedlist>
0526     </listitem>
0527     <listitem>
0528       <para>
0529       <userinput>ListFile</userinput> - is replaced by path/file name
0530       of a temporary file containing a list of items</para>
0531       <orderedlist>
0532         <listitem>
0533           <para>Parameter:
0534           path/filename</para>
0535         </listitem>
0536       </orderedlist>
0537     </listitem>
0538     <listitem>
0539       <para>
0540       <userinput>ColSort</userinput> - set the sorting on a column
0541       of a specific panel.</para>
0542       <orderedlist>
0543         <listitem>
0544           <para>Parameter: Column: Either
0545           <quote>Name</quote>, <quote>Ext</quote>, <quote>Type</quote>, <quote>Size</quote>, <quote>Modified</quote>, <quote>Perms</quote>,
0546           <quote>rwx</quote>, <quote>Owner</quote> and <quote>Group</quote></para>
0547         </listitem>
0548         <listitem>
0549           <para>Parameter: Sort sequence:
0550           Either <quote>Toggle</quote>, <quote>Asc</quote>, <quote>Desc</quote></para>
0551         </listitem>
0552       </orderedlist>
0553     </listitem>
0554     <listitem>
0555       <para>
0556       <userinput>View</userinput> - set the view mode.</para>
0557       <orderedlist>
0558         <listitem>
0559           <para>Parameter: View mode: Either
0560           <quote>generic</quote>, <quote>text</quote>, <quote>hex</quote></para>
0561         </listitem>
0562         <listitem>
0563           <para>Parameter: Window Mode:
0564           Either <quote>tab</quote>, <quote>window</quote></para>
0565         </listitem>
0566       </orderedlist>
0567     </listitem>
0568   </itemizedlist>
0569   <para>A &GUI;-based helper for placeholder adding is
0570   provided. Spaces in Path, Current and List are by default,
0571   automatically escaped. There is one more important thing to know:
0572   All placeholders that interact with &krusader;
0573   internal functions are called at expand time (meaning directly
0574   when the placeholders are replaced). External programs are
0575   called at execution time (meaning after all placeholders are
0576   replaced).</para>
0577   <para>
0578     <emphasis role="bold">Advanced Properties</emphasis>
0579   </para>
0580   <para>Here you can configure where your command should be visible
0581   (for the right click menu). In addition, it is possible to change
0582   the command executed and confirm it separately. You can also set
0583   a user under which the command should be executed.</para> 
0584   <itemizedlist>
0585     <listitem>
0586       <para>Configures if the action is valid for a Protocol, Path,
0587       &MIME; type or File name.</para>
0588     </listitem>
0589     <listitem>
0590       <para>Tweaking the command line before being executed.</para>
0591     </listitem>
0592     <listitem>
0593       <para>Set a different user for the execution (this has no
0594       effect in &krusader; internal functions)</para>
0595     </listitem>
0596   </itemizedlist>
0597 </sect1>