Changing gsettings for GDM user don't persist

If I use GDM and Gnome, the default gsettings make guesses about how to scale the screen. I’m not happy with the results. This is easy to configure for my normal user with gsettings or dconf-editor, but in order to make those same changes for the login screen, I need to set them for the GDM user.

If I do something like sudo -u gdm dconf-editor I can make the changes, but they do not seem to take hold or persist through a reboot. I see the services.xserver.desktopManager.gnome3.extraGSettingsOverrides option, but am not sure if that’s something that might help me solve this problem.

Any help would be greatly appreciated.

As you found out, extraGSettingsOverrides are not passed to a display manager consistently.

As for changing the keys with database editor, GDM does not have a writable home directory, nor does it use user-db in its profile so it has nowhere to persist those changes.

What we want to do instead is to generate a database programmatically with a NixOS module:

https://github.com/NixOS/nixpkgs/issues/54150

Unfortunately it is not implemented yet so some manual fiddling is necessary:

https://github.com/NixOS/nixpkgs/issues/42053#issuecomment-426320671

2 Likes

Thanks, I will try to write a little module based on that example.

I made some progress, but this didn’t end up totally resolving my problem and I’m not clear whether it’s a bug or not. I wrote a module similar to the one in the link which sets the window scaling to 1 (no scaling) and font scaling to 1.5x. The font scaling takes hold, but the window scaling seems to be stuck at auto-detect.

Since one change is working, I know that I’ve gotten things in the right place. I’ve checked my spelling about 6 times in the configuration file, so I don’t think it’s that.

Any further help would be much appreciated.

What do you see in env DCONF_PROFILE=gdm dconf dump /?

I see what appears to be correct:

text-scaling-factor=1.5
scaling-factor=uint32 1

It’s a long shot, but maybe the uint32 shouldn’t be there or is the wrong type? I will try setting it to 1.0 and see if that makes a difference.

edit: Setting it to 1.0 made no difference

It is supposed to be uint32:

Not sure what the problem is.

I appreciate the help. I’ll just deal wit hit (or use SDDM) until that dconf database work gets merged in.

Please open an issue on nixpkgs, I will try to debug it later.