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".

Overview

The basics of extensions

Anatomy

What an extension is made of

Imports and Modules

How to use imports and modules

Architecture

GNOME Shell Architecture

Updates and Breakage

GNOME Shell updates and how they affect extensions

Development

Creating

Creating an extension

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

Topics

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

Last Updated: 2/26/2023, 9:50:34 AM
Contributors: Andy Holmes, Javad Rahmatzadeh, Andy Holmes, Evan Welsh, Javad Rahmatzadeh, Just Perfection, Romain