Thunar Custom Actions – Le fichier uca.xml

Vous l’aurez compris nous allons parler de Xubuntu. Les Thunar Custom Actions sont à Thunar (Gestionnaire de fichiers de Xubuntu) ce que les Nautilus-Actions étaient à Nautilus. Ils permettent de rajouter des actions supplémentaires lors d’un clic droit sur un fichier ou un dossier.

Le fichier de configuration des Thunar Custom Actions se nomme uca.xml et se trouve dans le dossier ~/.config/Thunar/. Je vous rappelle que vous pouvez afficher les fichiers et dossiers cachés à l’aide de Control+H sur Xubuntu. Vous pouvez également configurer vos Customs Actions à partir de Thunar (c’est la méthode recommandée) dans le menu Édition, Configurer les actions personnalisées….

Voici mon fichier ~/.config/Thunar/uca.xml à l’heure d’aujourd’hui.

<?xml encoding="UTF-8" version="1.0"?>
<actions>
<action>
	<icon>Terminal</icon>
	<name>Guake here</name>
	<unique-id>1397790178269842-1</unique-id>
	<command>/home/babar/guake_here.sh "%f"</command>
	<description>Ouvrir guake ici</description>
	<patterns>*</patterns>
	<directories/>
</action>
<action>
	<icon>Terminal</icon>
	<name>Guake here</name>
	<unique-id>1397790167269842-1</unique-id>
	<command>/home/babar/guake_here.sh "%d" %f</command>
	<description>Ouvrir guake ici</description>
	<patterns>*</patterns>
    <audio-files/>
    <image-files/>
    <other-files/>
    <text-files/>
    <video-files/>
</action>
<action>
	<icon>/home/babar/Icons/cut.png</icon>
	<name>Cut avconv</name>
	<unique-id>1397790123469842-1</unique-id>
	<command>position=$(zenity --entry --title="Début de la capture" --text="Début" --entry-text="00:20:00"); duration=$(zenity --entry --title="Durée de la capture" --text="Durée" --entry-text="60"); folder=$(zenity --list  --title="Choix du dossier" --text "Dans quel dossier ?" --radiolist --column "Cocher" --column "Dossier" FALSE Films TRUE Séries FALSE Famille); /home/babar/guake_avconv.sh %d %n $position $duration $folder</command>
	<description>Couper une vidéo avec avconv</description>
	<patterns>*</patterns>
    <video-files/>
</action>
<action>
	<icon>filefind</icon>
	<name>Rechercher des fichiers</name>
	<unique-id>1397790178269908-2</unique-id>
	<command>recoll</command>
	<description>Rechercher des fichiers</description>
	<patterns>*</patterns>
	<directories/>
</action>
<action>
	<icon>/home/babar/Icons/thumbnail.png</icon>
	<name>Thumbnail</name>
	<unique-id>1399215671623455-4</unique-id>
	<command>/home/babar/thumbnail.sh %N</command>
	<description>Créer des thumbnails de vidéos</description>
	<patterns>*</patterns>
	<video-files/>
</action>
<action>
	<icon>/home/babar/Icons/ghost.png</icon>
	<name>Hide files</name>
	<unique-id>1399211231623455-4</unique-id>
	<command>extension=$(echo %n | sed 's/.*.//g'); saisie=$(zenity --entry --title="Cacher une extension" --text="Extension" --entry-text="$extension"); for i in *."$saisie"; do echo "$i"; done >> .hidden;</command>
	<description>Cacher tous les fichiers d'une extension donnée</description>
	<patterns>*</patterns>
	<audio-files/>
	<image-files/>
	<other-files/>
	<text-files/>
	<video-files/>
</action>
</actions>

On peut voir que la définition d’une « action » est délimitée par deux balises

<action>

(le début de la définition de l’action) et

</action>

(la fin de la définition de l’action). Par conséquent si vous voulez rajouter une action, le plus simple est de copier-coller le block entier.

Je vais prendre celui-ci.

<action>
	<icon>filefind</icon>
	<name>Rechercher des fichiers</name>
	<unique-id>1397790178269908-2</unique-id>
	<command>recoll</command>
	<description>Rechercher des fichiers</description>
	<patterns>*</patterns>
	<directories/>
</action>

icon : Le nom et le chemin de l’icône affiché à côté de votre Custom Action (action personnalisée)
name : Le nom de votre action personnalisée. A noter que vous pouvez avoir plusieurs fois le même nom pour différentes actions personnalisées
unique-id : L’id unique de votre action personnalisée qui doit impérativement être unique contrairement au nom de votre action personnalisée
command : La commande de votre action personnalisée, tout simplement ce qu’elle fait
description : La description de votre action personnalisée qui s’affiche en bas de la fenêtre de Thunar

Rien de très compliqué à comprendre jusqu’ici, il faut juste s’assurer que unique-id est bien unique et que nous n’en avons pas deux identiques dans le fichier uca.xml. Si nous faisons une modification dans le fichier uca.xml, il est nécessaire de fermer toutes les fenêtres de Thunar afin qu’au prochain lancement de Thunar la nouvelle configuration du fichier uca.xml soit chargée.

Vous aurez probablement remarqué les balises

<audio-files/>

,

<image-files/>

,

<other-files/>

,

<text-files/>

,

<video-files/>

,

<directories/>

. Ces balises servent à préciser quand doit apparaître l’action personnalisée ou plus précisément à quel endroit. Pour l’action « Rechercher des fichiers », nous avons une balise

<directories/>

, cela signifie que cette action ne sera proposée que lors d’un clic droit sur un dossier.

Mettons que j’écrive un script pour traiter une vidéo, j’utiliserai alors la balise

<video-files/>

. Lors d’un clic droit sur un fichier vidéo, j’aurai mon action personnalisée qui sera proposée. En revanche si je clique sur un dossier ou une image alors cette action ne sera pas proposée dans le menu contextuel du clic droit.

Comme on peut le voir avec l’action nommée Hide files, cette action sera proposée sur les fichiers audios, vidéos, les images, les fichiers textes, les autres fichiers mais pas sur les dossiers. Pour résumer il est donc nécessaire d’ajouter une de ces balises lorsque l’on souhaite faire apparaître notre action personnalisée lors d’un clic droit.

Les balises

<patterns>
</patterns>

servent à définir une liste de motifs sur le nom du fichier/dossier. Imaginons que j’utilise la balise

<audio-files/>

, je veux pouvoir utiliser un script flac_to_mp3.sh sur les fichiers .flac et un script wav_to_mp3.sh sur les fichiers .wav. Pour la première action, je ferai ainsi

<patterns>*.flac</patterns>

et pour la seconde action

<patterns>*.wav</patterns>

ainsi la première action n’apparaîtra que sur les fichiers .flac et la seconde action n’apparaîtra que sur les fichiers .wav.

On a vu la déco maintenant on va voir comment utiliser des scripts et les paramètres. Vous avez remarqué

<command>/home/babar/guake_here.sh "%f"</command>

, à quoi correspond %f ?

%f : Le chemin vers le premier fichier sélectionné
%F : Les chemins vers tous les fichiers sélectionnés
%d : Répertoire contenant le fichier qui est passé dans %f
%D : Répertoires contenant les fichiers qui sont passés dans %F
%n : Le premier nom de fichier sélectionné (sans le chemin)
%N : Les noms des fichiers sélectionnés (sans les chemins)

Vous retrouvez ces informations dans le menu Édition de Thunar, Configurer les actions personnalisées…. Étudions dans le détail l’action Hide files :

extension=$(echo %n | sed 's/.*.//g'); saisie=$(zenity --entry --title="Cacher une extension" --text="Extension" --entry-text="$extension"); for i in *."$saisie"; do echo "$i"; done >> .hidden;

extension=$(echo %n | sed 's/.*.//g'); : On crée une variable nommée extension contenant l’extension du fichier sélectionné. A partir du nom du fichier sélectionné (sans le chemin) echo %n, on récupére son extension sed 's/.*.//g'. Si je choisis babar.jpg par exemple, je récupère donc jpg. Si je choisis a.mkv par exemple, je récupère donc mkv
saisie=$(zenity --entry --title="Cacher une extension" --text="Extension" --entry-text="$extension"); : On crée une variable nommée saisie contenant l’extension à cacher. On crée une boîte de dialogue grâce à Zenity (Zenity est un outil qui permet d’afficher des boîtes de dialogue). Le titre de cette boîte de dialogue sera Cacher une extension --title="Cacher une extension", le texte dans cette boîte de dialogue sera Extension --text="Extension" enfin le champ de texte à remplir sera déjà pré-rempli avec le résultat de la variable $extension --entry-text="$extension"
for i in *."$saisie"; do echo "$i"; done >> .hidden; : On fait une boucle for i in *."$saisie"; do echo "$i"; done. Tous les noms de fichiers dont l’extension est $saisie (par exemple jpg si notre fichier était babar.jpg) sont écrits dans le fichier .hidden >> .hidden

Cette action permet de cacher tous les fichiers terminant par une extension précise (par exemple jpg, pdf, mp4, iso, etc.) d’un dossier. Je vous renvoie chez GNOME Libre pour un petit rappel sur le fichier .hidden et sur comment cacher des fichiers.

Nous verrons dans le prochain article l’utilisation des scripts avec les Thunar Custom Actions.

Sources :
http://docs.xfce.org/xfce/thunar/custom-actions
https://help.ubuntu.com/community/ThunarCustomActions

Déjà 3 avis pertinents dans Thunar Custom Actions – Le fichier uca.xml

  • youloulou
    Slt,
    petit hors sujet : je voudrais que la date de mes fichiers dans thunaz affiche aussi l’heure !! pas seulement dd/mm/yyyy !
    est-ce possible ou dois-je changer de gestionnaire de fichier ?
    Merci ! Cdlt

Les commentaires sont fermés.