Skip to content

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.

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

Guidelines ​

Guidelines for developers who would like their extensions distributed on ego

Review Guidelines ​

GNOME Shell Extensions Review Guidelines

Best Practices ​

A reference and benchmark for GNOME Shell extension code quality.

MIT Licensed | GJS, A GNOME Project