LinuxCommandLibrary

gnome-extensions

Manage GNOME Shell extensions

TLDR

List all the installed extensions

$ gnome-extensions list
copy

Display information about a specific extension
$ gnome-extensions info "[extension_id]"
copy

Enable a specific extension
$ gnome-extensions enable "[extension_id]"
copy

Disable a specific extension
$ gnome-extensions disable "[extension_id]"
copy

Uninstall a specific extension
$ gnome-extensions uninstall "[extension_id]"
copy

Display help for a specific subcommand (like list)
$ gnome-extensions help [subcommand]
copy

Display version
$ gnome-extensions version
copy

SYNOPSIS

gnome-extensions COMMAND [ARGS…]

PARAMETERS

app [DIRECTORY]
    Launch Extensions app or install DIRECTORY as user extension.

create ZIPFILE [--template TEMPLATE]
    Create a new extension ZIP from template.

disable UUID [--user|--system]
    Disable extension by UUID.

enable UUID [--user|--system]
    Enable extension by UUID.

info UUID
    Show detailed info about extension.

install UUID.zip [--user|--system]
    Install extension from ZIP file.

list [--enabled|--installed] [SHELL_VERSION]
    List enabled or installed extensions.

prefs UUID
    Launch preferences dialog for extension.

refresh
    Reload extensions after shell restart.

reset UUID [--user|--system]
    Reset extension to default settings.

show UUID [--user|--system]
    Print extension metadata.

uninstall UUID [--user|--system]
    Uninstall extension by UUID.

DESCRIPTION

The gnome-extensions command is a powerful command-line interface for managing extensions in the GNOME Shell desktop environment.

GNOME extensions add custom functionality to the shell, such as new applets, themes, workflows, or accessibility features, often sourced from extensions.gnome.org. This tool enables users to list, install, enable, disable, reset, and configure extensions without the graphical Extensions app.

It supports both user-specific (--user) and system-wide (--system) installations, making it ideal for automation, scripting, remote servers, or headless GNOME setups. Commands interact with the shell's extension directory (~/.local/share/gnome-shell/extensions or /usr/share/gnome-shell/extensions) and require a D-Bus session bus for most operations.

Key benefits include batch operations, integration with package managers, and compatibility checks against the current shell version. It's essential for developers testing extensions or sysadmins deploying customized GNOME environments.

CAVEATS

Most commands require a running GNOME Shell session and D-Bus; fails on Wayland without session bus. User installs need write perms to ~/.local/share/gnome-shell. Shell must be restarted (Alt+F2 r Enter) for changes outside refresh. Not all extensions support --system.

COMMON WORKFLOW

Download ZIP from extensions.gnome.org, then gnome-extensions install extension.zip && gnome-extensions enable extension@uuid. Use list --enabled to verify.

DEVELOPER USE

gnome-extensions create myext.zip --template classic to scaffold; test with enable and prefs.

HISTORY

Introduced in GNOME 3.36 (2020) as replacement for deprecated gnome-shell-extension-tool. Matured in GNOME 40+ with subcommand unification and D-Bus integration. Tracks GNOME Shell releases for compatibility.

SEE ALSO

gnome-shell(1), gnome-tweaks(1), dconf(1)

Copied to clipboard