gnome-shell-extensions

Bootstraps GNOME Shell extensions with jsDoc using the gnome-extensions tool.

Updated Feb 7, 2026
One-click install
npx skills add https://github.com/ahmed4g/gnome-shell-extensions-skill --skill gnome-shell-extensions
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: gnome-shell-extensions
Source: https://github.com/ahmed4g/gnome-shell-extensions-skill/tree/main/SKILLs/gnome-shell-extensions
Command: npx skills add https://github.com/ahmed4g/gnome-shell-extensions-skill --skill gnome-shell-extensions

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

GNOME Shell Extensions allow developers to customize the GNOME Shell by adding, modifying, or replacing UI behavior at runtime using GJS and GNOME Platform APIs.

Core Features & Use Cases

  • Architecture: GNOME Shell is built on Clutter (abstract toolkit) and St (Shell Toolkit); Mutter, Shell, and the UI expose APIs like St.Icon, St.Button, and Meta for windows and workspaces.
  • Getting Started: Use the interactive GNOME Extensions Tool to bootstrap a new extension; you can also manually create extensions in ~/.local/share/gnome-shell/extensions/<uuid>/ with metadata.json and extension.js.
  • Best Practices: Follow ES modules (GNOME 45+), cleanup in disable(), and adherence to GNOME Review Guidelines.
  • Use Case: Add a panel indicator or tweak shell behavior to suit user workflows.

Quick Start

Run the interactive gnome-extensions tool to bootstrap a new GNOME Shell extension.

Frequently Asked Questions about gnome-shell-extensions

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a GNOME Shell extension using GJS?

To create a GNOME Shell extension, use the interactive gnome-extensions tool to bootstrap files, or manually set up metadata.json and extension.js in ~/.local/share/gnome-shell/extensions/<uuid>/ to define your GJS customization logic.

What GNOME APIs are available for extension development?

GNOME Shell extension development exposes APIs like St.Icon and St.Button for UI components, and Meta for managing windows and workspaces, built upon the Clutter abstract toolkit and St Shell Toolkit.

Do I need to use ES modules for GNOME 45+ extension development?

Yes, adopting ES modules is a best practice for GNOME 45+ extension development. You must structure your extension.js using ES module syntax and adhere to GNOME Review Guidelines.

How do I manage the lifecycle of a GNOME Shell extension?

Manage extension lifecycle by properly implementing the enable() and disable() functions in extension.js. Ensure you clean up resources, disconnect signals, and destroy UI elements in disable() to prevent memory leaks.

What is the best way to add a panel indicator to GNOME Shell?

The best way to add a panel indicator is by creating a GNOME Shell extension with GJS. Use the St toolkit APIs to construct and manage the indicator UI, then add it to the panel during the extension's enable() lifecycle phase.