2.3. Vfolders

In general terms, a vfolder is a virtual representation of items that reside in a physical location or physical locations on your system. For example, a vfolder might represent the contents of several directories. A vfolder is an abstraction from one or more physical locations. In terms of menus in the GNOME desktop, a vfolder is a representation in a menu of items that might be physically located in several directories.

A vfolder information file is an XML file that describes a vfolder. Vfolder information files specify the structure of your menus. Vfolder information files specify the names of your menus, and the order in which applications appear in your menus. Vfolder information files have a .vfolder-info file extension.

The following is an excerpt from a vfolder information file:

<?xml version="1.0"?>
<VFolderInfo>
.
.
.
  <Folder>
    <Name>Applications</Name>
    <Desktop>Applications.directory</Desktop>
    <Folder>
      <Name>Accessories</Name>
      <DontShowIfEmpty/>
      <Desktop>Accessories.directory</Desktop>
      <Query>
        <And>
          <Keyword>Application</Keyword>
          <Keyword>Utility</Keyword>
        </And>
      </Query>
    </Folder>
.
.
.
  </Folder>
</VFolderInfo>

Table 2.2 describes some of the elements in vfolder information files.

Table 2.2. Vfolder Information File Elements

Element

Description

<Folder>

Contains the elements that define the name, content, and structure of the menu.

<Name>

Specifies the name of the menu.

<Desktop>

Specifies the name of the directory entry file that specifies the name, comment, and icon for the menu.

<Query>

Specifies a query to run on desktop entry files. If a desktop entry file matches the requirements in the query, the menu item is displayed in the menu.

The query in the excerpt searches for desktop entry files that contain the keywords Application and Utility in the Categories key. Desktop entry files that match are displayed in the Applications menu.

This element is optional.

<DontShowIfEmpty/>

If this element is present, the menu is not displayed if the menu does not contain any items.

This element is optional.