Le "pourquoi" du mercredi : les menus
Par Pikachu_2014 le mercredi, juin 25 2008, 07:00 - Le "pourquoi" du Mercredi - Lien permanent
Ce billet est une traduction libre de l'article : Wednesday Why: Menus
écrit par Chris Tyler.
Les menus des applications de Fedora listent différents programmes provenant de paquetages variés. Fedora fournit de nombreux environnements de bureaux, dont GNOME, KDE et XFCE ; chacun d'entre eux utilise sa propre structure de menu pouvant inclure ou exclure certains programmes, tels que les panneaux de contrôle propres à chacun d'eux. Chaque titre de menu ainsi que les entrées sont affichés dans la langue courante de la session. En outre, la disposition des menus fait souvent l'objet d'affinements à chaque nouvelle version de Fedora, alors que certains paquetages n'ont pas varié d'un iota au cours de la transition. Voilà quelques propriétés de ces menus dont on s'attachera à décrire les mécanismes en jeu.
Les spécifications des entrées du menu sont définies de façon collaborative
au sein du projet freedesktop.org. Toute paquetage Fedora induisant
l'apparition d'une entrée dans le menu contient un ou plusieurs fichiers
.desktop décrivant ces entrées. Par exemple, le paquetage
evolution contient un fichier .desktop (ici tronqué, compte-tenu
du nombre important de traductions du nom et des commentaires qu'il
contient) :
$ rpm -ql evolution | grep desktop /usr/share/applications/evolution.desktop
Celui-ci contient ainsi les informations nécessaire à l'affichage de l'entrée Evolution dans le menu :
[Desktop Entry] Encoding=UTF-8 Name=Evolution Mail and Calendar Name[ar]=بريد و تقويم إيفُليوشِن Name[as]=Evolution মেইল বৰ্ষপঞ্জি ... Name[fr]=Messagerie et calendrier d'Evolution ... Name[zh_HK]=Evolution 郵件與行事曆 Name[zh_TW]=Evolution 郵件與行事曆 ... Comment=Manage your email, contacts and schedule Comment[ar]=قُم بإدارة بريدك الكتروني، مراسليك وجدولك Comment[as]=আপোনাৰ ই-মেইল অ্যাকাউন্টসমূহকে এখানে বিন্যাস কৰক ... Comment[fr]=Gérer vos courriels, contacts et agendas ... Comment[zh_HK]=管理你的郵件、聯絡人和行程 Comment[zh_TW]=管理您的郵件、連絡人和行程 Exec=evolution Icon=evolution Terminal=false Type=Application Categories=GNOME;GTK;Office;Email;Calendar;ContactManagement;X-Red-Hat-Base; StartupNotify=true X-GNOME-Bugzilla-Bugzilla=GNOME X-GNOME-Bugzilla-Product=Evolution X-GNOME-Bugzilla-Component=BugBuddyBugs X-GNOME-Bugzilla-Version=2.22.x X-GNOME-Bugzilla-OtherBinaries=evolution-data-server-2.22;evolution-exchange-storage;evolution-alarm-notify;
Comme on peut le voir, ce fichier contient le nom et la description du
programme par défaut (en anglais) et celle spécifique à la langue de
l'environnement choisie. Il indique également la commande lancée par l'entrée,
l'icône à afficher (qui est celle du thème choisi si celui-ci propose une icône
correspondant au nom spécifié), si le programme doit être lancé depuis un
terminal, l'encodage à utiliser pour l'affichage du nom et de la description,
la catégorie à laquelle appartient l'application, et si le programme supporte
le protocole Startup Notify (grosso modo, une application
implémentant ce protocole enverra chaque fois qu'elle sera lancée ou quittée un
message de notification au serveur X, qui pourra être intercepté par une autre
application comme une applet, etc). Quant aux champs
X-GNOME-Bugzilla-* à la fin de ce fichier, ils caractérisent une
entrée propre à un environnement de bureau, et qui seront ignorés par les
autres (le préfixe « X- » indique que le champ n'est pas standard ou
est expérimental).
Les informations contenues dans ce fichier peuvent par ailleurs être
indifféremment utilisées pour décrire une entrée de menu, une icône sur un
tableau de bord ou sur le bureau. L'emplacement du fichier .desktop détermine
en quelque sorte la représentation associée : un fichier placé dans les
répertoires /usr/share/applications/ décrira une entrée dans le
menu, tandis que le même fichier placé dans le répertoire du bureau
(~/Bureau/) affichera un lanceur sur ce dernier. Pour placer sur
le bureau un lanceur d'une application présente dans le menu, il suffit donc
simplement de copier le fichier .desktop correspondant dans
/usr/share/applications/ vers ~/Bureau/.
L'organisation du menu est régie par des fichiers de configuration placés
dans le répertoire /etc/xdg/menus (les spécifications de ces
fichiers, au format XML, sont définies sur http://standards.freedesktop.org/me...).
Ces fichiers décrivent la hiérarchie des catégories présentes dans le menu
« Applications » ou « Système » par exemple, les
emplacements de recherche des fichiers .desktop à afficher, etc.
Par exemple, le fichier /etc/xdg/menus/applications.menu,
correspondant au menu « Applications », contient une section relative à la
catégorie « Bureautique » (« Office » en
anglais) :
<!-- Office -->
<Menu>
<Name>Office</Name>
<Directory>Office.directory</Directory>
<Include>
<And>
<Category>Office</Category>
</And>
</Include>
</Menu> <!-- End Office -->
L'entrée « Evolution » décrite plus haut est ainsi affichée dans
cette catégorie, puisque défini dans le champ Categories comme
appartenant à la catégorie Office. Le tag
<INCLUDE> mérite qu'on s'y attarde : il spécifie quels
fichiers .desktop y seront incorporés, en l'occurence, tous ceux de catégorie
« Office ». Si l'on considère cette fois la section relative à la
catégorie « Outils système » (« Categories ») :
<!-- 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 -->
on constate que le bloc <Include> contient un sous-bloc
Utility : tous les fichiers .desktop de catégorie
« Utility » seront affichés dans le menu dans cette catégorie. En
révanche étant suivi d'un bloc <Not> de négation contenant
la catégorie System, un fichier marqué à la fois
Utility ET System ne sera pas affiché (ceux-ci étant
affichés sous Fedora dans le menu dans le menu « Système »).

