How to extend the Thunar file manager with custom actions

Thunar is the file manager included in Xfce, a free and open source Desktop Environment which implements the traditional desktop metaphor, and has become the favorite of many users which switched to it when the GNOME project introduced the GNOME shell. Thunar is light on resources but doesn’t lack functionalities which can be extended further by creating custom actions.

In this tutorial we learn how to extend the Thunar file manager by creating custom actions.

In this tutorial you will learn:

  • How to create custom actions from the Thunar interface
  • How to create Thunar custom actions with a text editor
How to extend the Thunar file manager with custom actions
How to extend the Thunar file manager with custom actions

Category Requirements, Conventions or Software Version Used
System Distribution independent
Software Thunar
Other None
Conventions # – requires given linux-commands to be executed with root privileges either directly as a root user or by use of sudo command $ – requires given linux-commands to be executed as a regular non-privileged user

Creating Thunar custom actions graphically

Although light on system resources, Thunar is a very handy file manager, which allows the user to create custom actions directly from its graphical interface. To create a custom action, what we need to do, is to navigate in the Thunar main menu and click on the “Edit -> Configure custom actions…” entry. This way we will access the dedicated graphical tool:

Accessing the custom actions graphical tool
Accessing the custom actions graphical tool



The custom action graphical tool allows the user to easily create, update and delete custom actions. As you can see in the above screenshot a custom action already exists (it is created by default): its purpose is to open the terminal emulator in a selected directory, by clicking on the related entry in the file manager context menu. To create a new custom action, we need to click on the “plus” icon:

The custom action graphical tool
The custom action graphical tool

 The new window that will appear is composed by two tabs: “Basic” and “Appearance Conditions”. In the former, we can enter basic information for our custom action, in order:

  1. The action name: this is what will appear in the Thunar context menu
  2. The action description: this is a brief description of the purpose of the custom action
  3. The command invoked when the user clicks on the custom action entry in the Thunar context menu
  4. An optional keyboard shortcut for the custom action
  5. A checkbox to enable/disable startup notifications for our custom action
  6. An optional icon which will be displayed beside the action name in the Thunar context menu
The Basic tab
The Basic tab

In the “Appearance Conditions” tab, instead, we can establish the conditions which must be satisfied in order for the entry to appear in the Thunar context menu:

The Appearance conditions tab
The “Appearance conditions” tab

In the “File Pattern” field we can specify a single or a semicolon-separated list of file patterns which should be matched for the actions entry to appear in the menu. Here a “*” (glob) matches everything, so for example, if we want our action to appear only when files with the “.txt” extension are selected, we would write: *.txt. Notice that this doesn’t discriminate on the base of the file type, but merely on its name.



To establish a rule based on file MIME types, instead, we must tick the appropriate checkboxes below this field. For our action entry to appear in the menu only when a text file is selected, for example, we would tick the “Text Files” checkbox. Notice that the action will be available only when the selection contains exclusively the specified type of files (in this case, for example, it won’t appear in the menu if we select a text file and an image file).

A trivial example

Let’s create a custom action as a trivial example. Our action will let us edit a selected image by opening it with GIMP, the GNU Image Manipulation Program. Here is how we populate the fields we saw above:

As you can see, we choose “Edit with Gimp” as the name of our custom action, provided a brief description for it, and entered gimp %f as the command that will be executed when the user clicks on the menu entry. Here gimp is, of course the name of the application, and %f is a placeholder that will be substituted by the path of the first selected file. The other available placeholders are described in the interface itself.



We enabled startup notification for our custom action: this makes so that a spinning cursor is displayed while the action is being performed, so in this case while Gimp is launched. This is can be used as a feedback to notify the user that action has been launched.

In order for our custom action to be easily identified in the Thunar context menu, we decided to associate it with the “Gimp” icon. Next, In the “Appearance Conditions” tab, we established that the action should appear only when one or more images are selected, no matter their names:

To save our custom action, we just click on the “OK” button. The next time we select and right-click on an image, we should see the related entry in the context menu:

Our custom action entry in the Thunar context menu
Our custom action entry in the Thunar context menu

Creating custom actions with a text editor

In certain cases we may need to create a custom action programmatically, to automate our setup for example. The custom actions we create via the Thunar graphical interface are stored in the ~/.config/Thunar/uca.xml file. Here is the current content of the file on my system:

<?xml version="1.0" encoding="UTF-8"?>
<actions>
<action>
	<icon>utilities-terminal</icon>
	<name>Open Terminal Here</name>
	<unique-id>1671100132617415-1</unique-id>
	<command>exo-open --working-directory %f --launch TerminalEmulator</command>
	<description>Example for a custom action</description>
	<patterns>*</patterns>
	<startup-notify/>
	<directories/>
</action>
<action>
	<icon>gimp</icon>
	<name>Edit with Gimp</name>
	<unique-id>1671615960737911-1</unique-id>
	<command>gimp %f</command>
	<description>Edit selected image with Gimp</description>
	<patterns>*</patterns>
	<startup-notify/>
	<image-files/>
</action>
</actions>

As you can see, the root tag is <actions>, and each custom actions is defined inside an <action> tag. Actions are described with dedicated tags: the <icon> tag, for example, contains the name of the icon associated with the action; same thing for the action name, description etc (the <unique-id> tag is generated automatically). Boolean options are represented by self-closing tags, like <startup-notify/> and <image-files/>: using them is the equivalent of ticking the related checkboxes in the graphical interface.

Conclusions

In this tutorial we learned how to extend the functionalities of the Thunar file manager by creating custom actions. We saw how custom actions can be created directly from the Thunar interface and what are the fields that needs to be defined. We also created a custom action as an example, and, finally, we saw how custom action are stored in a simple text file, using the xml syntax. Thunar is not the only file manager which can be extended by using custom actions: take a look at our tutorial about extending PCManFM and Nautilus by creating extensions written in python and or custom scripts.



Comments and Discussions
Linux Forum