Xfce Wiki

Sub domains
 

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

xfce:thunar:1.4:custom-actions [2015/10/05 22:03] (current)
ochosi created
Line 1: Line 1:
 +====== 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 setup 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 =====
 +
 +This section provides a step-by-step introduction to the **Custom Actions** plugin, demonstrating how to add a **Print File** action, which uses xfprint to print text files. 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 ''​Print File''​ as name and ''​Print the selected using xfprint''​ as description. Enter ''​xfprint4 %f''​ as command (the ''​%f''​ will be replaced with the path to the selected file, as explained in the dialog), and select an icon for the icon (in the screenshot the ''​xfprint.svg''​ icon was used). **NB:** Thunar seems to do the sensible thing when passing file/folder names with spaces in them, so don't worry excessively about putting single or double quotes around the "​%"​ placeholder.
 +
 +Now, continue with the second page (the {gui>​Appearance Conditions} page).
 +
 +We want to create an action that is only applicable to text files, so select the **Text Files** 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 text files.
 +
 +That's all. Click **OK** to close the **Create Action** dialog. The new action, labeled **Print File** will appear in the **Custom Actions** list.
 +
 +Now close the **Custom Actions** dialog, select a text file in Thunar and open the context menu (right-click on the file icon). The newly created **Print File** action will appear in the context menu, as shown in the screenshot below.
 +
 +{{ documentation:​thunar-custom-actions-3.png }}
 +
 +You can use the [[http://​thunar.xfce.org/​pwiki/​start#​mailinglist|thunar-dev mailinglist]] to get in touch with the developers, if you have questions about this short tutorial or custom actions in general.
 +
 +===== Examples =====
 +
 +Here are a few useful examples of custom actions. Feel free to extend this list.
 +
 +==== Finding files in the current folder ====
 +    * Name: **Search...**
 +    * Command: ''​gnome-search-tool --path=%f''​
 +    * File pattern: *
 +    * Appears if selection contains: Directories
 +
 +**Note:** For this action, you'll need to have ''​gnome-search-tool''​ installed, which is part of the ''​gnome-utils''​ package. This program also has a [[http://​linux.die.net/​man/​1/​gnome-search-tool|lot of other nice command-line options]] which you could use to create even more specialized actions.
 +
 +
 +
 +
 +
 +
 +==== Finding files in the current folder with catfish ====
 +    * Name: **Search files...**
 +    * Command: ''​%%catfish --fileman=thunar --path=%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.
 +
 +
 +
 +
 +
 +
 +==== Finding files inside the selected folder with catfish ====
 +    * Name: **Search files inside...**
 +    * Command: ''​%%catfish --fileman=thunar --path=%f%d%%''​
 +    * 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.
 +
 +==== Working 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 [[http://​thunar.xfce.org/​plugins.html#​thunar-archive-plugin|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 [[http://​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.
 +
 +==== Playing 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.
 +
 +==== Burning an ISO file to a CD ====
 +    * Name: **Burn with K3B**
 +    * Command: ''​%%k3b --cdimage %f%%''​
 +    * File pattern: *.iso
 +    * Appears if selection contains: Other Files
 +
 +==== Viewing images ====
 +    * Name: **View with GQview**
 +    * Command: ''​gqview %f''​
 +    * File pattern: *
 +    * Appears if selection contains: Directories,​ Image Files
 +**Note:** This tip also works just as well with GThumb
 +
 +
 +==== Converting PNGs to JPEGs ====
 +    * Name: **To JPEG**
 +    * Command: ''​convert %f -quality 75 %f.jpg''​
 +    * File pattern: *.png
 +    * Appears if selection contains: Image Files
 +
 +**Hint:** ''​`basename %f .png`.jpg''​ (be careful--those are //​back//​ticks) will strip the old .png extension off of the original filename.
 +
 +
 +
 +==== Losslessly Rotating JPEGs ====
 +    * Name: **Rotate Clockwise**
 +    * Command: ''​for file in %F; do tempfile=$(mktemp);​ (jpegtran -copy all -rotate 90 $file > $tempfile); mv -f $tempfile $file; rm -f $tempfile; done''​
 +    * File pattern: *.jpg;​*.JPG;​*.jpeg;​*.JPEG
 +    * Appears if selection contains: JPEG Image Files
 +**Note:** jpegtran is available as part of the libjpeg or libjpeg-progs packages of most distributions. Unlike using "​convert",​ the complicated loop structure is necessary with "​jpegtran":​ "​jpegtran -rotate 90 -outfile %F %F" will produce a 0kb file.
 +
 +==== Opening a terminal ====
 +    * Name: **Open in a terminal**
 +    * Command: ''​%%terminal --default-working-directory=%d%%''​
 +    * File pattern: *
 +    * Appears if selection contains: Directories
 +
 +**Note:** You might need to type ''​xfce4-terminal''​ instead of just ''​terminal''​ for some distributions.
 +
 +==== Opening a root terminal ====
 +    * Name: **Open a root terminal here**
 +    * Command: ''​gksu "​xfce4-terminal --default-working-directory=%f"''​
 +    * File pattern: *
 +    * Appears if selection contains: Directories
 +
 +**Note:** You should rewrite the command with normal straight quotes.
 +
 +==== Opening a root Thunar ====
 +    * Name: **Open a root Thunar here**
 +    * Command: ''​gksu thunar %f''​
 +    * File pattern: *
 +    * Appears if selection contains: Directories
 +
 +==== Editing as root ====
 +    * Name: **Edit as root**
 +    * Command: ''​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).
 +
 +==== Creating a symbolic link ====
 +    * Name: **Create symlink**
 +    * Command: ''​ln -s %f "%n (symlink)"''​
 +    * File pattern: *
 +    * Appears if selection contains: Directories,​ other files
 +
 +==== Saving the selected file/​folder'​s pathname to the clipboard ====
 +For fans of the Windows "​SendTo Extensions"​ power toy. **This tip requires the ''​xclip''​ program, which you may need to install using your distribution'​s package manager.**
 +    * Name: **Copy Pathname to Clipboard**
 +    * Description:​ Copies file's full pathname to the X PRIMARY selection
 +    * Command: ''​echo -n %f | xclip -i''​
 +    * File pattern: *
 +    * Appears if selection contains: //any//
 +
 +
 +
 +==== Setting an image as the desktop background ====
 +    * Name: **Set as desktop background**
 +    * Command:<​code>​xfconf-query -c xfce4-desktop -p /​backdrop/​screen0/​monitor0/​image-path -s %f</​code>​
 +    * File pattern: *
 +    * Appears if selection contains: Image Files
 +
 +==== Viewing the 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.
 +
 +==== Using '​nano'​ text editor ====
 +    * Command: ''​terminal -x nano %f''​
 +
 +Since nano isn't a GUI app, you must start it in a terminal window.
 +
 +==== Comparing selected files/​directories ====
 +    * Name: **Compare**
 +    * Command: ''​meld %F''​
 +    * File pattern: *
 +    * Appears if selection contains: Directories and Text files
 +
 +**Note:** You will need ''​meld''​ package.
 +
 +==== Changing OpenOffice.org 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 subtitles with periscope ====
 +    * Name: **Download subtitles**
 +    * Command: ''​periscope -l en %F && zenity --info --title "​Done"​ --text "​Subtitles downloaded successfully"​ || zenity --error --title "​Error"​ --text "​Subtitles not downloaded successfully"''​
 +    * File pattern: *
 +    * Appears if selection contains: Video Files
 +
 +**Note:** You will need ''​python-periscope''​ package. Get it [[http://​code.google.com/​p/​periscope/​|here]]. You'll also neeed ''​zenity''​ package. This command will try to get the English subtitles, change ''​-l en''​ to something else (''​fr'',​ ''​de'',​ ''​pt-br'',​ ...). You should rewrite the command with normal straight quotes.
 +==== 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 neeed ''​zenity''​ package.
 +
 +==== Resize and email images ====
 +     * Name: **Resize Images then email them**
 +     * Description:​ Select Image files and resize them before sending in email. Leaves originals untouched.
 +     * File pattern: *
 +     * Appears if selection contains: Image files
 +** Note:** You will need the script here (which I name thunar-resize-sendto and place in /​usr/​local/​bin),​ "​zenity",​ and "​imagemagick"​ packages. I used the xfce-newmail icon. Use the following command line:\\
 +/​usr/​local/​bin/​thunar-resize-sendto %F\\
 +\\
 +Not sure why this isn't part of Thunar plugins, since it's pretty sweet. Tested on Xubuntu Lucid.\\
 +\\
 +**NOTE!:** This uses /​tmp/​thunar-pics0 & /​tmp/​thunar-pics1 as temp directories,​ and will completely remove anything in these directories. ​ I doubt there'​s a conflict, but you've been warned. ​ You can see the list of files it creates below in /tmp.
 +
 +<​code>​
 +#!/bin/bash
 +#input to this is a list of files to send.
 +# depends on thunar, ImageMagick and Zenity
 +TMP=/​tmp/​thunar-pics
 +LOG=/​tmp/​thunar-resize-sendto.log
 +MARKER=/​tmp/​thunar-resize-sendto.marker
 +SENDTO="/​usr/​lib/​thunar/​thunar-sendto-email"​
 +SIZES="​320x200 640x480 800x600 1024x640"​
 +DISCMD="​zenity --list --text=\"​Select Size\" --checklist --column=Select --column=New --hide-header --print-column=ALL"​
 +# Find unused tmp dir
 +if [ -e $MARKER ]; then
 +  CUR=$(cat $MARKER)
 +else
 +  CUR=1
 +fi
 +if [ 1 == $CUR ]; then
 +  CUR=0
 +else
 +  CUR=1
 +fi
 +echo "​$CUR"​ >$MARKER
 +TEMP="​${TMP}$CUR"​
 +mkdir -p $TEMP
 +rm -rf $TEMP/*
 +
 +for s in $SIZES; do
 +  if [ -z $COLS ]; then 
 +    COLS="​$s "
 +  else
 +    COLS="​$COLS 0 $s"
 +  fi
 +done
 +SIZE=$($DISCMD $COLS)
 +echo "​CUR=$CUR SIZE=$SIZE"​ >$LOG
 +
 +for f in "​$@";​ do
 +  n=$(basename "​$f"​) ​
 +  echo "item '​$f'​->​$TEMP/​$n"​ >>​$LOG
 +  convert $f -resize $SIZE "​$TEMP/​$n"​
 +  FILES="​$FILES $TEMP/​$n"​
 +done
 +$SENDTO $FILES
 +</​code>​