GNOME shell extension management apps on Linux

The XDA piece on GNOME extensions put the frustration into words: half of GNOME’s best user-facing features are third-party extensions that break every six months when the shell version bumps. The Firefox integration that the extensions.gnome.org site depends on is fragile too. These best apps for managing GNOME shell extensions on Linux give you install, update, backup, and rollback without opening a browser once.

What to look for in an extension manager

Quick comparison

App Best for Free plan Standout Distro packaging
Extension Manager (mjakeman) The default answer Free Browse, install, and update in one window Flathub, most distros
GNOME Extensions app (built-in) The bare minimum Free Enable/disable and settings Every GNOME install
gext Scripting extensions Free CLI-first, cross-distro AUR, pip
gnome-shell-extension-installer Ubuntu install scripting Free Wget-friendly bash script Manual, upstream repo
Extension Rollback Recovering from bad updates Free Reverts to previous version Flathub
Fedora Extension Sets Distro-endorsed picks Free Curated by Fedora, guaranteed compatible Fedora Workshops repo
Déjà Dup Full-system backup that catches extensions Free Backups on a schedule Every major distro

The apps

1. Extension Manager — best default answer

Extension Manager by Matthew Jakeman is what most modern users mean when they talk about a “GNOME extensions app.” Browse extensions.gnome.org inside a native window, install with one click, batch-update, and configure per-extension settings without launching Firefox.

Where it falls short: it depends on the extensions.gnome.org API. If GNOME.org rate-limits or the site is down, the browse tab breaks. It does not do version rollback on its own.

Pricing:

Platforms: Linux (any GNOME desktop). Download: Extension Manager on Flathub Bottom line: the first app to install after any fresh GNOME desktop.

2. GNOME Extensions app — best bare minimum

GNOME Extensions app ships with every GNOME install now. It cannot browse or install; it can enable, disable, uninstall, and open the per-extension settings dialog. Combined with the Flatpak Extension Manager it covers everything.

Where it falls short: installation is browser-only. No update-all button. No version compatibility warnings.

Pricing:

Platforms: Linux (any GNOME desktop). Download: already installed on any GNOME desktop, otherwise gnome-extensions-app from your distro package manager. Bottom line: what everyone actually uses on day one, then supplements with something better.

3. gext — best CLI for scripting

gext is a Python CLI that talks to extensions.gnome.org from a terminal. gext search dash to dock, gext install <uuid>, gext update, gext export > extensions.txt. The export file makes moving your extension set between machines a one-line paste.

Where it falls short: installs go through gnome-shell live-update mechanics, so you still need to log out and back in for shell-level extensions to take effect.

Pricing:

Platforms: Linux (any GNOME desktop). Download: essembeh/gnome-extensions-cli via pip install gnome-extensions-cli or AUR. Bottom line: the tool for the “I ran a bash script and my new laptop looks like my old one” moment.

4. gnome-shell-extension-installer — best for scripted Ubuntu setups

gnome-shell-extension-installer is a single bash script that fetches an extension archive from extensions.gnome.org by ID and installs it locally. Perfect for cloud-init scripts, Ansible plays, or a first-boot script on a fresh Ubuntu install.

Where it falls short: no update mechanism. Nothing prevents you from installing something incompatible.

Pricing:

Platforms: Linux (Ubuntu, Debian, Fedora, Arch). Download: gnome-shell-extension-installer on GitHub Bottom line: the least-graphical option, ideal in automation.

5. Extension Rollback — best recovery tool

Extension Rollback keeps a history of every extension version you install and lets you revert if a shell update breaks it. Useful when a nightly extensions.gnome.org release is buggier than the one that ran fine yesterday.

Where it falls short: does not prevent bad installs, only recovers from them. Needs to run before the bad update to have anything to roll back to.

Pricing:

Platforms: Linux (any GNOME desktop). Download: Extension Rollback on Flathub Bottom line: worth installing the first time GNOME 48 comes and half your extensions stop working.

6. Fedora Extension Sets — best distro-endorsed picks

Fedora Extension Sets are Fedora Project-curated bundles of extensions tested to work together on the current Fedora release. Install the set, get a preconfigured tray/dash/system-monitor loadout, and Fedora commits to keeping them working during the release lifecycle.

Where it falls short: Fedora-only. Sets are opinionated; the maintainers will not add every extension you love.

Pricing:

Platforms: Linux (Fedora Workstation). Download: dnf install gnome-shell-extension-sets on Fedora. Bottom line: the safest way to run extensions if you can pick your distro to fit them.

7. Déjà Dup — best full-system backup that catches extensions

Déjà Dup is the default backup app on GNOME and catches ~/.local/share/gnome-shell/extensions alongside everything else in your home directory. If a distro upgrade nukes your carefully tuned setup, one restore brings it all back.

Where it falls short: it is a general backup tool, not an extension manager. Restoring extensions across shell versions still needs a compatibility check afterwards.

Pricing:

Platforms: Linux (any GNOME desktop). Download: Déjà Dup on Flathub Bottom line: the “why did I not do this before the distro upgrade” tool.

How to pick the right one

For most users: install Extension Manager, keep the built-in GNOME Extensions app for enable/disable, add Extension Rollback the first time you have a bad update. For setup automation across machines: gext or gnome-shell-extension-installer in your dotfiles. For a family Fedora laptop: Fedora Extension Sets and hands off. Everyone: run Déjà Dup on a schedule so a distro upgrade cannot cost you a weekend of clicking. Stay browser-only if you install one extension a year and never care again.

FAQ

Do I still need the Firefox integration to install extensions?

Not with Extension Manager or gext. Both talk to extensions.gnome.org directly. The Firefox path still works but is no longer required.

Why do my extensions break every GNOME release?

Extensions declare which shell versions they support. When GNOME publishes a new shell major version, most extensions need small updates before they enable again. Extension Manager and Fedora Extension Sets both surface which of your extensions have not been updated for the current shell.

How do I recover after a GNOME update breaks my desktop?

Log in to a fallback session (usually Wayland on X11), open Extension Manager or the built-in app, and disable all extensions. Log out and back in. Re-enable one at a time to find the guilty party, or use Extension Rollback to revert its version.

How do I check if an extension is safe before installing?

Extension Manager shows the extensions.gnome.org page inline including the source-code link. Read that first for anything requesting system integration or launcher hooks. Every published extension is manually reviewed but the review is not a security audit.

How do I copy my extension list to a new machine?

gext export > ~/extensions.txt, copy the file across, gext install $(cat ~/extensions.txt). Or restore your Déjà Dup backup and everything else follows.