Project moved to https://gitlab.gnome.org/World/javascript/create-gnome-extension
create-gnome-extension
is a community maintained scaffolding tool to build GNOME Shell extensions.
To get started with developing GNOME Shell extensions, visit gjs.guide. It has tutorials and guides written by the GNOME community.
If you need more help, you can use the following channels
To use create-gnome-extension
run the following command in a terminal.
npm create gnome-extension@latest
You will be asked some questions to determine which files to include in your project.
The following file structure will be created when running npm create gnome-extension
. Depending on the options passed to create-gnome-extension, some files may not be included in your project.
project-directory/
├── data/
├── po/
├── scripts/
├── src/
│ ├── schemas/
│ │ └── org.gnome.shell.extensions.project-name.gschema.xml
│ ├── extension.[js|ts]
│ ├── prefs.[js|ts]
│ └── stylesheet.css
├── metadata.json
└── ...
data/
contains files that will be bundled into a GResource file when building your extension.po/
contains files for the translation of your project. The template file (*.pot
) lists all translatable strings. Translators will use this template to create translation files (*.po
).scripts/
consists of scripts to build and install your extension. The scripts have --help
flags. They can also be called via the npm scripts in package.json
.src/
is where the actual source code of your extension will reside. extension.js
is the main entry point, prefs.js
is the entry point for your preference window.metadata.json
provides information about your extension for GNOME Shell's extension system.Other files may be included but they aren't directly related to extension development. For instance, configuration files for tools like Prettier or ESLint.
This software is distributed under the terms of the GNU General Public License, version 2 or later. See the license file for details.