Go to file
Florian Müllner e8ee845e41 extensionSystem: Load extensions as modules
Continue the move to ESM by loading modules dynamically with
the standard import() expression, rather than by installing a
custom (legacy) importer.

This is a breaking change that affects all extensions, as they
now need to explicitly export the expected symbols.

As we are already breaking all extensions, take that opportunity
and remove support for the individual entry points: Using a
class with enable()/disable() methods has been the recommended
pattern for a long time, it is now the only entry point.

Instead of instantiating the class from an `init()` function,
the class must now be exported as default to be recognized.

Additionally, we no longer install an importer on the extension
object, so extensions that consist of more than one file MUST
import those files as modules now.

There will be a second breaking change for extensions when
gnome-shell's own code is ported to ESM, so most extension
developers will likely want to wait until the port is complete
before starting to port their extensions.

Based on a commit from Evan Welsh.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2795>
2023-07-06 18:41:29 +00:00
.gitlab/issue_templates gitlab: Add a comment about disabling extension to the issue template 2022-12-15 19:07:08 +00:00
.gitlab-ci ci: Print ESLint version before running script 2023-07-05 07:43:37 -07:00
.settings Clean out some eclipse artefacts 2019-02-13 04:39:26 +01:00
data build: Specify systemd version requirement 2023-06-30 20:13:48 +00:00
docs/reference docs: Remove invalid XInclude 2023-04-24 10:55:40 +08:00
js extensionSystem: Load extensions as modules 2023-07-06 18:41:29 +00:00
lint ci: Migrate eslint-plugin-jsdoc rule and pin eslint versions 2023-06-07 18:20:50 +00:00
man man: Update options 2020-12-28 02:25:17 +01:00
meson theme: Include both dark and light variant in resource 2023-05-25 17:10:53 +02:00
po Update British English translation 2023-06-30 19:20:49 +00:00
src st/texture-cache: Set up sliced images to fill parent 2023-07-05 10:36:14 +00:00
subprojects Bump version to 45.alpha 2023-07-06 19:23:10 +02:00
tests tests: Remove interactive tests 2023-06-29 17:55:19 +00:00
tools tools/create-toolbox: Allow setting up support for GNOME Classic 2023-05-16 18:20:42 +00:00
.eslintrc.yml portalHelper: Port to ESM 2023-06-21 13:26:42 +02:00
.gitignore Ignore eslint cache files 2023-03-01 15:55:40 +00:00
.gitlab-ci.yml ci: Bump mutter image 2023-06-28 23:44:52 +02:00
.gitmodules git: Always use libgnome-volume-control submodule from GNOME group 2022-08-04 18:31:16 +02:00
.jscheckignore ci: Don't ignore init.js 2023-04-21 18:28:32 +00:00
config.h.meson main: Prepend RPATH or RUNPATH paths to gir search paths 2022-11-25 22:09:37 +01:00
COPYING
gnome-shell.doap gnome-shell.doap: Make marge-bot a maintainer 2020-11-17 17:29:56 +00:00
HACKING.md js: Split gi imports to be on new lines to prepare for ES modules 2023-06-21 04:50:33 -07:00
meson_options.txt build: Remove Soup2 support 2023-05-26 19:05:22 +00:00
meson.build Bump version to 45.alpha 2023-07-06 19:23:10 +02:00
NEWS Bump version to 45.alpha 2023-07-06 19:23:10 +02:00
README.md doc: Update contribution section 2022-12-06 01:49:24 +01:00

GNOME Shell

GNOME Shell provides core user interface functions for the GNOME desktop, like switching to windows and launching applications. GNOME Shell takes advantage of the capabilities of modern graphics hardware and introduces innovative user interface concepts to provide a visually attractive and easy to use experience.

For more information about GNOME Shell, including instructions on how to build GNOME Shell from source and how to get involved with the project, see the project wiki.

Bugs should be reported to the GNOME bug tracking system. Please refer to the Schedule wiki page to see the supported versions.

Contributing

To contribute, open merge requests at https://gitlab.gnome.org/GNOME/gnome-shell.

Commit messages should follow the GNOME commit message guidelines. If a merge request fixes an existing issue, it is good practice to append the full issue URL to each commit message. Try to always prefix commit subjects with a relevant topic, such as panel: or status/network:, and it's always better to write too much in the commit message body than too little.

Default branch

The default development branch is main. If you still have a local checkout under the old name, use:

git checkout master
git branch -m master main
git fetch
git branch --unset-upstream
git branch -u origin/main
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main

License

GNOME Shell is distributed under the terms of the GNU General Public License, version 2 or later. See the COPYING file for details.