Retrouvez cet article dans : Linux Pratique 44

Linux Pratique #44 / N 56 ovembre-Décembre 2007 Malgré leur nature disparate, les systèmes libres ont une avance énorme en termes d'intégration et d'internationalisation. Le projet Freedesktop.org, anciennement nommé X Desktop Group (XDG), vise notamment à favoriser la collaboration entre les différents bureaux libres. C'est grâce à ce projet que les utilisateurs de GNOME et de KDE peuvent disposer d'un menu dans leur langue, rangé et mis à jour automatiquement. Je vous propose de découvrir les mécanismes qui sous-tendent cette gestion de menus, en partant d'un exemple simple : l'ajout d'un logiciel dans le menu des applications.
Le menu des applications se retrouve dans les bureaux GNOME comme KDE, et est divisé en rubriques comme Bureautique, Graphisme ou encore Internet. Chaque fois que vous installez un programme susceptible d'y figurer, vous voyez apparaître une nouvelle entrée, à la bonne place et dans votre langue. Ça n'a l'air de rien, mais ce système est réellement impressionnant, surtout quand on le compare à ses concurrents plus traditionnels chez Windows et MacOS, par rapport auxquels il fait figure de science-fiction (Fig. 2).


Principe de génération du menu
Pour apparaître dans le menu, chaque application doit installer un fichier d'application ou entrée de bureau [1], qui décrit :
- le nom de l'application, dans autant de langues que possible ;
- le " nom générique " de l'application, c'est-à -dire le nom de sa fonction (traitement de texte, navigateur Web…), toujours en autant de langues que possible ;
- un commentaire, qui explique ce que fait l'application dans autant de langues que possible (ce commentaire apparaît généralement en infobulle) ;
- la commande à exécuter pour lancer l'application ;
- l'icône de l'application ;
- les catégories auxquelles appartient l'application (bureautique, Internet…).
Le menu de KDE ou de GNOME est construit selon un plan décrit dans un fichier de configuration [2], qui définit plusieurs sous-menus et précise quelles catégories d'applications doivent apparaître dans chacun d'entre eux (le menu est donc généré en fonction de ces catégories). Chaque sous-menu est également associé à un fichier descriptif semblable
à ceux des applications.
Ainsi, le menu des applications de GNOME dispose d'un sous-menu nommé Accessories, contenant toutes les applications de catégorie Utility qui ne font pas également partie de la catégorie System et associé au fichier Accessories.directory. Ce dernier précise qu'en français, ce menu doit apparaître sous le nom Accessoires. Il suffit maintenant qu'une application installe un fichier d'application précisant qu'elle fait partie de la catégorie Utility, pour qu'elle apparaisse dans ce sous-menu, représenté figure 3.
Ajouter une entrée au menu
Explications
Tous les programmes graphiques de votre distribution fournissent normalement une entrée de menu. C'est également le cas de la plupart des outils non libres récents, comme Adobe Reader ou Google Earth. Je suppose pour les besoins de cet exercice que vous venez d'installer un logiciel qui ne propose pas d'entrée de menu : c'est le cas, par exemple, de l'encyclopédie Hachette. Ceci dit, vous pouvez parfaitement travailler avec un logiciel qui a déjà une entrée de menu et lui en rajouter une seconde, quitte à la retirer par la suite...
Peut-être avez-vous déjà utilisé un éditeur graphique de menus comme Alacarte. Ces éditeurs font apparaître le menu du bureau comme une simple arborescence, ce qui dissimule toute sa puissance. Nous allons ici procéder manuellement et proprement, et vous pourrez vous rendre compte que cette approche est en fait bien plus agréable (et le serait encore davantage s'il existait un éditeur graphique qui la mette en valeur…).
Rédiger un fichier d'application
Nous allons donc rédiger un fichier d'application nommé /usr/share/applications/ehm.desktop, sur le modèle suivant :
[Desktop Entry] Encoding=UTF-8 Type=Application Name=Hachette Encyclopedia Name[fr]=Encyclopédie Hachette GenericName=Encyclopedia GenericName[fr]=Encyclopédie Comment=Multimedia Encyclopedia Comment[fr]=Encyclopédie multimédia Categories=Education; Exec=ehm Icon=/usr/local/lib/ehm/application/icon.xpm
La syntaxe de ce fichier et les noms des propriétés à renseigner sont assez explicites : elles correspondent à la description faite plus haut. En ce qui concerne les catégories de l'application, vous pouvez en préciser plusieurs (séparées par des poi nts - virgules ) parmi : AudioVideo, Audio, Video, Development, Education, Game, Graphics, Network, Office, Settings, System, Utility.
Maintenant que ce fichier est en place, vous devriez avoir une nouvelle entrée dans le sous-menu Éducation, comme sur la figure 4.

Pour aller plus loin : les répertoires utilisés
Le système de menu de Freedesktop.org utilise trois types de fichiers :
- les fichiers de menu, qui définissent des menus et la façon de les remplir ;
- les fichiers de répertoire, qui précisent des informations sur les sous-menus (notamment leur nom en plusieurs langues) ;
- les fichiers d'applications, qui décrivent chaque application : son nom, des commentaires, mais également les types MIME éventuels qu'elle est capable d'ouvrir.
Les emplacements de ces fichiers sont décrits dans le tableau ci-dessous, qui n'est qu'un résumé simplifié des spécifications (voir [3]). Les répertoires globaux sont utilisés pour stocker la configuration étendue à tout votre système, et ne devraient être utilisés que par les programmes fournis par votre distribution. Les répertoires locaux sont utilisés pour stocker les configurations effectuées " à la main " ou hors distribution ; en revanche, ils ne sont apparus que récemment dans les spécifications de Freedesktop.org et ne sont donc implémentés que sur les systèmes récents. Quant aux répertoires personnels, ils permettent à chaque utilisateur de définir sa propre configuration. Les répertoires personnels sont considérés comme plus importants que les répertoires locaux, eux-mêmes ayant la précédence sur les répertoires globaux.

Le système de menus Freedesktop.org est conçu pour que les développeurs d'applications et les utilisateurs puissent déclarer les informations concernant leurs applications, indépendamment de la gestion du menu lui-même, qui est construit à partir de ces informations. Il est donc assez simple de rajouter un programme dans ce menu ; en revanche, considéré dans son ensemble, ce système est assez complexe et difficile à comprendre. Si vous voulez vous y plonger plus en détail, vous pouvez donc regarder les fichiers des répertoires mentionnés plus haut. Vous pouvez également lire les spécifications de Freedesktop.org.LIENS
- [1] Fichiers d'applications : http://www.freedesktop.org/wiki/Specifications/ desktop-entry-spec
- [2] Menus : http://www.freedesktop.org/wiki/Specifications/menu-spec
- [3] Répertoires de Freedesktop.org : http://www.freedesktop.org/wiki/ Specifications/basedir-spec
Retrouvez cet article dans : Linux Pratique 44


