GJS is JavaScript bindings for the GNOME platform APIs. Powered by Mozilla's SpiderMonkey JavaScript engine and GObject Introspection, it opens the entire GNOME ecosystem to JavaScript developers.
The stable version of GJS is based on the latest Extended Support Release (ESR) of SpiderMonkey. To find out when a language feature was added to GJS, review NEWS in the GitLab repository.
If you are reading this file in the GJS repository, you may find it more convenient to browse and search using the API Documentation website instead. There is documentation for GLib, GTK, Adwaita, WebKit, and many more libraries. General documentation about built-in modules and APIs is under the GJS Topic.
GJS Guide has many in-depth tutorials and examples for a number of core GNOME APIs. The repository also has code examples and thorough coverage of language features in the test suite.
GTK4 + GJS Book is a start to finish walkthrough for creating GTK4 applications with GJS.
The GNOME developer portal contains examples of a variety of GNOME technologies written GJS, alongside other languages you may know.
Workbench is a code sandbox for GJS, CSS and GTK. It features live preview and a library of examples and demos.
GJS is a great option to write applications for the GNOME Desktop.
The easiest way to get started is to use GNOME Builder, start a
new project and select JavaScript
language.
Here is a non-exhaustive list of applications written in GJS:
GNOME Core Apps
GNOME Circle Apps
- Biblioteca
- Commit
- Decibels (TypeScript)
- Forge Sparks
- Junction
- Polari
- Tangram
- Workbench
GJS is used to write GNOME Shell Extensions, allowing anyone to make considerable modifications to the GNOME desktop. This can also be a convenient way to prototype changes you may want to contribute to the upstream GNOME Shell project.
There is documentation and tutorials specifically for extension authors at gjs.guide/extensions.
GJS can also be embedded in other applications, such as with GNOME Shell, to provide a powerful scripting language with support for the full range of libraries with GObject-Introspection.
- Discourse: https://discourse.gnome.org/
- Chat: https://matrix.to/#/#javascript:gnome.org
- Issue Tracker: https://gitlab.gnome.org/GNOME/gjs/issues
- StackOverflow: https://stackoverflow.com/questions/tagged/gjs