~~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.
{{:xfce:thunar:uca-create.png|Create Custom Action Dialog Window}}
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.
{{:xfce:thunar:uca-list.png|Custom Actions List Dialog}}
[[|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]]