This role works for me, but does not satisfy the potos acceptance rules yet:
- the automated checks are currently failing
- meta is not up to date
dconf is the official way to manage
gnome user and system settings and override gnome or distribution specific settings.
By default, gnome interprets all dconf settings as defaults that can be overriden by the user.
Such user specific settings are stored in ~/.config/dconf.
It is possible to lock down settings, so users cannot change them any more.
Be aware that the following commands can return different values depending on the user session you are logged in right now.
dconf dump /lists all settings that are explicitly set somewhere. Default values are not shown.gsettings list-recursivelylists really all variables currently known and their values. Use this to search for a certain setting, translate it back todconfformat and then implement it here.
As this role is tested via Molecule one can use that playbook as a starting point:
---
- name: Converge
hosts: all
gather_facts: yes
tasks:
- name: run role
ansible.builtin.include_role:
name: 'ansible-role-potos_dconf'There are two ways to use this role to configure system wide dconf default settings.
-
by setting
potos_dconf_20_advanced_wm_settingsto true. This activates a preconfigured set ofdconfoptions. Look at the file20_advanced_wm_settings.j2to see what is actually configured. Most likely you don't like my very personal settings. In this case, you could expand this role an adding another template/variable. -
and/or setting
potos_dconf_30_gnome_terminal_profilesto true. This activates another set ofdconf' options: Threegnome-terminal` profiles are defined:potos-bright: black on off-white, default profilepotos-dark: white on blackpotos-green-dark: green on black
-
and/or use the
potos_dconf_customlist variable to configure arbitrary settings. This can be used as starting point for implementing your own preconfigured set.
You can use both ways in the same config, but: WARNING When the same dconf setting
is set multiple times, it is currently undefined what entry will win.
Each element of the potos_dconf_custom variable must contain
- a
dconf_pathvalue - a
settingslist that contains one or more dicts for the settings in that path, each dict containing - the
nameof the setting - the typed value of the setting, i.e. exactly one of
value_bool: true or falsevalue_uint32: an positive ntegervalue_string: a stringvalue_list_of_strings: a list of strings
This can look like this:
---
potos_dconf_custom:
- dconf_path: "org/gnome/desktop/interface"
settings:
- name: "clock-show-seconds"
value_bool: true
- dconf_path: "org/gnome/desktop/session"
settings:
- name: "idle-delay"
value_uint32: "120"
- dconf_path: "org/gnome/shell"
settings:
- name: "favorite-apps"
value_list_of_strings:
- "amsel-menu.desktop"
- "Local.desktop"
- "Internet.desktop"There is no checking on the values whatsoever. You have to know what you do and test each setting carefully.
The default variables are defined in defaults/main.yml:
---
potos_dconf_20_advanced_wm_settings: false
potos_dconf_30_gnome_terminal_profiles: false
potos_dconf_custom:
- dconf_path: "org/gnome/shell"
settings:
- name: "favorite-apps"
value_list_of_strings:
- "org.gnome.Nautilus.desktop"
- "libreoffice-writer.desktop"
- "snap-store_ubuntu-software.desktop"
- "yelp.desktop"Another option is to use ansible-doc to read the argument specification:
ansible-doc --type role -r . main ansible-role-potos_dconfN/A
See LICENSE