gnome-shellgnome-shell-extensions

How does the "shell-version" variable in metadata.json work, exactly?


I've seen several approaches in metadata.json, some only specifying whole versions, such as "3.22" while some with more specific such as "3.22.1". I had an issue opened where I had "3.24", "3.24.1" and "3.24.2" but the extension failed to work in "3.24.3" until I specified it.

Is necessary to list all specific "point" versions of gnome-shell supported, or only if at least one "point" version is specified does gnome-shell care?


Solution

  • Starting with GNOME 40, each stable release is simple increment of 1 and odd-numbers are no longer unstable (eg. 40, 41, 42) and minor point releases are ignored.

    Up to version 3.38, the version check was a little more complex:

    /**
     * versionCheck:
     * @required: an array of versions we're compatible with
     * @current: the version we have
     *
     * Check if a component is compatible for an extension.
     * @required is an array, and at least one version must match.
     * @current must be in the format <major>.<minor>.<point>.<micro>
     * <micro> is always ignored
     * <point> is ignored if <minor> is even (so you can target the
     * whole stable release)
     * <minor> and <major> must match
     * Each target version must be at least <major> and <minor>
     */