# 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

# Development

# Creating

Creating an extension

# Preferences

Creating a preferences window

# Translations

How add multi-lingual support an extension

# Debugging

How to debug an extension

# Upgrading

How to upgrade extensions across Shell versions

# GNOME Shell 40

Porting Extensions to GNOME Shell 40

Last Updated: 4/11/2021, 5:57:22 AM