Skip to content

oae/gnome-shell-extensions-sync

Repository files navigation

Extensions Sync

ts opensource licence latest compare

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

Provider Synced Data Other Settings

Installation

From Git

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.

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

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

      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.