Linux

Where Are GNOME Shell Extensions Stored?

Where GNOME Shell keeps per-user and system-wide extensions, and how the UUID folder names map to each add-on.

Last updated

GNOME Shell extensions live in folders named by their UUID, one folder per add-on with extension.js and metadata.json inside. Your own installs go under local share in your home directory. System-wide ones from distro packages sit under /usr/share instead.

The split decides who manages what. Home folder extensions are yours to add, remove, and carry between machines. System folders belong to the package manager and return on every update. A folder whose name does not match its internal UUID gets silently ignored, which is the classic manual-install failure.

Where GNOME Shell stores this, by platform

Linux
~/.local/share/gnome-shell/extensions/<uuid>

One UUID-named folder per extension you installed yourself, each with extension.js and metadata.json. Copy these folders to migrate between machines. Log out and back in after changes. Version mismatches after a GNOME upgrade show up in the Extensions app.

Frequently asked questions

how do I move extensions to a new machine

Copy each UUID folder from ~/.local/share/gnome-shell/extensions/ to the same path on the new machine, then log out and back in. System extensions from packages reinstall through the package manager instead. Check version compatibility, since extensions pin to Shell releases.

how do I tell which folder is which extension

Look at metadata.json inside the extension folder, which carries the uuid, name, and supported Shell versions. The folder name must match the uuid exactly or GNOME ignores it. A red error flag in the Extensions app usually means a version mismatch after an upgrade.

should extensions go in home or usr

Prefer the user folder for anything you install yourself, and leave /usr to the package manager. User extensions survive system updates without package conflicts. Machine-wide installs suit labs and fleets where every seat needs the same setup.

Notice an outdated path? Let us know.