GNOME Shell Extensions
Introduction
GNOME Shell's UI and extensions are written in GJS, which is JavaScript bindings for the GNOME APIsopen in new window.
JavaScript is a prototype-based language, which means that extensions can modify the UI and behaviour of GNOME Shell while it is running. This is what is known as "monkey-patching".
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
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
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
Upgrading
How to upgrade extensions across Shell versions
Review Guidelines
Guidelines for developers who would like their extensions distributed on egoopen in new window
Review Guidelines
GNOME Shell Extensions Review Guidelines