How to set system-wide (for all users) defaults for MATE desktop?

I am just about to migrate from old Ubuntu 10.04, which I was using for many years, to Ubuntu MATE 18.04 (didn't install it yet, until now just playing around with live DVD). I liked very much my old desktop layout from 10.04 and I want a similar layout in the new system.
By trial and error (as I can't find any documentation for this) I created my own desktop theme by combining some files from Radiant-MATE theme, Radiance theme from original Ubuntu and my old theme from 10.04 (which was gtk2 only). Still some applications aren't using that theme (eg. Firefox in no title bar mode uses minimize/maximize/close icons from the original Ambiant-MATE theme, even after I deleted - for testing - this theme from the system (in fact I deleted ALL themes except the one I created), similarly does dconf-editor - I don't understand this), but for now I can live with this. I also changed system fonts (Appearance -> Fonts) and some application settings eg. default color scheme in Pluma and terminal, changed the panel layout to Traditional etc.

The question is - I want to make these changes a new system-wide default, so that they will be applied for any user (including any newly created account) automatically.

After searching the net I dind't find any clear explanation how to do this, so I'm asking here. Assume I have set all desktop and applications details on my account as I need and now want to "promote" these settings to become a system-wide default. How do I do this?

Also - is there any way to change the font and color scheme that slick-greeter uses on the login screen? I set it in dconf-editor to use my desktop theme and a font I chose, but the theme and font is only used for the top-right corner menus: accessibility options and shutdown/reboot/etc. The style of the top panel (colors, icons etc.) as well as the main font used on login screen did not change. Is there any way to change this?

I don't think there's an easy way, but you can change or add system-wide config files. Most of the settings are provided by the ubuntu-mate-default-settings package. You can see a list of files included in this package.

Looks like the most important single file is /usr/share/glib-2.0/schemas/30_ubuntu-mate.gschema.override where most of the gsettings setting are made. Instead of editing that file — since it will get replaced if that package is updated or reinstalled — I think you can make a new file of the same type in that directory. If you start the filename with a higher number, like 35 or 40, it will be read afterwards so it will override the other ones.

1 Like

Thanks, I will try your solution. However, it looks like I have found a simpler method.

  1. After logging in to a fresh account, backup all files from .config directory.
  2. Set everything as needed, then log out from the MATE desktop. Log in in text mode (using Ctrl+Alt+Fn console) and switch to root. Just to be sure, kill the dbus-daemon that is still running for the user.
  3. Compare the contents of the .config directory to the backed up copy and copy all changed files to a new directory. The most important file is .config/dconf/user . In my case, as I also changed a few things in Fcitx configuration and disabled some applications from auto-starting at the beginning of the session (Preferences -> Startup Applications), I needed also to copy a few files from .config/autostart and .config/fcitx directories.
    If changes are also made for other applications, not configured via Dconf (eg. Firefox), we need to copy the needed configuration files for these apps as well (eg. everything related to Firefox is in .mozilla subdirectory).
  4. After preparing the directory with all needed files, copy them to /etc/skel. Also (and that's the tricky part that was hard to figure out) contents of .config subdirectory needs to be copied to /usr/share/ubuntu-mate/settings-overlay/config . If the files are not in both places, they are likely to be ignored when first session is started for a new user!
    There are already some files both in /etc/skel and in /usr/share/ubuntu-mate/settings-overlay/config , we just add our new files there.

If we did everything correctly, then our settings should be "cloned" to any new account that is created.
I only don't know what will happen if anything is updated. However, in my case all files that I added did not exist in these directories previously, so I hope they should not be overwritten.

1 Like

/etc/skel is a skeleton :skull: structure acting as a template for new user's home directories. So, when a new user is created, the configuration are simply copies of that folder. If you change the contents in /etc/skel or /usr/share/ubuntu-mate/settings-overlay/config after the user is created, nothing will change for them.

If consistent, "locked down" defaults are key, perhaps check if it's possible to make the files read-only or put together a system-wide script that runs each time the user logs in. MATE Tweak is capable of setting panel layouts, like so:

mate-tweak --layout ubuntu-mate

I wanted just that - a new default for newly created users, so that they start up with my modified configuration, just as it is with system default when no modifications are made. It can be customized later, I don't need a "locked-down" layout. I just don't want to repeat the modifications I made on all the accounts after I create them.