I decided to make a simple script to backup and restore all my user extensions by their IDs. This script will not backup source code or a config files, just create a list of installed user extensions.
Features
- Save – Backs up all user-installed extension IDs to a file
- List – Shows all currently installed user extensions with their status (active/inactive)
- Install – Automatically downloads and installs extensions from backup file
- Version compatibility check – Verifies each extension supports your GNOME Shell version before installation
- Smart filtering – Automatically excludes system extensions (from
/usr/share) - Flexible paths – Save backups to custom locations or use the default location
- Progress tracking – Shows installation progress with success/failure counts
Requirements
- GNOME Shell with
gnome-extensionscommand curl(for downloading extensions)- Internet connection (for installing extensions)
Usage
Save Your Extensions
Save all currently installed user extensions to the default backup file:
./gnome-extensions-backup.sh save
Save to a custom file in the script directory:
./gnome-extensions-backup.sh save my-extensions.txt
Save to an absolute path:
./gnome-extensions-backup.sh save /tmp/backup.txt
List Installed Extensions
Show all currently installed user extensions with their status:
./gnome-extensions-backup.sh list
Install Extensions from Backup
Install all extensions from the default backup file:
./gnome-extensions-backup.sh install
Install from a custom backup file:
./gnome-extensions-backup.sh install my-extensions.txt
Get Help
./gnome-extensions-backup.sh help
How It Works
- Saving: The script uses
gnome-extensions listto get all installed extensions, filters out system extensions (located in/usr/share), and saves the remaining user extension IDs to a text file. - Installing:
- Detects your current GNOME Shell version
- Reads extension IDs from the backup file
- For each extension, checks if it’s compatible with your GNOME Shell version
- If compatible, downloads the extension zip file from extensions.gnome.org
- Installs it using
gnome-extensions install - If incompatible, shows which GNOME Shell versions are supported
- Smart handling: Already installed extensions are skipped. Failed installations don’t stop the process – the script continues with remaining extensions and provides a summary at the end.
Default Backup Location
By default, backups are saved to:
<script-directory>/gnome-extensions-backup.txt
Notes
- System extensions (pre-installed with GNOME) are automatically excluded from backups
- After installing extensions, you may need to:
- Restart GNOME Shell: Press
Alt+F2, typer, press Enter (X11 only) - Or log out and log back in (Wayland)
- Restart GNOME Shell: Press
- The script automatically detects your GNOME Shell version and installs compatible extension versions
- Extensions that fail to install won’t stop the script – it will continue with the remaining extensions
Source code is here