~~NOTOC~~
{{ :xfce:thunar.png?nolink|}}
====== Thunar - Custom Actions ======
Thunar allows users to add custom actions to the file and folder context menus (by the use of the ''thunar-uca'' plugin, part of the Thunar distribution, in the ''plugins/'' subdirectory). You can set up new actions in the {gui>Custom Actions} dialog, available via the {gui>Configure custom actions...} item in the {gui>Edit} menu.
This page serves as an introduction to the **Custom Actions** plugin, and includes a list of useful examples.
* **[[#Adding a Custom Action|Adding a Custom Action]]**
* **[[#Using mnemonics to open Custom Actions|Using mnemonics to open Custom Actions]]**
* **Examples**
* **[[#Search files with catfish|Search files with catfish]]**
* **[[#Work with archives (tar, gzip, etc)|Work with archives (tar, gzip, etc)]]**
* **[[#Play/Enqueue music files|Play/Enqueue music files]]**
* **[[#Convert PNGs to JPEGs|Convert PNGs to JPEGs]]**
* **[[#Rotate JPEGs|Rotate JPEGs]]**
* **[[#Open terminal here|Open terminal here]]**
* **[[#Open root terminal here|Open root terminal here]]**
* **[[#Open thunar as root here|Open thunar as root here]]**
* **[[#Edit file as root|Edit file as root]]**
* **[[#Create a symbolic link|Create a symbolic link]]**
* **[[#Create a hardlink|Create a hardlink]]**
* **[[#View disk usage of the current directory|View disk usage of the current directory]]**
* **[[#Open file in terminal text editor|Open file in terminal text editor]]**
* **[[#Compare selected files/directories|Compare selected files/directories]]**
* **[[#Change OpenDocument-supported formats|Change OpenDocument-supported formats]]**
* **[[#Download video subtitles|Download video subtitles]]**
* **[[#Rename subtitles easily|Rename subtitles easily]]**
* **[[#Move files into a new folder|Move files into a new folder]]**
* **[[#Create Shared Thumbnails|Create Shared Thumbnails]]**
* **[[#Use 'bulk rename' on a single file|Use 'bulk rename' on a single file]]**
* **[[#Trust multiple desktop files at once|Trust multiple desktop files at once]]**
* **[[https://help.ubuntu.com/community/ThunarCustomActions|List of assorted custom actions]]** (from Ubuntu documentation)
----
===== Adding a Custom Action =====
This section provides a step-by-step introduction to the **Custom Actions** plugin, demonstrating how to add a simple action. We start by opening the **Custom Actions** dialog as explained above. In the dialog, click on the first button in the list of buttons (the one labeled with the ''+''). The **Create Action** dialog will appear, as shown in the screenshot below.
On the first page, enter ''Create symlink'' in {gui>Name:} Enter ''ln -Ts %f %n" (link)"'' for the {gui>Command:} (the ''%f'' will be replaced with the path to the selected file, as explained in the dialog), and select an icon by clicking {gui>Icon:} (in the screenshot ''emblem-symbolic-link'' was used).
Optionally, you can specify a {gui>Submenu:}, in order to group multiple custom actions into the same menu.
Never quote field codes, unless you know why [particularly true if their expansion contains quotes, but not only]
Always quote shell variable expansions, unless you know why [classical shell programming advice, but it might be useful to recall here]
When a field code appears in quotes, you can generally extract it and concatenate:
cmd "foo %f bar" (wrong) ->; cmd "foo "%f" bar" (correct)
Or you can put its content in a shell variable and use this variable instead:
cmd "foo %f bar" (wrong) ->; f=%f; cmd "foo $f bar" (correct)
In case of multiple arguments, you can safely use a for loop in that way:
for f in %F; do cmd "foo $f bar"; done
Now, continue with the second page (the {gui>Appearance Conditions} page).
We want to create an action that is only applicable to folders, so select the **Folders** options and unselect the options for the other file types. Next you can specify a **File Pattern** to display the action only for text files that match a certain pattern. In the example, we set the file pattern to ''*'' (which matches all filenames) to indicate that the action should be displayed for all folders.
That's all. Click **OK** to close the **Create Action** dialog. The new action, labeled **Search with Catfish** will appear in the **Custom Actions** list.
Now close the **Custom Actions** dialog, select a folder in Thunar and open the context menu (right-click on the file icon). The newly created **Search with Catfish** action will appear in the context menu, as shown in the screenshot below.
[[|Back to Top]]
----
===== Using mnemonics to open Custom Actions =====
When you create a Thunar Custom Action you can set the name with an underscore "_" before a letter to use it as mnemonic. When you right click in a Thunar view, you can type the letter to access your custom action.
----
===== Examples =====
Here are a few useful examples of custom actions. Feel free to extend this list.
==== Search files with catfish ====
* Name: **Search files in folder**
* Command: ''catfish %f''
* File pattern: *
* Appears if selection contains: Directories
**Note:** For this action, you'll need to have ''catfish'' installed, which is part of the ''catfish'' package.
----
==== Work with archives (tar, gzip, etc) ====
* Name: **Extract here (bzip2)**
* Command: ''tar xjf %n''
* File pattern: *.tar.bz2;*.tbz2
* Appears if selection contains: Other Files
* Name: **Extract here (zip)**
* Command: ''unzip %f''
* File pattern: *.zip
* Appears if selection contains: Other Files
* Name: **Create tar.gz from folder**
* Command: ''tar czvf %n.tar.gz %n''
* File pattern: *
* Appears if selection contains: Directories
**Hint:** You may prefer the [[https://docs.xfce.org/xfce/thunar/archive|Thunar Archive Plugin]], which does pretty much the same thing with less manual setup required on your part. It's either included with your distribution (in the case of [[https://xubuntu.org/|Xubuntu]]), or available as a separate package (''thunar-archive-plugin'' in Debian Etch). You might also need the ''xarchiver'' or "squeeze" package for things to work quite right.
----
==== Play/Enqueue music files ====
* Name: **Play with XMMS**
* Command: ''xmms %F''
* File pattern: *
* Appears if selection contains: Directories, Audio Files
* Name: **Enqueue in XMMS**
* Command: ''xmms -e %F''
* File pattern: *
* Appears if selection contains: Directories, Audio Files
**Hint:** Works exactly the same with Audacious.
----
==== Convert PNGs to JPEGs ====
* Name: **Convert to JPEG**
* Command: ''convert %f -quality 75 %f.jpg''
* File pattern: *.png
* Appears if selection contains: Image Files
**Hint:** ''"$(basename %f .png).jpg"'' will strip the old .png extension off of the original filename.
----
==== Rotate JPEGs ====
* Name: **Rotate Clockwise**
*
* Command: ''for file in %F; do exiftran -i9 "$file"; done''
* Command(counterclockwise): ''for file in %F; do exiftran -i2 "$file"; done''
* File pattern: *.jpg;*.JPG;*.jpeg;*.JPEG
* Appears if selection contains: JPEG Image Files
**Note:** exiftran is available for most distributions.
----
==== Open terminal here ====
* Name: **Open terminal here**
* Command 1: ''for f in %F; do exo-open --working-directory "$f" --launch TerminalEmulator; done''
* Command 2: ''for f in %F; do if [ -d "$f" ]; then exo-open --working-directory "$f" --launch TerminalEmulator; elif [ -z "$default" ]; then default=1; exo-open --launch TerminalEmulator; fi done''
* File pattern: *
* Appears if selection contains: any
''Command 1'' will open a terminal on all selected folder.
''Command 2'' in addition will open a terminal on the current directory, when executed on a non-folder files (or multiple)
----
==== Open root terminal here ====
* Name: **Open root terminal here**
* Command(1): ''pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY dbus-launch xfce4-terminal --default-working-directory=%f''
* Command(2): ''gksu xfce4-terminal --default-working-directory=%f''
* File pattern: *
* Appears if selection contains: Directories
**Note:** Use either pkexec or gksu, depending on what is available for your distro.
**Note:** You should rewrite the command with normal straight quotes.
----
==== Open thunar as root here ====
* Name: **Open thunar as root here**
* Command(1): ''pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY dbus-launch thunar %f''
* Command(2): ''thunar admin:/''''/''''/%f''
* Command(3): ''gksu thunar %f''
* File pattern: *
* Appears if selection contains: Directories
**Note:** Some distributions no longer include ''gksu''. Use ''pkexec'' or the ''admin'' interface instead.
----
==== Edit file as root ====
* Name: **Edit as root**
* Command(1): ''pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY dbus-launch put-your-favourite-text-editor-here %f''
* Command(2): ''gksu put-your-favourite-text-editor-here %f''
* File pattern: *
* Appears if selection contains: Text files
**Note:** You'll need to replace put-your-favourite-text-editor-here with your favourite text editor (e.g. mousepad or geany). Also, see previous note about ''gksu''.
----
==== Create a symbolic link ====
* Name: **Create symlink**
* Command: ''ln -Ts %f %n" (symlink)"''
* File pattern: *
* Appears if selection contains: Directories, other files
----
==== Create a hardlink ====
* Name: **Create hardlink**
* Command: ''ln %f %n" (hardlink)"''
* File pattern: *
* Appears if selection contains: Directories, other files
----
==== View disk usage of the current directory ====
* Name: **Disk Usage**
* Command: ''baobab %d''
* File pattern: *
* Appears if selection contains: Tick all the boxes
**Note:** The idea is to get a visual picture of the current directory and any subdirectories. You could also use fsview or filelight, but the visuals are crisper in baobab.
----
==== Open file in terminal text editor ====
* Name: **Open in Terminal**
* Command: xfce4-terminal -x editor %f
* File pattern: *
* Appearance Conditions: Text files
----
==== Compare selected files/directories ====
* Name: **Compare**
* Command: ''meld %F''
* File pattern: *
* Appears if selection contains: Directories and Text files
**Note:** You will need the ''meld'' package.
----
==== Change OpenDocument-supported formats ====
**Note:** You will need ''unoconv'' package for all following actions.
* Name: **Convert to ODT**
* Command: ''unoconv -f odt %F''
* File pattern: *.doc;*.docx
* Appears if selection contains: Other files
* Name: **Export to PDF**
* Command: ''unoconv -f pdf %F''
* File pattern: *.doc;*.docx;*.odt;*.odp;*.pps;*.ppt;*.xls;*.xlsx;*.ods;*.pptx
* Appears if selection contains: Other files
You can go on, try ''man unoconv'' for details.
----
==== Download video subtitles ====
* Name: **Download subtitles**
* Command: ''~/.local/bin/OpenSubtitlesDownload.py --gui=gnome %F''
* File pattern: *
* Appears if selection contains: Video Files
**Note:** You will need to follow the instructions on [[https://github.com/emericg/OpenSubtitlesDownload|OpenSubtitlesDownload]] which requires ''python'' and ''zenity'' (check the link for a complete list of requirements). You can tweak the behavior of the python script simply by editing with a text editor, the code is all commented, so it is very easy to understand.
----
==== Rename subtitles easily ====
* Name: **Rename subtitles**
* Description: Select video and subtitles file. Subtiles will be reanmed based on the video name.
* Command: ''subrnm %F''
* File pattern: *.avi;*.mp4;*.crdownload;*.srt;*.sub
* Appears if selection contains: Video Files, Text Files, Other Files
**Note:** You will need ''subrnm'' script. Get it [[http://pastebin.com/DA8jwHz3|here]]. You'll also need ''zenity'' package.
----
==== Move files into a new folder ====
* Name: **Move into new folder**
* Description: Select any number of file/folders. A dialog will popup in which you can write the name of a new folder to create. Selected Files will be moved there.
* Command: ''NEW_FOLDER=$(/usr/bin/zenity --entry --title 'Move into new folder' --text 'Please enter a name for the new folder') && mkdir "$NEW_FOLDER" && mv %F "$NEW_FOLDER"''
* File pattern: *
* Appears if selection contains: All
**Note:** You'll will need the ''zenity'' package.
----
==== Create Shared Thumbnails ====
* Name: **Create shared thumbnails**
* Description: Creates [[https://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html#SHARED|shared thumbnails]] for the selected folder and all subfolders via DBus Thumbnailing service.
* Command: ''/path/to/script/sharedx.sh %f''
* File pattern: *
* Appears if selection contains: Folders
**Note:** Required to download [[https://raw.githubusercontent.com/SKefalidis/DBusSharedThumbnailRepositoryCreator/main/sharedx.sh|this script]] and store it locally. Requires ''python3'' and ''realpath''.
----
==== Use 'bulk rename' on a single file ====
* Name: **Open in bulk renamer**
* Description: Opens the bulk renamer for a single file
* Command: ''thunar --bulk-rename %f''
* File pattern: *
* Appears if selection contains: any
* Range: 1-1
----
==== Trust multiple desktop files at once ====
* Name: **Trust Desktop Files**
* Description: Sets gvfs checksum and +x flag for all selected *.desktop files
* Command: ''for f in %F; do sha256sum "$f" | awk '{print $1}' | xargs gio set "$f" metadata::xfce-exe-checksum && chmod +x "$f"; done''
* File pattern: *.desktop
* Appears if selection contains: other files
* Range: 1-1
[[|Back To Top]]
----
[[:xfce:thunar:|Return to Thunar Main Documentation Page]]