GNOME Shell Extensions
Introduction
GNOME Shell and extensions are written in GJS, which is JavaScript bindings for GNOME Platform APIs. For an overview of how extensions fit into GNOME Shell and the platform, see the Architecture page.
For a general programming tasks with GJS, there are guides for topics like Asynchronous Programming and Working with Files, as well as gentle introductions to core concepts like GObject.
Getting Help
There are several ways for you to get help with your extension.
- Ask on Discourse, GNOME's official forums
- Ask in the Matrix/IRC room
- Ask on StackOverflow
There are also tutorial videos by extension developer and reviewer JustPerfection.
Development
Getting Started
How to get started creating your first extension
Accessibility
How to ensure your extension is accessible
Preferences
Creating a preferences window
Translations
How add multi-lingual support an extension
Debugging
How to debug an extension
Targeting Older GNOME Versions
Making the extension work on multiple versions of GNOME
TypeScript and LSP
Creating a TypeScript project to have auto-complete support in your editor.
Overview
General reference for extension concepts, files and architecture
Anatomy
Detailed explanation of the files and structure of a GNOME Shell Extension
Imports and Modules
How to use imports and modules in GNOME Shell and extensions
Architecture
High-level overview of GNOME Shell as it relates to extensions
Updates and Breakage
GNOME Shell updates and how they affect extensions
Topics
ExtensionUtils
Documentation for built-in extension utilities
Dialogs
Documentation for dialogs in GNOME Shell
PopupMenus
Documentation for popup menus in GNOME Shell
Quick Settings
How to add quick settings to an extension.
Search Provider
How to add a Search Provider to an extension.
Session Modes
How to work with session modes in GNOME Shell
St Widgets
Using St
widgets in an extension
Upgrading
Porting Guides
How to upgrade extensions across Shell versions
Legacy Documentation
Archived documentation and examples
Review Guidelines
Guidelines for developers who would like their extensions distributed on ego
Review Guidelines
GNOME Shell Extensions Review Guidelines