metadata.json is a mandatory file of every extension.
{ "uuid": "example@blah", "name": "Example", "description": "This is an example extension.", "shell-version": [ "3.38", "40" ], "url": "https://sharewiz.net/gnome/extensions/example", "version": 1 }
{ "uuid": "example@blah", "name": "Example", "description": "This is an example extension.", "shell-version": [ "3.38", "40" ], "url": "https://sharewiz.net/gnome/extensions/example", "version": 1 "session-modes": ["user", "unlock-dialog"], "settings-schema": "org.gnome.shell.extensions.example", "gettext-domain": "example@blah", }
A globally-unique identifier for your extension, made of two parts separated by @.
NOTE: An extension must be installed to a directory with the same name as uuid+ to be recognized by GNOME Shell.
~/.local/share/gnome-shell/extensions/example@blah/
A short, descriptive name for the extension.
A relatively short description of the extension.
NOTE: Line breaks and tabs can be inserted by using \n and \t escape sequences.
An array of strings describing the GNOME Shell versions that an extension supports.
NOTE: It must include at least one entry or the extension will be uninstallable.
A URL for an extension, where the code can be found and issues can be reported.
NOTE: It is required for extensions submitted to https://extensions.gnome.org/ to have a valid URL.
The version of the extension.
NOTE: As known to the GNOME Extensions website, and MUST be a whole number like 1.
A Gettext translation domain, used by the ExtensionUtils.initTranslations() convenience method to create a object with methods for marking and retrieving string translations in an extension.
NOTE: The domain should be unique to your extension and the easiest choice is to use the UUID from your extension, such as example@blah.
A Gio.SettingsSchema ID, used by the ExtensionUtils.getSettings() convenience method to create a Gio.Settings object for an extension.
NOTE: By convention, the schema ID for extensions all start with the string org.gnome.shell.extensions with the extension ID as a unique identifier, such as org.gnome.shell.extensions.example.
An array of strings describing the GNOME Shell session modes that the extension supports.
NOTE: Almost all extensions will only use the user session mode, which is the default if this field is not present.
WARNING: This field was added in GNOME 42.
The current possible session modes are:
NOTE: Extensions that want to support other session modes must provide a justification to be approved during review for distribution from the GNOME Extensions website.