A native tool for browsing, installing, and managing GNOME Shell Extensions
[](https://github.com/mjakeman/extension-manager/actions/workflows/main.yml) [](https://hosted.weblate.org/engage/extension-manager/) [](github.com/mjakeman/extension-manager/releases/latest) [](https://flathub.org/apps/details/com.mattjakeman.ExtensionManager) [](http://www.gnu.org/licenses/gpl-3.0) Written with GTK 4 and libadwaita  
### Third Party Packages
You may also be able to obtain Extension Manager from your distribution's package manager.
> [!IMPORTANT]
> These packages are **maintained independently** and thus may differ from the official version on Flathub. There is no guarantee of support. Please report any issues experienced to the package maintainer (not here!).
[](https://repology.org/project/extension-manager/versions)
## 🌐 Translations
Extension Manager is translated into more than 30 languages.
> [!NOTE]
> We use [Weblate](https://weblate.org/en/) - an open source continuous localisation tool - for translation management. Access to Hosted Weblate is kindly provided free of charge to the Extension Manager project.
### Contribute
Contributions to translations are always welcome!
We have a comprehensive translation guide [here](/po/README.md).
If you are new to Localisation (l10n), fear not! The entire process is explained above in as much detail as possible. If you have any trouble, please also [get in touch](#-community).
## ⚠️ Known Issues
### Extensions are not being updated
Updates do not work out of the box on GNOME 40 and certain older versions of GNOME
41 and 42 **unless the official GNOME Extensions app is also installed**. See here
for details and a simple workaround: [Wiki Page](https://github.com/mjakeman/extension-manager/wiki/Known-Issue:-Updates)
## ⏰ Using Unsupported Extensions
GNOME Shell will not load extensions that were not designed for your current
version. You can override this behaviour by manually disabling GNOME Shell's
version check. Extension Manager will respect this preference and allow you
to use unsupported extensions fully.
> [!CAUTION]
> Unsupported extensions will likely not work as intended and
> may introduce instability to your system. Disable the version check at your own risk.
> [!IMPORTANT]
> Re-enable the version check before filing issues against GNOME components.
Turn off the version check and allow unsupported extensions:
```
gsettings set org.gnome.shell disable-extension-version-validation true
```
Use the default setting and return to safety:
```
gsettings reset org.gnome.shell disable-extension-version-validation
```
## 🔨 Building
The easiest way to build is by cloning this repo with GNOME Builder. It
will automatically resolve all relevant flatpak SDKs automatically.
Extension Manager needs a recent version of the GNOME SDK in order to build. See the [Development](build-aux/com.mattjakeman.ExtensionManager.Devel.json) or [Stable](/build-aux/com.mattjakeman.ExtensionManager.json) Flatpak manifests for a full dependency list.
### Dependencies
Extension Manager depends on the following libraries:
- gettext
- gtk4
- libadwaita
- libjson-glib
- libsoup
- [blueprint](https://gitlab.gnome.org/jwestman/blueprint-compiler)
- [text-engine](https://github.com/mjakeman/text-engine/)
On Debian-based distributions, the required dependencies can be installed with the following command:
```shell
sudo apt install blueprint-compiler gettext libadwaita-1-dev libgtk-4-dev libjson-glib-dev libsoup-3.0-dev libtext-engine-dev meson
```
### Building From Source
```shell
meson setup _build
ninja -C _build
ninja install -C _build
```
extension-manager-0.5.0/build-aux/ 0000775 0000000 0000000 00000000000 14576313631 0017043 5 ustar 00root root 0000000 0000000 extension-manager-0.5.0/build-aux/com.mattjakeman.ExtensionManager.Devel.json 0000664 0000000 0000000 00000004733 14576313631 0027322 0 ustar 00root root 0000000 0000000 {
"id" : "com.mattjakeman.ExtensionManager.Devel",
"runtime" : "org.gnome.Platform",
"runtime-version" : "master",
"sdk" : "org.gnome.Sdk",
"command" : "extension-manager",
"separate-locales" : false,
"finish-args" : [
"--share=network",
"--share=ipc",
"--socket=fallback-x11",
"--device=dri",
"--socket=wayland",
"--talk-name=org.gnome.Shell.Extensions",
"--talk-name=org.gnome.SessionManager"
],
"cleanup" : [
"/include",
"/lib/pkgconfig",
"/man",
"/share/doc",
"/share/gtk-doc",
"/share/man",
"/share/pkgconfig",
"*.la",
"*.a"
],
"modules" : [
{
"name" : "blueprint-compiler",
"builddir" : true,
"buildsystem" : "meson",
"cleanup" : [
"*"
],
"sources" : [
{
"type" : "git",
"url" : "https://gitlab.gnome.org/jwestman/blueprint-compiler.git",
"commit" : "2a39a16391122af2f3d812e478c1c1398c98b972",
"tag" : "v0.10.0"
}
]
},
{
"name" : "libbacktrace",
"builddir" : true,
"buildsystem" : "autotools",
"sources" : [
{
"type" : "git",
"url" : "https://github.com/ianlancetaylor/libbacktrace.git",
"branch" : "master"
}
]
},
{
"name" : "text-engine",
"builddir" : true,
"buildsystem" : "meson",
"sources" : [
{
"type" : "git",
"url" : "https://github.com/mjakeman/text-engine.git",
"commit" : "379437b2b589a9414985dec9136b7b48bae76f9e",
"tag" : "v0.1.0"
}
]
},
{
"name" : "extension-manager",
"builddir" : true,
"buildsystem" : "meson",
"run-tests" : true,
"config-opts" : [
"-Ddevelopment=true",
"-Dpackage=Flatpak",
"-Ddistributor=mjakeman",
"-Dofficial=true"
],
"sources" : [
{
"type" : "dir",
"path" : "../"
}
]
}
]
}
extension-manager-0.5.0/build-aux/com.mattjakeman.ExtensionManager.json 0000664 0000000 0000000 00000007111 14576313631 0026255 0 ustar 00root root 0000000 0000000 {
"id" : "com.mattjakeman.ExtensionManager",
"runtime" : "org.gnome.Platform",
"runtime-version" : "45",
"sdk" : "org.gnome.Sdk",
"command" : "extension-manager",
"finish-args" : [
"--share=network",
"--share=ipc",
"--socket=fallback-x11",
"--device=dri",
"--socket=wayland",
"--talk-name=org.gnome.Shell.Extensions",
"--talk-name=org.gnome.SessionManager",
"--env=GDK_PIXBUF_MODULE_FILE=/app/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"
],
"cleanup" : [
"/include",
"/lib/pkgconfig",
"/man",
"/share/doc",
"/share/gtk-doc",
"/share/man",
"/share/pkgconfig",
"*.la",
"*.a"
],
"modules" : [
{
"name" : "webp-pixbuf-loader",
"buildsystem" : "meson",
"config-opts" : [
"-Dgdk_pixbuf_moduledir=/app/lib/gdk-pixbuf-2.0/2.10.0/loaders/"
],
"sources" : [
{
"type" : "git",
"url" : "https://github.com/aruiz/webp-pixbuf-loader.git",
"tag" : "0.2.4"
}
]
},
{
"name" : "update-pixbuf-loaders",
"buildsystem" : "simple",
"build-commands" : [
"GDK_PIXBUF_MODULEDIR=/app/lib/gdk-pixbuf-2.0/2.10.0/loaders/ gdk-pixbuf-query-loaders > /app/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache",
"gdk-pixbuf-query-loaders >> /app/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"
]
},
{
"name" : "blueprint-compiler",
"builddir" : true,
"buildsystem" : "meson",
"cleanup" : [
"*"
],
"sources" : [
{
"type" : "git",
"url" : "https://gitlab.gnome.org/jwestman/blueprint-compiler.git",
"commit" : "2a39a16391122af2f3d812e478c1c1398c98b972",
"tag" : "v0.10.0"
}
]
},
{
"name" : "libbacktrace",
"builddir" : true,
"buildsystem" : "autotools",
"sources" : [
{
"type" : "git",
"url" : "https://github.com/ianlancetaylor/libbacktrace.git",
"commit" : "9ae4f4ae4481b1e69d38ed810980d33103544613"
}
]
},
{
"name" : "text-engine",
"builddir" : true,
"buildsystem" : "meson",
"sources" : [
{
"type" : "git",
"url" : "https://github.com/mjakeman/text-engine.git",
"commit" : "379437b2b589a9414985dec9136b7b48bae76f9e",
"tag" : "v0.1.0"
}
]
},
{
"name" : "extension-manager",
"builddir" : true,
"buildsystem" : "meson",
"build-options" : {
"no-debuginfo" : true
},
"config-opts" : [
"-Ddevelopment=false",
"-Dpackage=Flatpak",
"-Ddistributor=mjakeman",
"-Dofficial=true"
],
"sources" : [
{
"type" : "git",
"url" : "https://github.com/mjakeman/extension-manager",
"commit" : "fce0e326dbddaf6ae17df79c01e553f4b73e3015",
"tag" : "v0.4.3"
}
]
}
]
}
extension-manager-0.5.0/data/ 0000775 0000000 0000000 00000000000 14576313631 0016062 5 ustar 00root root 0000000 0000000 extension-manager-0.5.0/data/com.mattjakeman.ExtensionManager.desktop.in.in 0000664 0000000 0000000 00000000455 14576313631 0027012 0 ustar 00root root 0000000 0000000 [Desktop Entry]
Name=Extension Manager
Exec=extension-manager %U
Icon=@app_id@
Terminal=false
Type=Application
Categories=GTK;Utility
StartupNotify=true
MimeType=x-scheme-handler/gnome-extensions;
Comment=Manage GNOME Shell Extensions
# Translators: Do not translate
Keywords=extension;manager;shell;
extension-manager-0.5.0/data/com.mattjakeman.ExtensionManager.gschema.xml.in 0000664 0000000 0000000 00000002436 14576313631 0027143 0 ustar 00root root 0000000 0000000
A utility for browsing and installing GNOME Shell Extensions.
Features:
The 'Performance & Polish' release
gnome-extensions:// URI schemeThe second feature update to extension-manager. Highlights include:
Fixes a crash that sometimes occurs while uninstalling an extension
The first feature update to extension-manager. Highlights include: