18

Occassionally I get messages telling me there is an update for one of my GNOME Shell extensions, directing me to https://extensions.gnome.org/local/ where I can trigger an update through the web interface.

I would rather invoke updates from the command line, similar to calling apt update && apt upgrade. How can I do this?

3
  • You could utilise a cron job to extract shell extensions from the /etc/shells file, and run apt-get updates for each value - just one idea. Jul 18, 2017 at 10:34
  • 1
    @ThePizzaOverlord These tend not to be packaged things and when they are, they're often superseded by the versions provided by Gnome directly.
    – Oli
    Sep 19, 2017 at 8:43
  • 1
    See gnome-shell issue #906 for a request to add this feature.
    – Peterino
    Mar 3, 2019 at 16:14

2 Answers 2

16

The comments on this omgubuntu.co.uk article list two possible ways:

  1. The GNOME Shell Extension Installer · Github, a bash script to install and search extensions from extensions.gnome.org. Install it with

    wget -O gnome-shell-extension-installer "https://github.com/brunelli/gnome-shell-extension-installer/raw/master/gnome-shell-extension-installer"
    chmod +x gnome-shell-extension-installer
    sudo mv gnome-shell-extension-installer /usr/bin/
    

Update the extensions 23 and 42 for GNOME Shell 3.18.4 with

    ids=( 23 42 )
    gnome=3.18.4
    gnome-shell-extension-installer ${ids[@]} $gnome --yes --update --restart-shell

Update all extensions with

    gnome-shell-extension-installer --yes --update --restart-shell

I couldn’t test it, but I’m pretty sure it’s scriptable.

  1. If you installed your extensions by cloning their git repos to /path/ you can just git pull the repos one after one:

    for i in /path/*; do
      git -C "$i" pull
    done
    

After that you need to reload GNOME Shell with either Alt+F2 and r or the command gnome-shell -r.

0
0

The gnomeshell-extension-manage script by Nicolas Bernaerts allows to install and remove GNOME Shell extensions both system-wide and in user space.

Here's how you would install it:

wget https://raw.githubusercontent.com/NicolasBernaerts/ubuntu-scripts/master/ubuntugnome/gnomeshell-extension-manage
chmod 755 gnomeshell-extension-manage
sudo mv -iv gnomeshell-extension-manage /usr/local/bin/gnome-shell-extension-manage

This makes it available for every user: (alongside similar GNOME commands)

$ gnome-shell-extension-manage 
Install/remove extension from Gnome Shell Extensions site https://extensions.gnome.org/
Extension ID should be retrieved from https://extensions.gnome.org/extension/<ID>/extension-name/
Version installed will be targeted as the same as Gnome Shell or the next available one
Parameters are :
  --install               Install extension (default)
  --remove                Remove extension
  --user                  Installation/remove in user mode (default)
  --system                Installation/remove in system mode
  --version <version>     Force Gnome version (use 'latest' to force latest one)
  --extension-id <id>     Extension ID in Gnome Shell Extension site (compulsory)

The Gnome Shell - Management of Extensions from console blog post explains in detail how it is used. For updating an extension you need to add --version latest to the command.


The two main differences, technically speaking, to Ian Brunelli's gnome-shell-extension-installer are that you can do system-wide installations and that it's using wget instead of curl to download the extensions.

1
  • If you run gnome-shell-extension-install as sudo, it will install system-wide.
    – eduncan911
    Mar 2, 2020 at 23:22

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .