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

Session Modes

How to work with session modes in GNOME Shell

Upgrading

How to upgrade extensions across Shell versions

GNOME Shell 42

Porting Extensions to GNOME Shell 42

GNOME Shell 40

Porting Extensions to GNOME Shell 40

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: 3/26/2022, 11:03:48 PM
Contributors: Andy Holmes, Evan Welsh, Andy Holmes, Javad Rahmatzadeh, Javad Rahmatzadeh, Just Perfection, Romain