Configure gnome-shell extensions from command line

16,397

Solution 1

Found the answer by myself in the end.

sudo cp ~/.local/share/gnome-shell/extensions/extname/schemas/org.gnome.shell.extensions.extname.gschema.xml \
    /usr/share/glib-2.0/schemas/ &&
sudo glib-compile-schemas /usr/share/glib-2.0/schemas/

Copy and compile the schemas in ~/.local/share/gnome-shell/extensions and gsettings will be able to work with them.

Solution 2

In CentOS 7 - and I would think in Ubuntu also - I've identified what I think is a slight improvement on the accepted answer by introducing the --schemadir switch as follows:

# gsettings --schemadir ${schemaDir} set ${schema} ${key} "${value}"

In the above command gsettings directly sets ${key} to ${value} in ${schema} where ${schema} does not reside in the default /usr/share/glib-2.0/schemas directory. (and there is no requirement to move the schema to the default directory)

Some examples:

gsettings --schemadir ~/.local/share/gnome-shell/extensions/[email protected]/schemas/ list-recursively org.gnome.shell.extensions.org-lab21-putwindow
gsettings --schemadir ~/.local/share/gnome-shell/extensions/[email protected]/schemas/  list-recursively org.gnome.shell.extensions.app-keys
gsettings --schemadir ~/.local/share/gnome-shell/extensions/[email protected]/schemas/  list-recursively org.gnome.shell.extensions.emoji-selector

Solution 3

I've written this script: Bash script to enable/disable gnome-shell-extensions and more.

Just cp it in /usr/bin or /usr/local/bin and make it executable:

sudo chmod +x /usr/bin/gnome-shell-extension-cl

Check the help.

Enable extension:

gnome-shell-extension-cl -e extension-name

Disable extension:

gnome-shell-extension-cl -d extension-name
Share:
16,397

Related videos on Youtube

albhilazo
Author by

albhilazo

Updated on September 18, 2022

Comments

  • albhilazo
    albhilazo over 1 year

    I like to run a couple of scripts to automatically install packages and do some configurations on fresh OS installs. I use gnome shell with a few extensions and was thinking of improving my scripts to configure them.

    I usually configure the extensions using gnome-shell-extension-prefs or dconf-editor and I know how to edit other schemas from the command line. Example:

    gsettings set org.gnome.desktop.background picture-options stretched
    

    But, although I can find and edit the installed extensions under org.gnome.shell.extensions using dconf-editor I can't access them using gsettings since they don't seem to have an assigned schema:

    No such schema 'org.gnome.shell.extensions.extname'
    

    The only extensions accessible with gsettings seem to be the ones that came pre-installed.

    So, the question is, how can I configure the installed extensions from the command line? Is there any way to assign to gsettings the compiled schemas in ~/.local/share/gnome-shell/extensions/ ? Maybe I'm looking in the wrong direction.

    Environment: Ubuntu Gnome 14.04 (Gnome Shell 3.10.4)

    Thanks in advance.

  • Pancho
    Pancho about 6 years
    nice bit of digging!
  • eddygeek
    eddygeek over 5 years
    onfirmed working on Ubuntu 18.04, GS 3.28. As an example: gsettings --schemadir ~/.local/share/gnome-shell/extensions/[email protected]‌​1.org/schemas/ list-recursively org.gnome.shell.extensions.org-lab21-putwindow
  • engineer
    engineer about 4 years
    Just ran into the same bug. There must be a better solution than copying schemas of extensions that are installed locally to the global directory. Any updates to this issue?
  • thorstorm
    thorstorm almost 4 years
    Would be good if the script had a toggle option. That is, enable is extension is disabled and disable if it is enabled.
  • 谈 θΆ…
    谈 θΆ… over 3 years
    Works on Ubuntu 20.04 as well gsettings --schemadir ~/.local/share/gnome-shell/extensions/user-theme@gnome-shell‌​-extensions.gcampax.‌​github.com/schemas set org.gnome.shell.extensions.user-theme name "Arc"
  • Hiran Chaudhuri
    Hiran Chaudhuri over 2 years
    I installed the extension globally into /usr/share/gnome-shell/extensions - yet the schemas have to be copied.
  • Hiran Chaudhuri
    Hiran Chaudhuri over 2 years
    setting just schemadir revealed an error message that the extension (which was detected) is not installed properly - Ubuntu 20 LTS