Menüdefinitions-Dateien

Menüdateien definieren die hierarchische Struktur der Menüs, die in der Menüleiste von GNOME verwendet werden. Durch Bearbeiten dieser Dateien können Sie die Menüs für alle Benutzer anpassen, aber auch für einen einzelnen Benutzer, abhängig vom Ort der Datei applications.menu, welche Sie bearbeiten.

Menüdateien müssen sich in $XDG_CONFIG_DIRS/menus/applications.menu befinden. Falls die Variable $XDG_CONFIG_DIRS1 nicht gesetzt ist, dann wird der Vorgabepfad /etc/xdg benutzt. Dies schließt ein, dass eine eventuell in $XDG_CONFIG_HOME/menus/applications.menu befindliche benutzerspezifische Version zuerst durchsucht wird. Falls die Variable $XDG_CONFIG_HOME nichtr gesetzt ist, dann wird der Vorgabepfad ~/.config verwendet. Ordnern, die in $XDG_CONFIG_DIRS zuerst aufgeführt sind, wird dabei der Vorzug gegeben, sofern verschiedene applications.menu-Dateien vorhanden sind. Die erste gefundene Datei wird verwendet und weitere Dateien werden ignoriert.

Falls Ihnen die Reihenfolge der Pfade zum Durchsuchen noch unklar ist, sehen Sie nachfolgend eine einfache Liste zum Auflösen des Ortes von applications.menu:

  1. Durchsuchen Sie jeden Ordner in $XDG_CONFIG_HOME nach der Datei menus/applications.menu. Falls $XDG_CONFIG_HOME nicht gesetzt ist, wird der Ordner ~/.config/ als Vorgabe verwendet.
  2. Durchsuchen Sie jeden Ordner in $XDG_CONFIG_DIRS nach der Datei menus/applications.menu. Falls $XDG_CONFIG_DIRS nicht gesetzt ist, wird der Ordner /etc/xdg/ als Vorgabe verwendet.
  3. Verwenden Sie die zuerst gefundene Datei namens applications.menu.

Ein Beispiel einer .menu-Datei finden Sie in Beispiel 2-1. In diesem Beispiel heißt das Menü der obersten Ebene Applications, was durch das <Name>-Element angegeben wird. Das Applications-Menü enthält ein einzelnes Untermenü, wobei aber mehrere Untermenüs erlaubt sind. Jedes der Untermenüs darf ein <Include>-Element enthalten. Der Zweck des <Include>-Elements ist die Filterung aller verfügbaren Desktopeinträge anhand von Übereinstimmungsregeln.

Beispielsweise stellt das <Category>-Element eine grundlegende Übereinstimmungsregel dar, welche einen Desktopeintrag nur dann auswählt, wenn der Categories-Schlüssel den Inhalt des <Category>-Elements enthält. Für dieses Beispiel bedeutet das, dass das Accessories-Menü einen Desktopeintrag nur dann anzeigen wird, wenn zwar “Utility”, aber nicht “System” im Categories Schlüssel enthalten ist. Weitere Informationen über den Categories-Schlüssel finden Sie in Abschnitt 2.3 ― Desktopeintrags-Dateien.

Beispiel 2-1Beispiel für eine .menu-Datei

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

  <!-- Read standard .directory and .desktop file locations -->
  <DefaultAppDirs/>
  <DefaultDirectoryDirs/>

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

  <!-- possibly more submenus -->

</Menu> <!-- End Applications -->

Tabelle 2-1 beschreibt einige der Elemente in den .menu-Dateien. Eine detailliertere Beschreibung finden Sie in der XDG-Menüspezifikation.

Tabelle 2-1Elemente der Menüdefinitions-Dateien
Element Beschreibung
<Menu> Das Wurzelelement, welches eingebettete <Menu>-Elemente zur Definition von Untermenüs enthalten kann. Auf welche Weise diese Elemente eingebettet werden, bestimmt die Menüstruktur.
<Name> Legt den Namen des Menüs fest. Jedes <Menu>-Element muss ein <Name>-Element enthalten.
<Directory>

Legt den Namen der Ordnerdatei fest, welche den Namen, den Kommentar und das Symbol für das Menü enthält. Falls dieses Element nicht angegegen ist, dann wird das <Name>-Element für die Anzeige des Menünamens verwendet.

Standardmäßig wird nach .directory-Dateien in $XDG_DATA_DIRS/desktop-directories/ gesucht, wie in der XDG menu specification festgelegt.

<DefaultAppDirs> Dies ist eine Anweisung, welche festlegt, dass alle in $XDG_DATA_DIRS/applications/ verfügbaren Desktopeinträge eingelesen werden sollen. Falls diese Anweisung nicht enthalten ist, werden diese Orte nicht nach Desktopeinträgen durchsucht.
<DefaultDirectoryDirs> Dies ist eine Anweisung, welche festlegt, dass alle in $XDG_DATA_DIRS/desktop-directories/ verfügbaren Ordnereinträge eingelesen werden sollen. Falls diese Anweisung nicht enthalten ist, werden diese Orte nicht nach Ordnereinträgen durchsucht.
<Include> Enthält eine Liste von Übereinstimmungsregeln, aus denen der Inhalt eines Menüs erstellt wird. Es darf die Übereinstimmungsregeln <Filename>, <Category>, <And>, <Or>, <Not> oder <All> enthalten. Falls mehr als eine Regel vorhanden ist, werden die Regeln mit einem logischen ODER verknüpft, so dass Desktop-Einträge jede Übereinstimmungregel einschließt.
<Exclude> Der Gegenpart zu <Include>, da eventuelle Desktop-Einträge, welche in diesem Element erfasst werden, aus dem vorherigen Satz eingeschlossener Elemente ausgeschlossen sind. Aus diesem Grund muss dieses Element nach dem <Include>-Element erscheinen.
<Filename> Eine Übereinstimmungsregel, welche ein Desktop-Eintrag auswählt, sofern die Desktop »File-Id« dem Inhalt des <Filename>-Elements entspricht.
<Category> Eine Übereinstimmungsregel, welche ein Desktop-Eintrag auswählt, sofern der Categories-Schlüssel dem Inhalt des <Category>-Elements entspricht.
<And> Eine Übereinstimmungsregel, welche ein Desktop-Eintrag auswählt, wenn es durch ein all ausgewählt wird und den eingebetteten Übereinstimmungsregeln in dem <And>-Element entspricht.
<Or> Eine Übereinstimmungsregel, welche ein Desktop-Eintrag auswählt, wenn es durch ein any ausgewählt wird und den eingebetteten Übereinstimmungsregeln in dem <Or>-Element entspricht.
<Not> Eine Übereinstimmungsregel, welche ein Desktop-Eintrag nicht auswählt, wenn es durch ein any ausgewählt wird und den eingebetteten Übereinstimmungsregeln in dem <Not>-Element entspricht.
<All> Eine Übereinstimmungsregel, welche alle Desktop-Einträge auswählt.
1

$XDG_CONFIG_DIRS ist die in der XDG base directory specification definierte Umgebungsvariable.