App Folders

"App Folders" is the name given to the grouping of applications in the gnome-shell overview. gnome-shell comes with two predefined app folders, 'Utilities' and 'Sundry'.

App folders can be populated based on categories from desktop files, or with explicit lists of applications.

The official way to create or modify app folders is via the installed applications list in gnome-software. This HowDoI page explains how to create app folders if you don't have gnome-software installed, or you using a distribution where gnome-software does not (yet) work.

The Schema

The app folder configuration is stored in dconf, using relocatable schemas. Since this is somewhat outside of the usual dconf territory, we'll go over this in detail. First, there is a normal gsettings schema containing a key for the list of app folders. The schema is called org.gnome.desktop.app-folders, and the key is called folder-children:

$ gsettings get org.gnome.desktop.app-folders folder-children
['Utilities', 'Sundry']

There are various pieces of information that are needed for each app folder. First, each app folder has a name that is shown in the overview. The name may optionally be translated by looking it up in /usr/share/desktop-directories. Next, there can be a list of categories to include when populating the folder. Additionally, there can be lists of applications to explicitly include in or exclude from the folder.

All of this information is collected in the org.gnome.desktop.app-folders.folder schema. This is a relocatable schema, so in order to use it, you need to know which path to use. gnome-shell expects the per-folder information to be stored under /org/gnome/desktop/app-folders/folders/folder/, where folder is the string used in the folder-children list. Note that dconf insists that each path ends with a /.

Here is how you can list the contents of such a folder configuration:

$ gsettings list-keys org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/Utilities/
translate
categories
apps
excluded-apps
name

And here is how you get the value of an individual key:

$ gsettings get org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/Utilities/ categories
['X-GNOME-Utilities']

Creating a category-based app folder

Lets use the Game category as an example. First, we add the new folder to the list of folders. Note that we have to quote the value to prevent the shell from interpreting [] and other characters:

$ gsettings set org.gnome.desktop.app-folders folder-children "[..., 'Game']"

(... stands for the previous contents of this key.)

Now we have to create the per-folder information. Start with the folder name. Since there is a /usr/share/desktop-directories/Game.directory file, we can mark the name for translation.

$ gsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/Game/ name 'Game'
$ gsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/Game/ translate true

Next, set the categories we want to appear in our new folder:

$ gsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/Game/ categories "['Game']"

And thats it! If you now go to the overview, all your games should appear in the new folder, and the folder name should be translated to your language.

Excluding an app

Sometimes, categories are not quite right, or you just want to keep your one favorite out of the folder. You can do so with the excluded-apps key:

$ gsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/Game/ excluded-apps "['gnome-chess.desktop']"

Creating a manual folder

Not all desktop files have meaningful categories, so it is sometimes easier, just to work by collecting applications manually. As an example, we create an 'Audio' folder for audacious and brasero. As before, we start by adding the new folder to the list:

$ gsettings set org.gnome.desktop.app-folders folder-children "[..., 'Audio']"

And set its name. This time, we don't mark it as translatable, since I am not sure if there is an Audio.directory file.

$ gsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/Audio/ name 'Audio'

And we populate it by adding the two applications to the apps key:

$ gsettings set org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/Audio/ apps "['audacious.desktop', 'brasero.desktop']"

Note that applications are identified by the desktop file name (without path, but including the .desktop extension. (... stands for the previous contents of this key.)