Cannot set Gnome shell user theme from CLI

I am unable to execute this command:

gsettings set org.gnome.shell.extensions.user-theme name "Adwaita"

It prints this error:

Le schéma « org.gnome.shell.extensions.user-theme » n’existe pas

It means the org.gnome.shell.extensions.user-theme schema does not exist.

This is happening since User Themes have moved from user extensions to system extensions.

Should I use another schema?

I found this command working:

dconf write /org/gnome/shell/extensions/user-theme/name "'theme_name'"

I don’t why this was not working with gsettings. :thinking:

We intentionally do not expose GSettings schemas into the environment, just like we do not expose lib/, see GSettings schema of installed software not available to gsettings program or dconf-editor · Issue #33277 · NixOS/nixpkgs · GitHub.

dconf command writes directly to the dconf database without checking schema so it will work but you need to be careful as it will allow you to write a wrong type without any warning.

1 Like

I found this article helpful: Declarative GNOME configuration with NixOS

Especially the dconf watch / trick.

2 Likes

I use home manager to put all these dconf tweaks into my home manager .nix file which works great!

I second dtannock’s mention of dconf watch /
It is very handy for finding what values are changed when changing settings in the ui

I don’t want to use Home Manager. And I need a script to run to update my colours when switching from light to dark and vice versa. So a unique Nix config won’t help me.