Soubory s definicí nabídky

Soubory nabídek definují hierarchii nabídek, kterou používá panel nabídek GNOME. Změnou těchto souborů můžete přizpůsobit nabídky pro všechny uživatele nebo pro jednoho uživatele, v závislosti na umístění souboru applications.menu, který měníte.

Soubory nabídek musí být umístěné v $XDG_CONFIG_DIRS/menus/applications.menu. Pokud není $XDG_CONFIG_DIRS1 nastavená, použije se výchozí cesta /etc/xdg. Rovněž je implementováno, že lze do umístění $XDG_CONFIG_HOME/menus/applications.menu uložit uživatelem vytvořenou verzi, která se prohledá jako první. Pokud není $XDG_CONFIG_HOME nastavená, použije se výchozí cesta ~/.config. Složky, které se vyskytují v $XDG_CONFIG_DIRS jako první jsou brané přednostně při více souborech applications.menu. První nalezený soubor se použije a ostatní soubory jsou ignorovány.

V případě, že jste z pořadí, ve kterém se cesty prohledávají, zmateni, tak zde je jednoduchý seznam postupu rozhodování o umístění applications.menu:

  1. Prohledá se každá složka z $XDG_CONFIG_HOME v zadaném pořadí, zda se v ní nenachází menus/applications.menu. Pokud není $XDG_CONFIG_HOME nastavená, použije se výchozí složka ~/.config/.
  2. Prohledá se každá složka z $XDG_CONFIG_DIRS v zadaném pořadí, zda se v ní nenachází menus/applications.menu. Pokud není $XDG_CONFIG_DIRS nastavená, použije se výchozí složka /etc/xdg/.
  3. Použije se první nalezený soubor applications.menu.

Příklad 2-1 obsahuje ukázku souboru .menu. V tomto příkladu se nejvyšší nabídka nazývá Aplikace, což je dáno elementem <Name>. Nabídka Aplikace obsahuje jednu podnabídku, ale může jich být více. Každá podnabídka může také mít element <Include>. Účelem elementu <Include> je provádět filtrování sady dostupných vstupů pracovního prostředí pomocí srovnávacích pravidel.

Například element <Category> je základní srovnávací pravidlo, které vybere vstup pracovního prostředí pouze v případě, že klíč Categories obsahuje hodnotu elementu <Category>. V příkladu bude nabídka Příslušenství zahrnovat vstupy pracovního prostředí jen v případě, že budou mít v klíči Categories uvedeno ‚Pomůcky‘, ale ne ‚Systém‘. Více o klíči Categories uvádí Oddíl 2.3 ― Soubor vstupu pracovního prostředí.

Příklad 2-1Příklad souboru .menu

<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
 "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
<Menu>
  <Name>Aplikace</Name>
  <Directory>Applications.directory</Directory>

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

  <!-- Accessories submenu -->
  <Menu>
    <Name>Příslušenství</Name>
    <Directory>Accessories.directory</Directory>
    <Include>
      <And>
        <Category>Pomůcky</Category>
        <Not>
          <Category>Systém</Category>
        </Not>
      </And>
    </Include>
  </Menu> <!-- End Accessories -->

  <!-- possibly more submenus -->

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

Tabulka 2-1 popisuje některé z elementů v souborech .menu. Úplný popis najdete ve Specifikaci nabídek od XDG.

Tabulka 2-1Elementy souboru s definicí nabídky
Element Popis
<Menu> Kořenový element, který může obsahovat vnořené elementy <Menu> definující podnabídky. Tím jak jsou elementy vnořené je daná struktura nabídky.
<Name> Určuje název nabídky. Každý element <Menu> musí obsahovat element <Name>.
<Directory>

Určuje název souboru se vstupy složek, který určuje název, komentář a ikonu pro nabídku. Pokud tento element schází, použije se pro zobrazení názvu nabídky element <Name>.

Standardně se soubory .directory hledají v umístění $XDG_DATA_DIRS/desktop-directories/, jak určuje Specifikace nabídek od XDG.

<DefaultAppDirs> Jedná se o instrukci, která označuje, že by se měly prohledat všechny dostupné vstupy pracovního prostředí z $XDG_DATA_DIRS/applications/. Pokud tato instrukce není obsažena, nejsou v těchto umístěních vyhledávány vstupy pracovního prostředí.
<DefaultDirectoryDirs> Jedná se o instrukci, která označuje, že by se měly prohledat všechny dostupné vstupy pracovního prostředí z $XDG_DATA_DIRS/desktop-directories/. Pokud tato instrukce není obsažena, nejsou v těchto umístěních vyhledávány vstupy pracovního prostředí.
<Include> Obsahuje seznam srovnávacích pravidel, na základě kterých se generuje obsah nabídky. Může obsahovat srovnávací pravidla <Filename>, <Category>, <And>, <Or>, <Not> nebo <All>. Pokud se vyskytuje více než jedno pravidlo, vážou se logickým NEBO, takže se ve výsledku objeví vstupy pracovního prostředí, které vyhovují kterémukoliv z pravidel.
<Exclude> Je opakem k <Include>, takže vstupy pracovního prostředí, který se podle tohoto elementu shodují, se vyjmou z množiny vytvořené předchozím vkládacím elementem. Z tohoto důvodu se tento element musí nacházet až za elementem <Include>.
<Filename> Srovnávací pravidlo, které vybere vstup pracovního prostředí za podmínky, že Desktop File-Id odpovídá obsahu elementu <Filename>.
<Category> Srovnávací pravidlo, které vybere vstup pracovního prostředí za podmínky, že klíč Categories odpovídá obsahu elementu <Category>.
<And> Srovnávací pravidlo, které vybere vstup pracovního prostředí za podmínky, že je vybraný všemi vnořenými srovnávacími pravidly v elementu <And>.
<Or> Srovnávací pravidlo, které vybere vstup pracovního prostředí za podmínky, že je vybraný libovolným vnořeným srovnávacím pravidlem v elementu <Or>.
<Not> Srovnávací pravidlo, které nevybere vstup pracovního prostředí za podmínky, že je vybraný libovolným vnořeným srovnávacím pravidlem v elementu <Not>.
<All> Srovnávací pravidlo, které vybere všechny vstupy pracovního prostředí.
1

$XDG_CONFIG_DIRS je proměnná prostředí, kterou definuje Specifikace základních složek od XDG.