Édition de menus par utilisateur et fusion de menus

Vous pouvez utiliser les applications du bureau GNOME suivantes pour éditer les menus pour les utilisateurs :

  • Éditeur de menus GNOME

Un éditeur de menus simple est disponible pour que les utilisateurs puissent éditer leurs menus. Pour plus d'informations, consultez Barre de menus dans le Guide d'utilisation du bureau GNOME. Il est aussi possible de créer et de modifier directement un fichier menu d'utilisateur.

Pour créer manuellement un menu personnalisé pour un utilisateur, le fichier $XDG_CONFIG_HOME/menus/applications.menu doit exister. Si la variable $XDG_CONFIG_HOME n'est pas définie, c'est le répertoire par défaut ~/.config qui est utilisé. Puisque c'est le premier emplacement parcouru pour chercher le fichier applications.menu, il a priorité sur tous les autres fichiers menu.

Les menus d'utilisateurs peuvent contenir tous les éléments décrits dans Section II.II ― Fichiers de définition de menu. Pour une liste complète des éléments autorisés, consultez la spécification des menus XDG.

Dans la mesure où les fichiers menus des utilisateurs ont priorité sur le fichier menu système, ils remplacent entièrement le menu système sauf s'ils spécifient explicitement une fusion avec le menu système. Les sous-sections suivantes présentent des informations sur la fusion de menus.

II.VI.I. Fusion du menu système

Il arrive souvent qu'un utilisateur veuille uniquement ajouter ou supprimer des éléments de menu du menu système standard. Afin de permettre ce genre de modifications isolées, il est recommandé que vous utilisiez l'élément <MergeFile> avec l'attribut type="parent" dans le fichier applications.menu de l'utilisateur.

L'élément <MergeFile> permet la fusion d'un menu avec le contenu du fichier menu d'un utilisateur.Lorsque l'attribut type="parent" est spécifié, le contenu de l'élément <MergeFile> est ignoré et le fichier suivant dans le répertoire $XDG_CONFIG_DIRS/menus est utilisé pour la fusion.

Anciennes spécifications

D'anciennes spécifications ne prenaient pas en compte l'attribut type et exigeaient simplement que l'emplacement du fichier menu soit fusionné comme contenu de l'élément <MergeFile>. En conséquence, il est possible que vous voyiez encore un emplacement spécifié dans le contenu de <MergeFile>, même avec type="parent".

La fusion s'effectue comme suit :

  • Les enfants de l'élément racine <Menu> dans le fichier menu fusionné1 sont substitués par l'élément <MergeFile> dans le fichier menu de base.
  • Tous les éléments <Menu> enfants possédant le même nom sont consolidés dans une seul élément <Menu>. Ceci est réalisé en concaténant tout élément enfant de chaque élément <Menu> ayant le même nom dans la dernière occurrence de l'élément menu.

L'Exemple II.3 montre un exemple d'un fichier menu utilisateur fusionnant explicitement avec le fichier menu système.

Exemple II.3 Fusion du menu système
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
 "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">

<Menu>
  <Name>Applications</Name>
  <MergeFile type="parent">/etc/xdg/menus/applications.menu</MergeFile>
  <Menu>
    <Name>Accessibility</Name>
    <Exclude>
      <Filename>dasher.desktop</Filename>
    </Exclude>
  </Menu>
</Menu>

II.VI.II. Fusion avec des menus arbitraires

N'importe quel fichier menu peut être fusionné de la même manière que les menus système. La différence est que l'attribut type doit recevoir la valeur path ou doit être exclu de l'élément <MergeFile> pour pouvoir effectuer ce type de fusion.

La fusion s'effectue toujours de la même manière, à l'exception de l'emplacement du fichier menu fusionné qui est spécifié dans le contenu de l'élément <MergeFile>.

1

Le fichier menu fusionné se réfère au fichier applications.menu suivant dans le répertoire $XDG_CONFIG_DIRS/menus.