GNOME Shell Extensions
GNOME Extensions are very popular

If you love using GNOME Shell extensions on your desktop, but don’t love having to manually re-install them when you switch machine, this post is for you.

Why?

Because the GNOME integration extension for Google Chrome (and Chromium) already lets you do it!

Yup, the exact same add-on you have to install in Chrome to install GNOME extensions in the first place hides a built-in sync feature.

When enabled it lets you sync GNOME extensions from, say, your Ubuntu desktop machine to, say, a VM instance running Fedora, almost automatically.

Sync GNOME Extensions (The Easy Way)

To sync GNOME extensions between machines you (rather obviously) need to be using GNOME Shell and have GNOME extensions installed on your system to start with.

The sync feature only works with the Chrome/ium extensions AND with account sync enabled (you need to sign in to the same account on machines you wish to sync to/from).

You can install the Chrome extension directly from the Chrome Web Store:

GNOME Shell Integration Chrome/ium Extension

And you can get the host connector, aka the glue in this syncing sandwich, from Ubuntu Software:

Install the chrome-gnome-shell connector from Ubuntu Software

Step 1: Sync Your Extensions

You should set up sync on the Linux device which has all the GNOME Shell extensions you want to transfer to another computer.

To do this just open Google Chrome (or Chromium) and sign in to Chrome with your Google account:

Next, right-click on the GNOME logo in the toolbar (or in the main menu, if it’s t

Select ‘Options’.

A new tab will open and you’ll see this dialog:

gnome-shell-extension-options

Check the radio item next to “Synchronize GNOME Shell extensions list” so that the ‘Yes‘ has a dark dot in the centre.

Click ‘Save‘.

Check the status of your synchronized extensions by clicking the ‘Synchronization‘ link in the options window:

gnome-shell-extension-sync

This screen shows you which extensions are synced, which are installed, and which are enabled. You can use it to troubleshoot.

And that’s all there is to the first part. Next comes the exciting bit: installing your synced extension on a different desktop.

Step 2: Install Your Synced Extensions

Make sure to install the host connector package and the chrome gnome shell extension.

Then sign in to Chrome with the Google account you previously used to sync your GNOME extensions to.

Next, as before, right-click on the GNOME Shell Integration extension and select ‘Options’:

As soon as you okay the sync you’ll see this prompt:

Keep calm and select the middle option to install your synced list of extensions locally (it doesn’t matter if you already have some extensions; this option will only install the ones you synced).

Once you agree to overwrite the local list with the remote list you will see a series of install alerts appear so that the synchronised extensions you don’t have installed can be installed:

Install these as they appear and, once done, all your extensions should be synced, installed, and enabled (or disabled) as per your original config.

Notes

A few things to note about this feature as it currently exists.

While it can sync a list of extensions between desktops (as well whether they should be enabled or disabled) but it does not sync individual extension settings.

So, for example, if you have a custom Dash to Dock set-up Desktop A, Dash to Dock on Desktop B will not appear the same; it will be stock, using default settings.

If you uninstall an extension and want to delete it from the sync list you will need to disable syncing via the options dialog, then re-enable it, opting for “Use local extensions list overwrite remote”. The next time the extension syncs the extension will disabled and uninstalled from your other machines.

The same routine will apply when you install a new extension that you want to add to the sync roster.

GNOME Extensions gnomeshell Google Chrome sync