Créer des service-menus dans Konqueror (Personnaliser le clic-droit)
But de ce document
Ce document me sert de mémo pour créer des service-menus dans Konqueror. Un service-menu permet de personnaliser le clic-droit dans Konqueror pour effectuer différentes actions en fonction du type de fichier sélectionné.
Emplacement des service-menus
Si le service-menu doit être disponible pour tous les utilisateurs, il faut le placer dans le dossier suivant :
usr/share/apps/konqueror/servicemenus
Il est possible également de créer des service-menus personnalisés pour chaque utilisateur en les plaçant dans le profil de cet utilisateur dans :
~/.kde/share/apps/konqueror/servicemenus/
Remarque : Si le répertoire « servicemenus » n’existe pas il faut le créer.
ATTENTION : Le nom du fichier décrivant un service-menu doit obligatoirement se terminer par « .desktop »
Exemple de service-menu
Ce service menu tout simple se contente d’afficher deux menus faisant la même chose et affichant dans une boîte de dialogue la liste des fichiers sélectionnés :
[Desktop Entry]
ServiceTypes=all/all
TryExec=kdialog
Actions=Test1;_SEPARATOR_;Test2
X-KDE-Submenu=Mon Sous Menu
[Desktop Action Test1]
Name=Test1
Icon=arts
Exec=kdialog --msgbox '%u'
[Desktop Action Test2]
Name=Test2
Exec=kdialog --msgbox '%u'
Un service-menu a toujours plusieurs sections :
Ligne « ServiceTypes »
La ligne « ServiceTypes » permet de définir sur quels types de fichiers ou dossiers le menu apparaîtra.
La ligne suivante fera apparaître le menu pour tous les fichiers et dossiers :
ServiceTypes=all/all
La ligne suivante fera apparaître le menu uniquement si des dossiers sont sélectionnés :
ServiceTypes=inode/directory
La ligne suivante fera apparaître le menu uniquement si des fichiers sont sélectionnés :
ServiceTypes=all/allfiles
Le signe « * » permet de prendre en compte tous les types de fichiers d’une catégorie (ex : image) :
ServiceTypes=image/*
Il est possible également d’indiquer plusieurs types de fichiers en les séparants par des virgules :
ServiceTypes=image/jpeg,application/pdf
Inversement, cette ligne permet d’exclure certains types de fichiers
ExcludeServiceTypes=application/x-iso,kdedevice/*
Remarque : Pour connaître la liste complète de tous les types de fichiers, il faut depuis « Konqueror » aller dans le menu « Configuration / Configurer Konqueror / Associations de fichiers ». Ensuite, il faut rechercher dans la liste le type souhaité ou utiliser la zone « Chercher un motif de fichiers »
Ligne « TryExec »
Cette ligne facultative, permet de vérifier que le programme utilisé est installé sur le système. Si le programme n’est pas disponible, le menu n’apparaîtra pas.
TryExec=kdialog
Remarque : Si vous utilisez plusieurs programmes, il est possible de mette plusieurs lignes pour tester la présence de chaque programme.
Ligne « Actions »
Cette ligne doit indiquer toutes les actions présentent dans le service-menu. Chaque action doit correspondre à une section. Chaque action est séparée par un point-virgule. Le mot clé « _SEPARATOR_ » permet d’ajouter une ligne horizontale de séparation dans le menu. Exemple :
Actions=Test1;_SEPARATOR_;Test2
Ligne "X-KDE-Submenu »
Cette ligne permet de placer les différentes actions dans un sous-menu. Sans cette ligne, les actions sont placées directement sous le menu « Action ». Si plusieurs service-menus (fichier .desktop) utilisent le même sous-menu, toutes les actions seront regroupées dans celui-ci.
X-KDE-Submenu=Mon Sous Menu
En ajoutant le code de la langue entre des crochets, il est possible d’avoir ce texte en plusieurs langues en fonction de la configuration de KDE. Exemple :
X-KDE-Submenu=Mon Sous Menu (in english)
X-KDE-Submenu[fr]=Mon Sous Menu (en français)Ligne « Name »
Cette ligne indique le texte qui apparaîtra dans le menu contextuel.
Name=Test1
En ajoutant le code de la langue entre des crochets, il est possible d’avoir ce texte en plusieurs langues en fonction de la configuration de KDE. Exemple :
Name=Test1 (in english)
Name[fr]=Test1 (en français)Ligne « Icon »
Cette ligne permet de définir l’icône à afficher à gauche du texte du menu. Exemple :
Icon=arts
Remarque 1 : Pour connaître les icônes disponibles, il faut depuis « Konqueror » faire un « Clic droit + Propriété » sur un fichier et cliquer sur l’icône.
Remarque 2 : Cette ligne peut également être ajoutée dans la section « [Desktop Entry] ». Dans ce cas elle sert à indiquer l’icône du fichier en lui même (fichier .desktop).
Ligne « Exec »
Cette ligne permet de définir la commande à exécuter pour les fichiers ou dossiers sélectionnés. Exemple :
Exec=kdialog --msgbox '%u'
Avec des parenthèses et le signe « && », il est possible d’exécuter plusieurs commandes sur la même ligne. Exemple :
Exec=(cd %d && tar chjf %n.tar.bz2 %n)
Si le script est complexe, il est possible de faire appel à un programme externe avec cette syntaxe :
Exec=/bin/sh -c "VotreScript.sh" '%u'
La variable « %u » contient l’URL du fichier sélectionné. Si plusieurs fichiers sont sélectionnés, le programme sera lancé pour chaque fichier. Vous trouverez ci-dessous les variables disponibles pour vos scripts :
| Variable | Contenu |
|---|---|
| %f | URL complète du fichier (Chemin+nom). Si plusieurs fichiers sont sélectionnés, le programme sera exécuté pour chaque fichier |
| %F | Liste des URL de tous les fichiers sélectionnés. Dans ce cas, le programme est exécuté une seule fois mais il doit être capable de traiter cette liste. |
| %u | Idem %f (Je n’ai vu aucune différence) |
| %U | Idem %F (Je n’ai vu aucune différence) |
| %d | Chemin du fichier sans son nom |
| %D | Liste des chemins des fichiers sélectionnés. La sélection peut en effet comprendre des fichiers compris dans plusieurs dossiers |
| %n | Nom du fichier sans son chemin |
| %N | Liste des noms des fichiers sélectionnés |
En ajoutant le code de la langue entre crochets, il est possible d’avoir le texte en plusieurs langues en fonction de la configuration de KDE. Exemple :
Exec=kdialog --msgbox "In english : %u"
Exec[fr]=kdialog --msgbox "En français : %u"Il est possible également d’utiliser dcop pour dialoguer avec les applications KDE. Par exemple, cette commande permet de mettre en fond d’écran l’image sélectionnée :
Exec=dcop kdesktop KBackgroundIface setWallpaper %U 6
Pour plus d’explications sur les possibilités de dcop, vous pouvez lire cet article :
Pour finir, voici quelques exemples de commandes trouvés dans les service-menus de KDE :
Exec=dcop amarok playlistbrowser addPodcast %u
Exec=dcop amarok playlist playMedia %U
Exec=amarok --queue %U
Exec=ark --extract-to "%d" "%u"
Exec=kprinter -t %n --caption %n --icon %i --miniicon %m %U
Exec=kio_media_mounthelper -u %u
Exec=dcop kitchensync PluckerInterface "addPluckerUrl(KURL)" %u
Exec=cabextract -d "%d" "%F"
Exec=cd %D; pdftk %F output "`kdialog --title "Save file"Remarques sur l’organisation des menus
La ligne suivante, permet de forcer l’affichage des actions directement dans le menu principale et non pas dans le sous-menu action :
X-KDE-Priority=TopLevel
Sans cette ligne, les actions seront regroupés dans le sous-menu « Action ».
La ligne suivante, il est possible de placer les action dans le sous-menu indiqué :
X-KDE-Submenu=Mon Sous Menu
Le paramètre « _SEPARATOR_ » placé dans la ligne « Actions= », permet de mettre une ligne séparatrice pour organiser les action :
Actions=Test1;_SEPARATOR_;Test2
Si plusieurs « service-menus » sont créés pour un même type de fichier, toutes les actions seront affichées. Si ces « service-menus », utilisent le même sous-menu, elles seront toutes affichées dans ce menu.
Mes « service-menus » préférés
Kim (Kde Image Menu)
Ce service-menu est certainement le plus complet dans la gestion des images. Il permet :
Aucun paquet n’est disponible sous Debian mais heureusement l’installation est très simple car il suffit de décompresser l’archive et de lancer le programme d’installation :
tar -xvzf kim-0.9.4.tar.gz
cd kim
./install.shCe programme est disponible ici :
Pour faire fonctionner ce service-menu, il est nécessaire d’installer les paquets suivants :
# aptitude install imagemagick mjpegtools
PDF Toolkit service menu :
Remarque 1 : Ce service menu nécessite l’installation du paquet « pdftk »
Remarque 2 : Dans les nombreux fichiers de ce paquet, il n’y a que le fichier « pdf_toolkit.desktop » qu’il est nécessaire de mettre en place
konq-pdf
Remarque 1 : Ce paquet contient plusieurs fichiers .desktop offrant beaucoup d’options de manipulation des fichiers .pdf
Remarque 2 : Ce service menu est livré sous forme de paquet .deb
Remarque 3 : Ce service menu nécessite l’installation du paquet « pdfjam » qui installe beaucoup de dépendances perl et latex
Autres sources d’informations
Documentation officielle :
De nombreux service-menus sont disponibles sur ce site :
Vous trouverez également des exemples de service-menus sur notre site :
Spécification Freedesktop concernant la création des fichiers « .desktop » :
Historique des modifications
| Version | Date | Commentaire |
|---|---|---|
| 0.1 | 30/12/06 | Création par Tony GALMICHE |
| 0.2 | 17/02/07 | Mise en ligne |
| 0.3 | 07/03/07 | Ajout chapitre « Ligne TryExec » et « Mes service-menus préférés » |
| 0.4 | 07/03/07 | Ajout chapitre « Remarques sur l’organisation des menus » |
| 0.5 | 12/03/07 | Réécriture du tableau des variables |
| 0.6 | 31/05/08 | Mise à jour du chapitre : Mes « service-menus » préférés |

Commentaires
Créer des service-menus dans Konqueror (Personnaliser le clic-dr
J’ai bien aimé le timbrage (watermarks) PDF grâce au service menu PDF Toolkit. merci du tuyau ou plutôt de l’astuce.