Menyfiler definierar hierarkin för menyer som används i GNOME-menyraden. Genom att ändra dessa filer kan du anpassa menyer för alla användare, eller för endast en användare beroende på platsen för applications.menu-filen som du ändrar.
Menyfiler måste finnas i $XDG_CONFIG_DIRS/menus/applications.menu. Om $XDG_CONFIG_DIRS1 inte är inställd, kommer standardsökvägen /etc/xdg att användas. Det betyder även att en användarspecifik version kan hittas i $XDG_CONFIG_HOME/menus/applications.menu vilken söks igenom först. Om $XDG_CONFIG_HOME inte är inställd, kommer standardsökvägen ~/.config att användas. Kataloger som listas först i $XDG_CONFIG_DIRS kommer att användas först när det finns flera applications.menu-filer. Första filen som hittas kommer att användas och efterföljande filer kommer att ignoreras.
Om du är osäker på ordningen i vilken sökvägar genomsöks, kommer här en enkel lista för att hitta platsen för applications.menu:
Du kan se ett exempel på en .menu-fil i Exempel 2-1. I det här exemplet, heter toppnivåmenyn Applications, vilket anges med elementet <Name>. Menyn Applications innehåller en enda undermeny, men flera undermenyer är tillåtna. Varje undermeny kan även ha ett <Include>-element. Syftet med <Include>-element är att verkställa ett filter på uppsättningen av tillgängliga skrivbordsobjekt med matchande regler.
Till exempel är elementet <Category> en grundläggande matchande regel som väljer ett skrivbordsobjekt endast om nyckeln Categories innehåller information om elementet <Category>. I exemplet kommer menyn Tillbehör att inkludera ett skrivbordsobjekt endast om det innehåller “Verktyg” men inte “System” i Categories-nycklarna. För mer information om Categories-nycklarna, se Avsnitt 2.3 ― Skrivbordsobjektfiler.
<!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>
<!-- Läs in standardfilplatser för .directory och .desktop -->
<DefaultAppDirs/>
<DefaultDirectoryDirs/>
<!-- Undermenyn Tillbehör -->
<Menu>
<Name>Accessories</Name>
<Directory>Accessories.directory</Directory>
<Include>
<And>
<Category>Utilities</Category>
<Not>
<Category>System</Category>
</Not>
</And>
</Include>
</Menu> <!-- Slut på Tillbehör -->
<!-- möjligen flera undermenyer -->
</Menu> <!-- Slut på Program -->
Tabell 2-1 beskriver några av elementen i .menu-filer. För en mer detaljerad beskrivning, se XDG menu specification.
| Element | Beskrivning |
|---|---|
| <Menu> | Rotelementet som kan innehålla nästlade <Menu>-element som definierar undermenyer. Hur dessa element är nästlade bestämmer menystrukturen. |
| <Name> | Anger namnet på menyn. Varje <Menu>-element måste innehålla ett <Name>-element. |
| <Directory> |
Anger namnet på katalogobjektfilen som anger namnet, kommentar och ikon för menyn. Om det här elementet inte anges, kommer <Name>-elementet att användas för att visa menynamnet. Som standard, söks .directory-filer igenom efter i platsen $XDG_DATA_DIRS/desktop-directories/ enligt XDG-menyspecifikationen. |
| <DefaultAppDirs> | Det här är en instruktion som indikerar att alla tillgängliga skrivbordsobjekt från $XDG_DATA_DIRS/applications/ ska sökas igenom. Om den här instruktionen inte inkluderas, kommer dessa platser inte att sökas igenom efter skrivbordsobjekt. |
| <DefaultDirectoryDirs> | Det här är en instruktion som indikerar att alla tillgängliga katalogobjekt från $XDG_DATA_DIRS/desktop-directories/ ska sökas igeom. Om den här instruktionen inte inkluderas, kommer dessa platser inte att sökas igenom efter katalogobjekt. |
| <Include> | Innehåller en lista över matchande regler efter vilka innehållet för en meny genereras. Kan inkludera de matchande reglerna <Filename>, <Category>, <And>, <Or>, <Not>, eller <All>. Om fler än en regel finns angivna, kommer reglerna att logiskt använda OR så att skrivbordsobjekt som matchar någon regel inkluderas. |
| <Exclude> | Motsatsen till <Include> eftersom någon skrivbordsobjekt som matchas i det här elementet undantas från föregående uppsättning av inkluderade element. Av den här anledningen måste det här elementet anges efter <Include>-elementet. |
| <Filename> | En matchande regel som väljer ett skrivbordsobjekt när Desktop File-Id matchar innehåller för <Filename>-elementet. |
| <Category> | En matchande regel som väljer ett skrivbordsobjekt när Categories-nyckeln matchar innehållet för <Category>-elementet. |
| <And> | En matchande regel som väljer ett skrivbordsobjekt när det väljs av alla nästlade matchande regler i <And>-elementet. |
| <Or> | En matchande regel som väljer ett skrivbordsobjekt när det väljs av någon av de nästlade matchande reglerna i <Or>-elementet. |
| <Not> | En matchande regel som inte väljer ett skrivbordsobjekt när det väljs av någon av de nästlade matchande reglerna i <Not>-elementet. |
| <All> | En matchande regel som väljer alla skrivbordsobjekt. |