Fichiers de définition de menu

Les fichiers menu définissent la hiérarchie de menus utilisée dans la barre de menus de GNOME. Vous pouvez personnaliser les menus en modifiant ces fichiers, soit pour tous les utilisateurs, soit pour un utilisateur particulier, selon le fichier applications.menu modifié.

Les fichiers menu doivent se trouver dans $XDG_CONFIG_DIRS/menus/applications.menu. Si $XDG_CONFIG_DIRS1 n'est pas définie, c'est le chemin par défaut /etc/xdg qui est utilisé. Cela signifie également qu'une version spécifique à un utilisateur peut se trouver à l'emplacement $XDG_CONFIG_HOME/menus/applications.menu qui est recherché en priorité. Si $XDG_CONFIG_HOME n'est pas définie, c'est le chemin par défaut ~/.config qui est utilisé. Les répertoires qui apparaissent en premier dans $XDG_CONFIG_DIRS ont priorité lorsqu'il existe plusieurs fichiers applications.menu. Le premier fichier trouvé est pris en compte et les autres fichiers sont ignorés.

Si l'ordre de recherche des chemins ne vous semble pas clair, voici une liste simple qui présente la résolution de l'emplacement de applications.menu :

  1. Recherche de menus/applications.menu dans chaque répertoire de $XDG_CONFIG_HOME. Si cette dernière variable n'est pas définie, c'est le répertoire par défaut ~/.config/ qui est utilisé.
  2. Recherche de menus/applications.menu dans chaque répertoire de $XDG_CONFIG_DIRS. Si cette dernière variable n'est pas définie, c'est le répertoire par défaut /etc/xdg/ qui est utilisé.
  3. Prise en compte du premier fichier applications.menu trouvé.

Vous pouvez voir un exemple de fichier .menu à l'Exemple II.1. Dans cet exemple, le menu de premier niveau s'appelle Applications, comme l'indique l'élément <Name>. Le menu Applications contient un seul sous-menu, mais il est possible d'en indiquer plusieurs. Chaque sous-menu peut aussi avoir un élément <Include>. Le but de cet élément est de filtrer les entrées de menu disponibles à l'aide de règles de correspondance.

Par exemple, l'élément <Category> est une règle de correspondance élémentaire qui sélectionne une entrée de menu que si sa clé Categories contient le contenu de l'élément <Category>. Dans l'exemple, le menu Accessories ne contiendra une entrée de menu que si celle-ci contient « Utility » dans sa clé Categories, mais pas « System ». Pour plus d'informations sur la clé Categories, consultez Section II.III ― Fichiers .desktop.

Exemple II.1 Exemple d'un fichier .menu

<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
 "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
<Menu>
  <Name>Applications</Name>
  <Directory>Applications.directory</Directory>

  <!-- Read standard .directory and .desktop file locations -->
  <DefaultAppDirs/>
  <DefaultDirectoryDirs/>

  <!-- Accessories submenu -->
  <Menu>
    <Name>Accessories</Name>
    <Directory>Accessories.directory</Directory>
    <Include>
      <And>
        <Category>Utility</Category>
        <Not>
          <Category>System</Category>
        </Not>
      </And>
    </Include>
  </Menu> <!-- End Accessories -->

  <!-- possibly more submenus -->

</Menu> <!-- End Applications -->

Le Tableau II.1 décrit certains éléments des fichiers .menu. Pour une description plus détaillée, consultez la spécification des menus XDG.

Tableau II.1 Éléments du fichier de définition de menu
Élément Description
<Menu> L'élément racine qui peut contenir d'autres éléments <Menu> imbriqués définissant des sous-menus. La manière d'imbriquer ces éléments détermine la structure du menu.
<Name> Spécifie le nom du menu. Chaque élément <Menu> doit contenir un élément <Name>.
<Directory>

Spécifie le nom du fichier d'entrée de répertoire qui définit le nom, le commentaire et l'icône du menu. Si cet élément est absent, c'est l'élément <Name> qui est utilisé pour afficher le nom du menu.

Par défaut, les fichiers .directory sont recherchés à l'emplacement $XDG_DATA_DIRS/desktop-directories/ comme le préconise la spécification des menus XDG.

<DefaultAppDirs> Cette instruction indique que tous les fichiers .desktop se trouvant dans $XDG_DATA_DIRS/applications/ doivent être parcourus. Si cette instruction est absente, le système ne recherche pas de fichier .desktop à ces emplacements.
<DefaultDirectoryDirs> Cette instruction indique que tous les fichiers d'entrée de répertoire se trouvant dans $XDG_DATA_DIRS/desktop-directories/ doivent être parcourus. Si cette instruction est absente, le système ne recherche pas de fichier d'entrée de répertoire à ces emplacements.
<Include> Contient une liste des règles de correspondance utilisées pour générer le contenu d'un menu. Cette directive peut contenir des règles de correspondance <Filename>, <Category>, <And>, <Or>, <Not> ou <All>. Si elle contient plus d'une règle, celles-ci sont combinées par un OU logique afin que les fichiers .desktop correspondant à au moins une règle soient inclus.
<Exclude> L'inverse de <Include> puisque tous les fichiers .desktop qui correspondent aux règles de cet élément sont exclus de l'ensemble des éléments déjà inclus. C'est pour cette raison que cet élément doit apparaître après l'élément <Include>.
<Filename> Une règle de correspondance qui sélectionne un fichier .desktop si son Desktop File-Id correspond au contenu de l'élément <Filename>.
<Category> Une règle de correspondance qui sélectionne un fichier .desktop si sa clé Categories correspond au contenu de l'élément <Category>.
<And> Une règle de correspondance qui sélectionne un fichier .desktop s'il correspond à toutes les règles de correspondance imbriquées dans l'élément <And>.
<Or> Une règle de correspondance qui sélectionne un fichier .desktop s'il correspond à au moins une des règles de correspondance imbriquées dans l'élément <Or>.
<Not> Une règle de correspondance qui ne sélectionne pas un fichier .desktop s'il correspond à au moins une des règles de correspondance imbriquées dans l'élément <Not>.
<All> Une règle de correspondance qui sélectionne tous les fichiers .desktop.
1

$XDG_CONFIG_DIRS est la variable d'environnement définie dans la spécification des répertoires de base XDG.