diff --git a/src/modules/displaymanager/main.py b/src/modules/displaymanager/main.py index 7fa4be0fd..76884b1b0 100644 --- a/src/modules/displaymanager/main.py +++ b/src/modules/displaymanager/main.py @@ -24,6 +24,7 @@ import os import collections import re import libcalamares +import configparser DesktopEnvironment = collections.namedtuple('DesktopEnvironment', ['executable', 'desktop_file']) @@ -253,34 +254,23 @@ def set_autologin(username, displaymanagers, default_desktop_environment, root_m # Systems with Sddm as Desktop Manager sddm_conf_path = os.path.join(root_mount_point, "etc/sddm.conf") + sddm_config = configparser.ConfigParser() + # Make everything case sensitive + sddm_config.optionxform = str + if os.path.isfile(sddm_conf_path): - libcalamares.utils.debug('SDDM config file exists') - else: - libcalamares.utils.check_target_env_call(["sh", "-c", "sddm --example-config > /etc/sddm.conf"]) + sddm_config.read(sddm_conf_path) - text = [] + if do_autologin: + username_hash = {'User': username} + if sddm_config['Autologin']: + sddm_config['Autologin'].update(username_hash) + else: + sddm_config['Autologin'] = username_hash - with open(sddm_conf_path, 'r') as sddm_conf: - text = sddm_conf.readlines() + with open(sddm_conf_path, 'w') as sddm_config_file: + sddm_config.write(sddm_config_file, space_around_delimiters=False) - with open(sddm_conf_path, 'w') as sddm_conf: - for line in text: - # User= line, possibly commented out - if re.match('\\s*(?:#\\s*)?User=', line): - if do_autologin: - line = 'User={!s}\n'.format(username) - else: - line = '#User=\n' - - # Session= line, commented out or with empty value - if re.match('\\s*#\\s*Session=|\\s*Session=$', line): - if default_desktop_environment is not None: - if do_autologin: - line = 'Session={!s}.desktop\n'.format(default_desktop_environment.desktop_file) - else: - line = '#Session={!s}.desktop\n'.format(default_desktop_environment.desktop_file) - - sddm_conf.write(line) return None