Skip to Content

Gestion des menus sous KDE

But de ce document

Ce document me sert de mémo pour comprendre le fonctionnement des menus sous KDE.

Personnalisation des menus de KDE

kmenuedit permet de personnaliser les menus de KDE. Les modifications dans les menus sont enregistrées dans le dossier suivant :

~/.config/menus/applications-kmenuedit.menu

update-menus permet de mettre à jour les menus après l’installation d’un programme. Ce programme est spécifique à Debian. Pour remettre à un utilisateur le menu par défaut, il faut supprimer le fichier «  /.config/menus/applications-kmenuedit.menu » et lancer update-menus

Chaque entrée de menu est un fichier .desktop enregistré dans :

~/.local/share/applications

Les menus de KDE sont configurés dans :

~/.local/share/applications
/usr/share/applications

Exemple de fichier .desktop :

[Desktop Entry]
Categories=Qt;KDE;TextEditor;
DocPath=kate/index.html
Encoding=UTF-8
Exec=kate %U
GenericName=Editeur de texte avancé
Icon=kate
InitialPreference=6
MimeType=text/plain;application/x-desktop
Name=Kate
Path=
Terminal=false
Type=Application
X-DCOP-ServiceType=Multi
X-KDE-HasTempFileOption=true
X-KDE-StartupNotify=true

Un fichier « .desktop » permet de créer une entrée de menu dans le menu K, mais également dans le menu contextuel si le « MimeType » correspond au fichier sélectionné. Si pour le « MimeType », il n’y a qu’un programme, l’entrée sera sous le menu principale sinon elle sera dans le sous-menu « Ouvrir avec »

Les menu de Freedesktop

Il faut trois types de fichiers pour créer des menus suivant la norme « Freedesktop » :

  •  Les fichiers « .desktop » décrivent les entrées de menus
  •  Les fichiers « .menu » décrive » l’arborescence des menus »
  •  Les fichiers « .directory » permettent d’ajouter des icônes et de traduire l’arborescence dans différentes langues

    La configuration de KDE pour l’utilisateur est dans «  /.kde/ » et pour tous les utilisateurs, elle est dans « /usr/ »

    Chaque dossier et sous-dossier, contient un fichier .directory indiquant entre-autre le nom du menu et l’icône de celui-ci.

    Le fichier «  /.config/menus/applications-kmenuedit.menu » permet de déplacer, d’ajouter ou d’enlever des menus à l’arborescence par défaut. Cet exemple montre comment supprimer l’entrée « Debian » :

    "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">

     
     Debian
     

    Exemple d’entrée de menu ajoutée à la racine du menu K

  •  /usr/share/applications/AS400.desktop
  •   /.local/share/applications/AS400.desktop
  • [Desktop Entry]
    Comment=
    Exec=konsole --profile Profil-AS400
    GenericName=
    Icon=alevt
    Name=AS400
    Path=
    StartupNotify=false
    Terminal=0
    TerminalOptions=
    Type=Application
    X-KDE-SubstituteUID=false
    X-KDE-Username=

    Categories=Qt;KDE;Core;
    OnlyShowIn=KDE;

    Actualisation des modifications

    En fonction du type de la modification, le résultat est immédiat ou apparaît seulement à la prochaine connexion de KDE. Pour éviter de se déconnecter, il faut lancer les commandes suivantes en tant que simple utilisateur :

    $ update-menus
    $ kbuildsycoca

    Informations sur kbuildsycoca :

  •  http://developer.kde.org/documentation/library/kdeqt/kde3arch/ksycoca.html

    Ajout d’un nouveau menu

    Pour ajouter un menu pour tous les utilisateurs, il faut placer le fichier « test.menu » ci-dessous dans l’un des dossiers suivants :

  •  /etc/xdg/menus/applications-merged
  •   /.config/menus
    1.0//EN""http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">

    Applications
     
       Test Menu
       testmenu.directory
       
       testmenu
       

     

    Astuce  : Pour créer ce fichier automatiquement, il est possible d’utiliser KMenuEdit, est de créer le menu. KMenuEdit, va créer (ou modifier) le fichier «  /.config/menus », qu’il suffira de déplacer dans « /etc/xdg/menus/applications-merged » pour qu’il soit valable pour les utilisateurs

    Supprimer une entrée de menu

    Pour supprimer par exemple l’entrée « Science et mathématiques », il faut placer le fichier « test.menu » ci-dessous dans l’un des dossiers suivants :

  •  /etc/xdg/menus/applications-merged
  •   /.config/menus
    "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">


     Science
     

    Ajouter un nouveau menu et supprimer un menu existant

    Le fichier ci-dessous est la combinaison des deux fichiers précédents :

    "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">

    Applications
     
      Test Menu
       testmenu.directory
       
       testmenu
       

     

     
       Science
       
     

    Création du menu « Programmes » et déplacement des menus « Science » et « Office » à l’intérieur

    "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">


     Programmes


     Science
     Programmes/Science


     Office
     Programmes/Office

    La même chose en plus court et plus lisible :

    "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">

    Mes Programmes
    Science Mes Programmes/Science  
    Office  Mes Programmes/Office  

    Création de deux sous-menus et déplacement de deux menus :

    "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">

    Mes Programmes
    Autres Programmes
    Science Mes Programmes/Science  
    Office  Autres Programmes/Office  

    Structure des menus avant KDE 3.2

    Cette structure de fichiers utilisé par KDE avant la version 3.2 n’est pas normalisée par « freedesktop » mais elle est toujours utilisable pour des raisons de compatibilités avec les anciennes applications.

    La définition des entrées de ces menu est dans :

  •   /.kde/share/applnk/
  •  ou /usr/share/applnk/

    Remarque : Le menu placé dans l’arborescence utilisateur à priorité sur le menu général en cas de conflit. Autrement les deux arborescences se complètent.

    Voici la structure des menus :

    /usr/share/applnk/
     .hidden                  -> Contient les entrèes des menus cachés  Dossier 1                -> Menu 1
       .directory             -> Définition du menu
       application1.desktop   -> Définiton de l'entrèe de menu pour application1
       application2.desktop   -> Définiton de l'entrèe de menu pour application2
     Dossier 2  -> Menu 2
       ..  

    Dés qu’un fichier ou un dossier est créé dans cette arborescence la mise à jour est immédiate.

    Par contre en cas de modification d’un fichier existant, il est nécessaire de lancer cette commande pour voire les modifications :

    $ kbuildsycoca

    Remarques :

  •  Ces entrées de menus n’ont pas besoins de fichier « .menu » pour fonctionner
  •  A priori, ce mode de création des menus est peu (ou plus) utilisé par les nouvelles applications

    Recherche de fichiers

    L’une des principales difficultés rencontré pour configurer les fichiers est de retrouver le bon fichier .desktop, .directory ou .menu sachant que le nom du fichier peut-être différent du nom du menu.

    Pour cela, il est utile de connaître quelques commandes de recherches :

    Liste des fichiers dont le contenu contient le motif indiqué dans le dossier indiqué :

    grep -ril pdf /usr/share/*

    Rechercher un fichier se terminant par « desktop » dans le dossier indiqué :

    find /usr/share -iname '*desktop'

    Rechercher dans la base de données initialisée par « updatedb » les fichiers contenant « desktop » :

    locate -i desktop

    Recherche les fichiers contenant tous les termes indiqués :

    locate -i -A desktop pdf

    Autre lien

    Les menu de freedesktop :

  •  http://standards.freedesktop.org/menu-spec/menu-spec-latest.html

    Historique des modifications

    Version Date Commentaire
    0.1 23/06/06 Création par Tony GALMICHE
    0.3 22/06/08 Mise en ligne
  • Commentaires

    Gestion des menus sous KDE

    Merci Claude pour toutes tes relectures

    Gestion des menus sous KDE

    Tony,
    Passionnant tous ces articles sur KDE, j’avais pas été si loin. A la fin du tuto, ce lien là est n’existe plus : http://artisan.karma-lab.net/fr/node/28 et celui-ci a un peu changé dans le nom (runtime en plus) :
    http://docs.kde.org/stable/en/kdebase-runtime/userguide/kde-menu.html
    Merci du tuto.