GitPedia

Gnome shell extensions sync

Syncs gnome shell keybindings, tweaks settings and extensions with their configuration across all gnome installations

From oae·Updated April 8, 2026·View on GitHub·
·Archived

Syncs gnome shell keybindings, tweaks settings and extensions with their configuration across all gnome installations The project is written primarily in TypeScript, distributed under the GNU General Public License v2.0 license, first published in 2018. Key topics include: extensions-sync, gist, gitlab, gjs, gnome.

Latest release: v19
June 16, 2023View Changelog →

Extensions Sync

ts
opensource
licence
latest
compare

Syncs gnome shell keybindings, tweaks settings and extensions with their configuration across all gnome installations

ProviderSynced DataOther Settings

Installation

From Git

bash
git clone https://github.com/oae/gnome-shell-extensions-sync.git cd ./gnome-shell-extensions-sync yarn install yarn build ln -s "$PWD/dist" "$HOME/.local/share/gnome-shell/extensions/extensions-sync@elhan.io"

From Ego

You can install it from here

Usage

  • You can select the data types that are going to be saved in the settings.

For Github

  1. Create a new gist from here I suggest you make it secret. You will need the gist id for this. You can find it in the url after username. For example on gist url https://gist.github.com/username/f545156c0083f7eaefa44ab69df4ec37, gist id will be f545156c0083f7eaefa44ab69df4ec37. Guide
  2. Create a new token from here. Only gist permission is needed since we edit the gists. Guide
  3. Open extension settings, select the Github provider and fill gist id from first step and user token from second step.

For Gitlab

  1. Create a new snippet from here I suggest you make it private. You will need the snippet id for this. You can find it in the url. For example on snippet url https://gitlab.com/-/snippets/324234234, snippet id will be 324234234. Guide
  2. Create a new token from here. Only api scope is needed. Guide
  3. Open extension settings, select the Gitlab provider and fill snippet id from first step and user token from second step.

For Local

  1. Select a file that has read/write permission by your active user. (default backup file is in ~/.config/extensions-sync.json)

Cli Usage

You can trigger upload download operations using busctl.

sh
busctl --user call org.gnome.Shell /io/elhan/ExtensionsSync io.elhan.ExtensionsSync save # uploads to server busctl --user call org.gnome.Shell /io/elhan/ExtensionsSync io.elhan.ExtensionsSync read # downloads to pc

Development

  • This extension is written in Typescript and uses rollup to compile it into javascript.

  • To start development, you need nodejs installed on your system;

    • Clone the project

      sh
      git clone https://github.com/oae/gnome-shell-extensions-sync.git cd ./gnome-shell-extensions-sync
    • Install dependencies and build it

      sh
      yarn install yarn build ln -s "$PWD/dist" "$HOME/.local/share/gnome-shell/extensions/extensions-sync@elhan.io"
    • During development you can use yarn watch command to keep generated code up-to-date.

Contributors

Showing top 5 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from oae/gnome-shell-extensions-sync via the GitHub API.Last fetched: 6/24/2026