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

Review Guidelines

Guidelines for developers who would like their extensions distributed on ego

Review Guidelines

GNOME Shell Extensions Review Guidelines

MIT Licensed | GJS, A GNOME Project