diff --git a/CHANGES b/CHANGES index 350761d77..2ac33261c 100644 --- a/CHANGES +++ b/CHANGES @@ -16,6 +16,7 @@ This release contains contributions from (alphabetically by first name): This release contains contributions from (alphabetically by first name): - Arnaud Ferraris + - Dominic Hayes (feren) ## Core ## @@ -25,6 +26,8 @@ This release contains contributions from (alphabetically by first name): ## Modules ## * All of the Python-based modules now have translations enabled. + * *Displaymanager* module has improved support for LightDM configuration. + (Thanks to Dominic, FerenOS) * *Partition* module has additional checks for validity partition layouts. (Thanks to Arnaud) * *Welcome* module has improved usability: a standard icon diff --git a/src/modules/displaymanager/main.py b/src/modules/displaymanager/main.py index 4413aefbb..639edbea7 100644 --- a/src/modules/displaymanager/main.py +++ b/src/modules/displaymanager/main.py @@ -3,6 +3,7 @@ # # === This file is part of Calamares - === # +# Copyright 2019 Dominic Hayes # Copyright 2014-2018, Philip Müller # Copyright 2014-2015, Teo Mrnjavac # Copyright 2014, Kevin Kofler @@ -487,12 +488,21 @@ class DMlightdm(DisplayManager): self.root_mount_point, "etc/lightdm/lightdm.conf" ) text = [] + addseat = False + loopcount = 0 if os.path.exists(lightdm_conf_path): with open(lightdm_conf_path, 'r') as lightdm_conf: text = lightdm_conf.readlines() + # Check to make sure [SeatDefaults] or [Seat:*] is in the config, + # otherwise we'll risk malforming the config + addseat = '[SeatDefaults]' not in text and '[Seat:*]' not in text with open(lightdm_conf_path, 'w') as lightdm_conf: + if addseat: + # Prepend Seat line to start of file rather than leaving it without one + # This keeps the config from being malformed for LightDM + text = ["[Seat:*]\n"] + text for line in text: if 'autologin-user=' in line: if do_autologin: @@ -504,14 +514,14 @@ class DMlightdm(DisplayManager): else: try: # Create a new lightdm.conf file; this is documented to be - # read last, after aeverything in lightdm.conf.d/ + # read last, after everything in lightdm.conf.d/ with open(lightdm_conf_path, 'w') as lightdm_conf: if do_autologin: lightdm_conf.write( - "autologin-user={!s}\n".format(username)) + "[Seat:*]\nautologin-user={!s}\n".format(username)) else: lightdm_conf.write( - "#autologin-user=\n") + "[Seat:*]\n#autologin-user=\n") except FileNotFoundError: return ( _("Cannot write LightDM configuration file"),