File definizione menu

I file menu definiscono la gerarchia dei menu usata nella barra dei menu di GNOME. Modificando questi file, è possibile personalizzare i menu per tutti gli utenti o per un singolo utente, in base alla posizione del file applications.menu che si modifica.

I file menu debbono risiedere in $XDG_CONFIG_DIRS/menus/applications.menu. Se $XDG_CONFIG_DIRS1 non è impostata, allora viene usato il percorso predefinito /etc/xdg/. Ciò implica anche che una versione specifica per l'utente può essere posizionata presso il file $XDG_CONFIG_HOME/menus/applications.menu, che è cercato per primo. Se $XDG_CONFIG_HOME non è impostata, allora viene usato il percorso predefinito ~/.config/. Le directory che appaiono per prime in $XDG_CONFIG_DIRS hanno la predecendenza qualora ci siano diversi file applications.menu. Il primo file trovato viene usato, i restanti vengono ignorati.

Per chiarire l'ordine in cui viene cercato nei percorsi, qui di seguito c'è un esempio della risoluzione della posizione di applications.menu:

  1. Cerca in ogni directory in $XDG_CONFIG_HOME per trovare /menus/applications.menu. Se $XDG_CONFIG_HOME non è impostata, allora usa come predefinita la directory ~/.config/
  2. Cerca in ogni directory in $XDG_CONFIG_DIRS per trovare /menus/applications.menu. Se $XDG_CONFIG_DIRS non è impostata, allora usa come predefinita la directory /etc/xdg/
  3. Usa il primo file applications.menu.

È possibile vedere un esempio di un file .menu in Esempio 2-1. In tale esempio, il menu di primo livello è nominato Applications; ciò è specificato usando l'elemento <Name>. Il menu Applications contiene un singolo sottomenu, ma sono consentiti diversi sottomenu. Ciascun sottomenu può presentare anche un elemento <Include>. Lo scopo dell'elemento <Include> è di applicare un filtro sull'insieme delle desktop entry disponibili usando regole di corrispondenza.

Ad esempio, l'elemento <Category> è una semplice regola di corrispondenza che seleziona una desktop entry solo se la chiave Categories contiene quanto racchiuso dell'elemento <Category>. Nell'esempio, il menu Accessories includerà una desktop entry solo se quest'ultima contiene “Utility”, ma non “System” nella chiave Categories. Per maggiori informazioni sulla chiave Categories, consultare Sezione 2.3 - File desktop entry.

2-1 Esempio di un file .menu

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

  <!-- Legge le posizioni standard dei file .directory e .desktop -->
  <DefaultAppDirs/>
  <DefaultDirectoryDirs/>

  <!-- Sottomenu Accessori -->
  <Menu>
    <Name>Accessories</Name>
    <Directory>Accessories.directory</Directory>
    <Include>
      <And>
        <Category>Utility</Category>
        <Not>
          <Category>System</Category>
        </Not>
      </And>
    </Include>
  </Menu> <!-- Fine di Accessories -->

  <!-- possibili altri sottomenu -->

</Menu> <!-- Fine di Applications -->

In Tabella 2-1 sono descritti alcuni degli elementi presenti nei file .menu. Per una descrizione più dettagliata, consultare la specifica dei menu XDG.

Tabella 2-1Elementi dei file definizione menu
Elemento Descrizione
<Menu> L'elemento radice che può contenere elementi <Menu> annidati che definiscono dei sottomenu. Il modo in cui tali elementi sono annidati determina la struttura dei menu.
<Name> Specifica il nome del menu. Ogni elemento <Menu> deve contenere un elemento <Name>.
<Directory>

Specifica il nome del file directory entry che specifica il nome, il commento e l'icona usati per il menu. Se questo elemento non è specificato, allora l'elemento <Name> viene usato per mostrare il nome del menu.

In modo predefinito, i file .directory sono ricercati nella posizione $XDG_DATA_DIRS/desktop-directories/, come definito nella specifica dei menu XDG.

<DefaultAppDir> Questa è un'istruzione che indica che tutti i file desktop entry disponibili in $XDG_DATA_DIRS/applications/ debbono essere scansionati. Se questa istruzione non è inclusa, allora tale posizione non è scansionata in cerca dei file desktop entry.
<DefaultDirectoryDirs> Questa è un'istruzione che indica che tutte i file directory entry disponibili in $XDG_DATA_DIRS/desktop-directories/ debbono essere scansionati. Se questa istruzione non è inclusa, allora tale posizione non e' scansionata in cerca dei file directory entry.
<Include> Contiene un elenco di regole di corrispondenza in base alle quali viene generato il contenuto di un menu. Può includere le regole di corrispondenza <Filename>, <Category>, <And>, <Or>, <Not> o <All>. Se sono presenti più regole, a tali regole viene applicato un OR logico, in modo che sono inclusi i file desktop entry che hanno corrispondenza con una qualsiasi regola.
<Exclude> L'opposto di <Include>; tutti i file desktop entry che hanno corrispondenza in questo elemento sono esclusi dal precedente insieme di elementi inclusi. Per tale motivo, questo elemento deve apparire dopo l'elemento <Include>.
<Filename> Una regola di corrispondenza che seleziona un file desktop entry quando il Desktop File-Id corrisponde al contenuto dell'elemento <Filename>.
<Category> Una regola di corrispondenza che seleziona un file desktop entry quando la chiave Categories corrisponde al contenuto dell'elemento <Category>.
<And> Una regola di corrispondenza che seleziona un file desktop entry quando questo è selezionato da tutte le regole di corrispondenza annidate nell'elemento <And>.
<Or> Una regola di corrispondenza che seleziona un file desktop entry quando questo è selezionato da almeno una delle regole di corrispondenza annidate nell'elemento <Or>.
<Not> Una regola di corrispondenza che non seleziona un file desktop entry quando questo è selezionato da almeno una delle regole di corrispondenza annidate nell'elemento <Not>.
<All> Una regola di corrispondenza che seleziona tutti i file desktop entry.
1

$XDG_CONFIG_DIRS è la variabile d'ambiente definita nella specifica delle directory base XDG.