Skip to Content

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 :

  •  La section « [Desktop Entry] » permet de définir sur quels types de fichiers ou dossiers le menu doit apparaître et indique la liste des actions à afficher.
  •  Les sections suivantes (ex : « [Desktop Action Test1] ») permettent de définir chaque action.

    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 :

  •  http://www.lea-linux.org/cached/index/Dev-dcop.html

    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 :

  •  De compresser et redimensionner les images
  •  Convertir et retourner
  •  Créer des albums en HTML ou des animations en flash

    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.sh

    Ce programme est disponible ici :

  •  http://kde-apps.org/content/show.php ?content=11505

    Pour faire fonctionner ce service-menu, il est nécessaire d’installer les paquets suivants :

    # aptitude install imagemagick mjpegtools

    PDF Toolkit service menu :

  •  http://www.kde-apps.org/content/show.php ?content=18545
  • 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

  •  http://www.kde-apps.org/content/show.php ?content=37321
  • 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 :

  •  http://developer.kde.org/documentation/tutorials/dot/servicemenus.html

    De nombreux service-menus sont disponibles sur ce site :

  •  http://www.kde-apps.org/index.php ?xcontentmode=287

    Vous trouverez également des exemples de service-menus sur notre site :

  •  http://www.coagul.org/article.php3 ?id_article=91

    Spécification Freedesktop concernant la création des fichiers « .desktop » :

  •  http://standards.freedesktop.org/desktop-entry-spec/0.9.4/index.html

    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.