12

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?

  • 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. – The Pizza Overlord Jul 18 '17 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 '17 at 8:43
  • See gnome-shell issue #906 for a request to add this feature. – Peterino Mar 3 at 16:14
9

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.

  2. 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

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.