Menydefinitionsfiler

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:

  1. Sök igenom varje katalog i $XDG_CONFIG_HOME för att hitta menus/applications.menu. Om $XDG_CONFIG_HOME inte är inställd, kommer standardvärdet att vara katalogen ~/.config/.
  2. Sök igenom varje katalog i $XDG_CONFIG_DIRS för att hitta menus/applications.menu. Om $XDG_CONFIG_DIRS inte är inställd, kommer standardvärdet att vara katalogen /etc/xdg/.
  3. Använd den första applications.menu-filen som hittas.

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.

Exempel 2-1Exempel på en .menu-fil

<!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.

Tabell 2-1Filelement för menydefinitioner
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.
1

$XDG_CONFIG_DIRS är miljövariabeln som definierats i XDG-baskatalogspecifikationen.