La gestion des menus n'est pas spécifique à Xfce, la plupart des environnements de bureau suit les spécifications de
Freedesktop et c'est, mine de rien, assez complexe.
Dans les grandes lignes :
- Les lanceurs pour chaque logiciel sont des fichiers .desktop se trouvant dans /usr/share/applications (pour le système) et ~/.local/share/applications (pour ceux spécifiques à l'utilisateur). Un fichier .desktop a une structure bien spécifique qui indique, outre la commande à lancer, son nom, son icône et la/les catégorie(s) où il doit apparaître. Ce sont ces infos qui permettent au menu de savoir où faire apparaître chaque logiciel.
- Les infos de catégories des menus sont définies via tout un tas de fichiers .directory qui sont dans /usr/share/desktop-directories (système) ou ~/.local/share/desktop-directories (utilisateur), qui indiquent le même genre d'infos que les lanceurs (nom, icône...)
- Enfin, les menus eux-même (amalgamés en un) se trouvent dans /etc/xdg/menus (système) ou ~/.config/menus (utilisateur) et ont une syntaxe assez complexe pour définir chaque catégorie (en cherchant ses infos dans les .directory), ce qu'elle inclut, ce qu'elle exclut (parmi les catégories prédéfinies de Freedesktop), où et comment placer les logiciels qui ne rentrent pas, les exceptions éventuelles (tel logiciel doit se placer à tel endroit plutôt que ce qui est défini dans son lanceur), etc. Ça donne un fichier assez complexe à comprendre et modifier dont voici un exemple (vieux menu de Gnome que j'avais sous la main) :
<!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>X-GNOME-Menu-Applications.directory</Directory>
<!-- Scan legacy dirs first, as later items take priority -->
<LegacyDir>/etc/X11/applnk</LegacyDir>
<LegacyDir>/usr/share/gnome/apps</LegacyDir>
<!-- Read standard .directory and .desktop file locations -->
<DefaultAppDirs/>
<DefaultDirectoryDirs/>
<!-- Read in overrides and child menus from applications-merged/ -->
<DefaultMergeDirs/>
<!-- Accessories submenu -->
<Menu>
<Name>Accessories</Name>
<Directory>Utility.directory</Directory>
<Include>
<And>
<Category>Utility</Category>
<!-- Accessibility spec must have either the Utility or Settings
category, and we display an accessibility submenu already for
the ones that do not have Settings, so don't display accessibility
applications here -->
<Not><Category>Accessibility</Category></Not>
<Not><Category>System</Category></Not>
<Not><Category>X-GNOME-Utilities</Category></Not>
</And>
</Include>
<Exclude>
<!-- Exclude everything we put in the X-GNOME-Utilities whitelist.
Please keep the list alphabetically sorted! -->
<Filename>deja-dup-preferences.desktop</Filename>
<Filename>eog.desktop</Filename>
<Filename>evince.desktop</Filename>
<Filename>file-roller.desktop</Filename>
<Filename>gcalctool.desktop</Filename>
<Filename>gnome-dictionary.desktop</Filename>
<Filename>gnome-disks.desktop</Filename>
<Filename>gnome-font-viewer.desktop</Filename>
<Filename>gnome-screenshot.desktop</Filename>
<Filename>gnome-terminal.desktop</Filename>
<Filename>gnome-tweak-tool.desktop</Filename>
<Filename>gucharmap.desktop</Filename>
<Filename>seahorse.desktop</Filename>
<Filename>vinagre.desktop</Filename>
<Filename>yelp.desktop</Filename>
<!-- Exclude Sundry items -->
<Filename>alacarte.desktop</Filename>
</Exclude>
</Menu> <!-- End Accessories -->
<!-- Accessibility submenu -->
<Menu>
<Name>Universal Access</Name>
<Directory>Utility-Accessibility.directory</Directory>
<Include>
<And>
<Category>Accessibility</Category>
<Not><Category>Settings</Category></Not>
</And>
</Include>
<Exclude>
<!-- Sundry exclusions -->
<Filename>orca.desktop</Filename>
</Exclude>
</Menu> <!-- End Accessibility -->
<!-- Development Tools -->
<Menu>
<Name>Development</Name>
<Directory>Development.directory</Directory>
<Include>
<And>
<Category>Development</Category>
</And>
<Filename>emacs.desktop</Filename>
</Include>
<Exclude>
<!-- Sundry exclusions -->
<Filename>jhbuild.desktop</Filename>
<Filename>java-1.7.0-openjdk-jconsole.desktop</Filename>
<Filename>java-1.7.0-openjdk-policytool.desktop</Filename>
<Filename>log4j-chainsaw.desktop</Filename>
<Filename>log4j-logfactor5.desktop</Filename>
</Exclude>
</Menu> <!-- End Development Tools -->
<!-- Education -->
<Menu>
<Name>Education</Name>
<Directory>Education.directory</Directory>
<Include>
<And>
<Category>Education</Category>
<Not><Category>Science</Category></Not>
</And>
</Include>
</Menu> <!-- End Education -->
<!-- Science -->
<Menu>
<Name>Science</Name>
<Directory>GnomeScience.directory</Directory>
<Include>
<And>
<Category>Education</Category>
<Category>Science</Category>
</And>
</Include>
</Menu> <!-- End Science -->
<!-- Games -->
<Menu>
<Name>Games</Name>
<Directory>Game.directory</Directory>
<Include>
<And>
<Category>Game</Category>
<Not><Category>ActionGame</Category></Not>
<Not><Category>AdventureGame</Category></Not>
<Not><Category>ArcadeGame</Category></Not>
<Not><Category>BoardGame</Category></Not>
<Not><Category>BlocksGame</Category></Not>
<Not><Category>CardGame</Category></Not>
<Not><Category>KidsGame</Category></Not>
<Not><Category>LogicGame</Category></Not>
<Not><Category>Simulation</Category></Not>
<Not><Category>SportsGame</Category></Not>
<Not><Category>StrategyGame</Category></Not>
</And>
</Include>
<DefaultLayout inline="true" inline_limit="6" inline_header="false">
<Merge type="menus"/>
<Merge type="files"/>
</DefaultLayout>
<Menu>
<Name>Action</Name>
<Directory>ActionGames.directory</Directory>
<Include>
<Category>ActionGame</Category>
</Include>
</Menu>
<Menu>
<Name>Adventure</Name>
<Directory>AdventureGames.directory</Directory>
<Include>
<Category>AdventureGame</Category>
</Include>
</Menu>
<Menu>
<Name>Arcade</Name>
<Directory>ArcadeGames.directory</Directory>
<Include>
<Category>ArcadeGame</Category>
</Include>
</Menu>
<Menu>
<Name>Board</Name>
<Directory>BoardGames.directory</Directory>
<Include>
<Category>BoardGame</Category>
</Include>
</Menu>
<Menu>
<Name>Blocks</Name>
<Directory>BlocksGames.directory</Directory>
<Include>
<Category>BlocksGame</Category>
</Include>
</Menu>
<Menu>
<Name>Cards</Name>
<Directory>CardGames.directory</Directory>
<Include>
<Category>CardGame</Category>
</Include>
</Menu>
<Menu>
<Name>Kids</Name>
<Directory>KidsGames.directory</Directory>
<Include>
<Category>KidsGame</Category>
</Include>
</Menu>
<Menu>
<Name>Logic</Name>
<Directory>LogicGames.directory</Directory>
<Include>
<Category>LogicGame</Category>
</Include>
</Menu>
<Menu>
<Name>Role Playing</Name>
<Directory>RolePlayingGames.directory</Directory>
<Include>
<Category>RolePlaying</Category>
</Include>
</Menu>
<Menu>
<Name>Simulation</Name>
<Directory>SimulationGames.directory</Directory>
<Include>
<Category>Simulation</Category>
</Include>
</Menu>
<Menu>
<Name>Sports</Name>
<Directory>SportsGames.directory</Directory>
<Include>
<Category>SportsGame</Category>
</Include>
</Menu>
<Menu>
<Name>Strategy</Name>
<Directory>StrategyGames.directory</Directory>
<Include>
<Category>StrategyGame</Category>
</Include>
</Menu>
</Menu> <!-- End Games -->
<!-- Graphics -->
<Menu>
<Name>Graphics</Name>
<Directory>Graphics.directory</Directory>
<Include>
<And>
<Category>Graphics</Category>
<Not><Filename>eog.desktop</Filename></Not>
<Not><Filename>gnome-eog.desktop</Filename></Not>
<Not><Filename>evince.desktop</Filename></Not>
</And>
</Include>
</Menu> <!-- End Graphics -->
<!-- Internet -->
<Menu>
<Name>Internet</Name>
<Directory>Network.directory</Directory>
<Include>
<And>
<Category>Network</Category>
<Not><Category>X-GNOME-WebApplication</Category></Not>
</And>
</Include>
<Exclude>
<!-- Utilities exclusions -->
<Filename>vinagre.desktop</Filename>
<!-- Sundry exclusions -->
<Filename>javaws.desktop</Filename>
</Exclude>
</Menu> <!-- End Internet -->
<!-- Web Applications -->
<Menu>
<Name>Web Applications</Name>
<Directory>X-GNOME-WebApplications.directory</Directory>
<Include>
<And>
<Category>Network</Category>
<Category>X-GNOME-WebApplication</Category>
</And>
</Include>
</Menu>
<!-- Multimedia -->
<Menu>
<Name>Multimedia</Name>
<Directory>AudioVideo.directory</Directory>
<Include>
<And>
<Category>AudioVideo</Category>
</And>
</Include>
</Menu> <!-- End Multimedia -->
<!-- Office -->
<Menu>
<Name>Office</Name>
<Directory>Office.directory</Directory>
<Include>
<And>
<Category>Office</Category>
<Not><Filename>evince.desktop</Filename></Not>
<Not><Filename>gnome-dictionary.desktop</Filename></Not>
</And>
</Include>
</Menu> <!-- End Office -->
<!-- Sundry -->
<Menu>
<Name>Sundry</Name>
<Directory>X-GNOME-Sundry.directory</Directory>
<Include>
<Filename>alacarte.desktop</Filename>
<Filename>authconfig.desktop</Filename>
<Filename>dconf-editor.desktop</Filename>
<Filename>fedora-release-notes.desktop</Filename>
<Filename>firewall-config.desktop</Filename>
<Filename>flash-player-properties.desktop</Filename>
<Filename>gconf-editor.desktop</Filename>
<Filename>gnome-abrt.desktop</Filename>
<Filename>gnome-power-statistics.desktop</Filename>
<Filename>ibus-setup-anthy.desktop</Filename>
<Filename>ibus-setup.desktop</Filename>
<Filename>ibus-setup-hangul.desktop</Filename>
<Filename>ibus-setup-libbopomofo.desktop</Filename>
<Filename>ibus-setup-libpinyin.desktop</Filename>
<Filename>ibus-setup-m17n.desktop</Filename>
<Filename>ibus-setup-typing-booster.desktop</Filename>
<Filename>im-chooser.desktop</Filename>
<Filename>itweb-settings.desktop</Filename>
<Filename>jhbuild.desktop</Filename>
<Filename>javaws.desktop</Filename>
<Filename>java-1.7.0-openjdk-jconsole.desktop</Filename>
<Filename>java-1.7.0-openjdk-policytool.desktop</Filename>
<Filename>log4j-chainsaw.desktop</Filename>
<Filename>log4j-logfactor5.desktop</Filename>
<Filename>nm-connection-editor.desktop</Filename>
<Filename>orca.desktop</Filename>
<Filename>setroubleshoot.desktop</Filename>
<Filename>system-config-date.desktop</Filename>
<Filename>system-config-firewall.desktop</Filename>
<Filename>system-config-keyboard.desktop</Filename>
<Filename>system-config-language.desktop</Filename>
<Filename>system-config-printer.desktop</Filename>
<Filename>system-config-users.desktop</Filename>
<Filename>vino-preferences.desktop</Filename>
</Include>
</Menu>
<!-- System Tools-->
<Menu>
<Name>System</Name>
<Directory>System-Tools.directory</Directory>
<Include>
<And>
<Category>System</Category>
<Not><Category>Settings</Category></Not>
<Not><Category>Game</Category></Not>
<Not><Category>X-GNOME-Utilities</Category></Not>
</And>
</Include>
<Exclude>
<!-- Utilities exclusions -->
<Filename>baobab.desktop</Filename>
<Filename>gnome-system-log.desktop</Filename>
<Filename>gnome-system-monitor.desktop</Filename>
<Filename>gnome-terminal.desktop</Filename>
<!-- Sundry exclusions -->
<Filename>dconf-editor.desktop</Filename>
<Filename>fedora-release-notes.desktop</Filename>
<Filename>gconf-editor.desktop</Filename>
<Filename>gnome-abrt.desktop</Filename>
<Filename>gnome-power-statistics.desktop</Filename>
<Filename>dconf-editor.desktop</Filename>
<Filename>setroubleshoot.desktop</Filename>
</Exclude>
<Menu>
<Name>Preferences</Name>
<Directory>Settings.directory</Directory>
<Include>
<And>
<Category>Settings</Category>
<Not>
<Or>
<Category>System</Category>
<Category>X-GNOME-Settings-Panel</Category>
<Filename>alacarte.desktop</Filename>
<Filename>caribou.desktop</Filename>
<Filename>dconf-editor.desktop</Filename>
<Filename>fedora-im-chooser.desktop</Filename>
<Filename>fedora-release-notes.desktop</Filename>
<Filename>firewall-config.desktop</Filename>
<Filename>flash-player-properties.desktop</Filename>
<Filename>gconf-editor.desktop</Filename>
<Filename>gnome-abrt.desktop</Filename>
<Filename>fedora-abrt.desktop</Filename>
<Filename>gnome-orca.desktop</Filename>
<Filename>gnome-power-statistics.desktop</Filename>
<Filename>gnome-user-share-properties.desktop</Filename>
<Filename>ibus.desktop</Filename>
<Filename>ibus-daemon.desktop</Filename>
<Filename>ibus-setup-anthy.desktop</Filename>
<Filename>ibus-setup.desktop</Filename>
<Filename>ibus-setup-hangul.desktop</Filename>
<Filename>ibus-setup-libbopomofo.desktop</Filename>
<Filename>ibus-setup-libpinyin.desktop</Filename>
<Filename>ibus-setup-m17n.desktop</Filename>
<Filename>ibus-setup-typing-booster.desktop</Filename>
<Filename>im-chooser.desktop</Filename>
<Filename>itweb-settings.desktop</Filename>
<Filename>jhbuild.desktop</Filename>
<Filename>javaws.desktop</Filename>
<Filename>java-1.7.0-openjdk-jconsole.desktop</Filename>
<Filename>java-1.7.0-openjdk-policytool.desktop</Filename>
<Filename>log4j-chainsaw.desktop</Filename>
<Filename>log4j-logfactor5.desktop</Filename>
<Filename>nm-connection-editor.desktop</Filename>
<Filename>orca.desktop</Filename>
<Filename>setroubleshoot.desktop</Filename>
<Filename>authconfig.desktop</Filename>
<Filename>system-config-date.desktop</Filename>
<Filename>system-config-firewall.desktop</Filename>
<Filename>system-config-keyboard.desktop</Filename>
<Filename>system-config-language.desktop</Filename>
<Filename>system-config-printer.desktop</Filename>
<Filename>system-config-users.desktop</Filename>
<Filename>vino-preferences.desktop</Filename>
</Or>
</Not>
</And>
</Include>
</Menu>
<Menu>
<Name>Administration</Name>
<Directory>Settings-System.directory</Directory>
<Include>
<And>
<Category>Settings</Category>
<Category>System</Category>
<Not>
<Or>
<Category>X-GNOME-Settings-Panel</Category>
<Filename>alacarte.desktop</Filename>
<Filename>caribou.desktop</Filename>
<Filename>dconf-editor.desktop</Filename>
<Filename>fedora-im-chooser.desktop</Filename>
<Filename>fedora-release-notes.desktop</Filename>
<Filename>firewall-config.desktop</Filename>
<Filename>flash-player-properties.desktop</Filename>
<Filename>gconf-editor.desktop</Filename>
<Filename>gnome-abrt.desktop</Filename>
<Filename>fedora-abrt.desktop</Filename>
<Filename>gnome-orca.desktop</Filename>
<Filename>gnome-power-statistics.desktop</Filename>
<Filename>gnome-user-share-properties.desktop</Filename>
<Filename>ibus.desktop</Filename>
<Filename>ibus-daemon.desktop</Filename>
<Filename>ibus-setup-anthy.desktop</Filename>
<Filename>ibus-setup.desktop</Filename>
<Filename>ibus-setup-hangul.desktop</Filename>
<Filename>ibus-setup-libbopomofo.desktop</Filename>
<Filename>ibus-setup-libpinyin.desktop</Filename>
<Filename>ibus-setup-m17n.desktop</Filename>
<Filename>ibus-setup-typing-booster.desktop</Filename>
<Filename>im-chooser.desktop</Filename>
<Filename>itweb-settings.desktop</Filename>
<Filename>jhbuild.desktop</Filename>
<Filename>javaws.desktop</Filename>
<Filename>java-1.7.0-openjdk-jconsole.desktop</Filename>
<Filename>java-1.7.0-openjdk-policytool.desktop</Filename>
<Filename>log4j-chainsaw.desktop</Filename>
<Filename>log4j-logfactor5.desktop</Filename>
<Filename>nm-connection-editor.desktop</Filename>
<Filename>orca.desktop</Filename>
<Filename>setroubleshoot.desktop</Filename>
<Filename>authconfig.desktop</Filename>
<Filename>system-config-date.desktop</Filename>
<Filename>system-config-firewall.desktop</Filename>
<Filename>system-config-keyboard.desktop</Filename>
<Filename>system-config-language.desktop</Filename>
<Filename>system-config-printer.desktop</Filename>
<Filename>system-config-users.desktop</Filename>
<Filename>vino-preferences.desktop</Filename>
</Or>
</Not>
</And>
</Include>
</Menu>
</Menu> <!-- End System Tools -->
<!-- System Settings -->
<Menu>
<Name>System Settings</Name>
<Directory>X-GNOME-SystemSettings.directory</Directory>
<Include>
<Category>X-GNOME-Settings-Panel</Category>
</Include>
</Menu>
<!-- Utilities submenu -->
<Menu>
<Name>Utilities</Name>
<Directory>X-GNOME-Utilities.directory</Directory>
<Include>
<Category>X-GNOME-Utilities</Category>
<Filename>baobab.desktop</Filename>
<Filename>deja-dup-preferences.desktop</Filename>
<Filename>eog.desktop</Filename>
<Filename>evince.desktop</Filename>
<Filename>file-roller.desktop</Filename>
<Filename>gcalctool.desktop</Filename>
<Filename>gnome-dictionary.desktop</Filename>
<Filename>gnome-disks.desktop</Filename>
<Filename>gnome-font-viewer.desktop</Filename>
<Filename>gnome-screenshot.desktop</Filename>
<Filename>gnome-system-log.desktop</Filename>
<Filename>gnome-system-monitor.desktop</Filename>
<Filename>gnome-terminal.desktop</Filename>
<Filename>gnome-tweak-tool.desktop</Filename>
<Filename>gucharmap.desktop</Filename>
<Filename>seahorse.desktop</Filename>
<Filename>vinagre.desktop</Filename>
<Filename>yelp.desktop</Filename>
</Include>
</Menu>
<!-- Other -->
<Menu>
<Name>Other</Name>
<Directory>X-GNOME-Other.directory</Directory>
<OnlyUnallocated/>
<Include>
<And>
<Not><Category>Core</Category></Not>
<Not><Category>Screensaver</Category></Not>
<!-- Really Fedora ??? -->
<Not><Filename>gnome-eog.desktop</Filename></Not>
<Not><Filename>gnome-file-roller.desktop</Filename></Not>
<Not><Filename>gnome-gucharmap.desktop</Filename></Not>
</And>
</Include>
</Menu> <!-- End Other -->
<Layout>
<Merge type="menus" />
<Menuname>Other</Menuname>
<Merge type="files" />
</Layout>
<Include>
<Filename>ubuntu-software-center.desktop</Filename>
</Include>
<!-- Separator between menus and gnome-app-install -->
<Layout>
<Merge type="menus"/>
<Merge type="files"/>
<Separator/>
<Filename>ubuntu-software-center.desktop</Filename>
</Layout>
</Menu> <!-- End Applications -->
Pour modifier tout ça, il faut pas mal se documenter, comprendre la syntaxe des fichiers de config, comprendre comment tout s'imbrique, etc. Et donc, pour un utilisateur lambda qui voudrait juste modifier quelques éléments du menus sans passer des heures à lire de la doc et à se tailler un menu sur mesure, il y a Alacarte, qui est assez mal foutu et qui gère ses lanceurs de façon un peu particulière.
Si tu te retrouves avec un menu inutilisable après l'utilisation d'Alacarte, ce n'est pas très compliqué de remettre les choses dans l'ordre, il faut juste identifier ses fichiers de config dans ~/.local/share/applications, ~/.config/menus et éventuellement ~/.local/share/desktop-directories, puis les supprimer. Si tu as un doute, tu peux commencer par lister ce qu'il y a dans chacun de ces dossiers pour voir ça en détail :
ls ~/.local/share/applications ~/.config/menus ~/.local/share/desktop-directories
Après, si tu veux vraiment personnaliser ton menu, la tâche ne sera pas aisée.