Personnalisation des menus (Freedesktop)
L’utilisateur d’un OS (Système d’Exploitation) Libre qui a expérimenté ne serait-ce qu’une fois dans sa vie un OS propriétaire comme Windows (exemple pris au hasard) le sait bien : en matière d’intégration et d’internationalisation, les OS libres ont plus qu’une longueur d’avance. Il n’y a qu’à voir le menu sous l’OS propriétaire en question… Je ne sais pas vous mais moi ça me rend nerveux de rester plus de 10 secondes en face d’un tel chaos.
Sous Windows ― que je n’ai jamais eu personnellement, Dieu m’en garde ! mais ― que je suis contraint et forcé d’utiliser une fois tous les 3 mois (c’est toujours une fois de trop !), sous Windows donc, on éteint sa machine en cliquant sur le menu “Démarrer” ! Jetez un œil dans le menu “Programmes” : tous les logiciels installés, ou peu s’en faut, sont mis-là, pêle-mêle pour la plupart, avec un semblant de classement pour certains. Ce qui, curieusement, ne semble pourtant pas déranger outre mesure ses utilisateurs. Désolé, je ne suis pas en mesure d’illustrer ce foutoir.
Imaginez un peu, malheureux windowsiens, un menu organisé selon des catégories, avec une icône et un descriptif pour chaque application, dans la langue de l’utilisateur, mis à jour automatiquement, configurable à l’envi… Imaginez, malheureux windowsiens, ce que, sous Gnome ou KDE (et bien d’autres bureaux) nous avons la chance d’utiliser tous les jours !

C’est ce genre de spécifications (copier/coller, raccourcis claviers, détection du matériel…) que le projet Freedesktop.org (anciennement X Desktop Group ou XDG) vise à harmoniser. Freedesktop n’est pas à proprement parler un organisme de normalisation mais une “zone de collaboration” entre les différents bureaux autour de spécifications communes (protocoles et symboles).
Personnalisation des menus ? Mais pourquoi ?
Je suis sous Gnome depuis des années (j’aime sa simplicité) et j’utilise, par ailleurs, quelques applications de l’environnement KDE (Amarok, Kaffeine, k3b, Kooka… c’est à peu près tout). Lesquelles me sont devenues indispensables. Malheureusement, mes menus sont toujours encombrés par les dépendances installées avec ces quelques applications.
Il s’agit donc de comprendre les mécanismes de gestion de menus pour ajouter ou supprimer un logiciel dans le menu “Applications”, entre autres, afin de l’épurer des indésirables dépendances de l’environnement KDE et d’améliorer l’intégration des autres logiciels.
Précisons tout de même que, sous Gnome (comme sous d’autres environnements, j’imagine), les menus peuvent être personnalisés d’un seul clic : il suffit pour cela de cliquer droit sur le menu “Applications” (par exemple) et de l’éditer (avec alacarte). C’est donc assez simple de supprimer un ou deux items mais en retirer une dizaine, c’est bien plus laborieux.

Présentation des menus Freedesktop
Le menu des applications se divise en rubriques : “Bureautique”, “Graphisme”, “Internet”, etc. À chaque nouvelle installation, une nouvelle entrée apparaît dans la rubrique idoine. Ça n’a l’air de rien, n’est-ce pas ? mais, comparé à d’autres environnements propriétaires, ce mécanisme frise le surnaturel.
En principe donc, chaque nouvelle entrée est décrite dans un fichier qui comprend entre autres :
- le nom de l’application ;
- le ” nom générique ” de l’application (dans toutes les langues disponibles), c’est-à-dire le nom de sa fonction (traitement de texte, tableur…) ;
- Une description succincte (dans toutes les langues disponibles) qui apparaîtra en infobulle (voir la capture proposée ci-dessus) ;
- la commande à exécuter pour lancer l’application ;
- l’icône de l’application ;
- la catégorie à laquelle l’application appartient (”Bureautique”, “Éducation”, …).
Ces fichiers d’intégration sont placés dans le répertoire /usr/share/applications/. Leur extension est en .desktop.
En consultant ces fichiers .desktop, on peut s’apercevoir que le respect de ces standards est assez général.
Prenons, par exemple, le fichier /usr/share/applications/xcfa.desktop de l’irremplaçable X Convert File Audio :
[Desktop Entry]
Version=3.4.3
Name=xcfa
Exec=xcfa
Icon=xcfa.png
Terminal=false
Type=Application
Categories=Application;AudioVideo;AudioVideoEditing;
X-Desktop-File-Install-Version=0.3
Comment=X Convert File Audio. Programme pour convertir les fichiers audio.
GenericName=GenericName
GenericName[fr]= (X Convert File Audio. Programme pour convertir les fichiers audio.)
Comment[it]=X Convert File Audio. Programme pour convertir les fichiers audio.
Comment[fr]=X Convert File Audio. Programme pour convertir les fichiers audio.
Comment[fi]=X Convert File Audio. Programme pour convertir les fichiers audio.
Comment[en]=X Convert File Audio. Programme pour convertir les fichiers audio.
GenericName[fr_FR]=GenericName fr
StartupNotify=true
Name[fr_FR]=Xcfa
Dans sa version actuelle, on le voit bien, certaines clés ne sont pas renseignées, d’autres le sont mal, d’autres encore sont redondantes. On a donc sensiblement améliorer l’intégration de XCFA en respectant, au plus près, les standards Freedesktop ; elle sera disponible dans la prochaine livraison de XCFA.
En attendant cette mise à jour, on peut prendre exemple sur le fichier xcfa.desktop pour comprendre comment personnaliser durablement une entrée dans le menu “Applications”. La même procédure pourra donc ensuite être appliquée à n’importe quelle entrée.
Le mécanisme de Freedesktop
Le mécanisme de menus Freedesktop est conçu de manière à ce que développeurs et utilisateurs puissent déclarer les informations concernant leurs applications, indépendamment de la gestion du menu lui-même qui se construit à partir de ces informations et des sous-menus (ou répertoires). Il est, par conséquent, assez facile d’ajouter ou de supprimer une application dans un menu, de réorganiser ou de modifier un menu et ses répertoires (ou sous-menus).
Les fichiers d’organisation (menus/sous-menus) et de description des applications se répartissent dans des répertoires distincts :
/etc/xdg/menus
/usr/share/desktop-directories/
/usr/share/applications
Les fichiers stockés dans ces répertoires, comme vous l’aurez remarqué, sont de la responsabilité de l’administrateur du système : tout modification s’appliquera à l’ensemble des comptes “utilisateur”. Si vous ne comprenez pas cette dernière phrase, reportez-vous à l’article “Linux connexion“. Il y a par ailleurs un autre inconvénient à intervenir sur ces fichiers : ces modifications ne seront que temporaires ; chaque nouvelle mise à jour (des applications, par exemple) remplacera les fichiers modifiés.
Il est donc préférable d’enregistrer toute nouvelle configuration dans les répertoires de l’espace “utilisateur” prévus à cet effet :
~/.config/menus/
~/.local/share/desktop-directories/
~/.local/share/applications/
Ces fichiers de configuration personnelle auront la précellence sur ceux de configuration générale du système, à raison d’une astuce.
Pour l’exemple, nous remplacerons le fichier xcfa.desktop par un fichier personnel qui doit modifier l’entrée dans le menu “Applications”. Voici le contenu (réduit au minimum) de ce nouveau fichier :
[Desktop Entry]
Version=3.4.3
X-Desktop-File-Install-Version=0.3
Name=XCFA
Name[fr_FR]=X Convert Audio File
Icon=xcfa.png
GenericName=Audio Format Converter
GenericName[fr]=Convertisseur de formats audio
Comment=XCFA est un programme de conversion des fichiers audio.
Exec=xcfa
Terminal=false
StartupNotify=true
Type=Application
Categories=Application;AudioVideo;AudioVideoEditing;
MimeType=audio/x-wav;application/x-flac;audio/x-ape;audio/ape;audio/x-wavpack;application/x-ogg;audio/ogg;application/ogg;audio/x-m4a;audio/x-aac;audio/aac;audio/mp3;audio/x-mp3;audio/x-ms-wma;
Ce nouveau fichier viendra prendre place dans le répertoire dédié : ~/.local/share/applications/xcfa.desktop. Or, vous remarquerez qu’après avoir ajouté ce fichier, l’entrée de XCFA ne sera pas modifiée. Pour cela, il faut intervenir aussi sur le fichier ~/.config/menus/gnome-applications.menu. Prenez soin de faire une copie de ce fichier avant toute modification !
Ce fichier .menu est écrit au format XML. Pour plus de précisions sur la syntaxe à employer, reportez-vous à la définition du type de document de Freedesktop (DTD).
Toute l’astuce consiste d’abord à exclure le fichier de description générale puis à inclure le fichier description personnelle. Pour cela, il faut éditer le fichier ~/.config/menus/gnome-applications.menu. Après avoir localisé le “menu” des applications “Multimedia”, il suffit d’insérer le nom du fichier (<Filename>xcfa.desktop</Filename>) à exclure puis à inclure avec les directives <Exclude> et <Include> :
<Menu>
<Name>Multimedia</Name>
<Exclude>
<Filename>xcfa.desktop</Filename>
</Exclude>
<Include>
<Filename>xcfa.desktop</Filename>
</Include>
</Menu>
Pour être inclus/exclus, les éléments doivent apparaître entre les directives <menu>. Les directives <Include> et <Exclude> sont traitées dans l’ordre où elles apparaissent dans le fichier de configuration. Avant d’inclure le fichier de description personnelle, le fichier de description générale doit être exclu.
On peut ainsi modifier tous les fichiers de description et personnaliser toutes les entrées pour faire disparaître les : “Gravure de disque Brasero”, “Lecteur de musique Exaile”, “Visonneur d’images g-Thumb”… Ce n’est pas tout.
Une directive comme <Include> ou <Exclude> est un ensemble de règles qui peuvent être précisées par les éléments <And>, <Or>, <Not>, <All>, <Category>… On peut ainsi exclure très facilement toutes les applications de la catégorie “KDE” : <Category>KDE</Category> pour voir disparaître toutes les applications KDE indésirables. Pour ne conserver que les applications incontournables, il suffira donc de les inclure à nouveau…
À propos de cet article
Titre : Personnalisation des menus (Freedesktop)
- Publié le :
- 12.04.09
- Catégorie :
- Debian, GNU/Linux, Logiciels Libres, geekeries

6 Commentaires
Ajouter son grain de sel | fil rss des commentaires [?] | trackback url [?]