Better LightDM Autologin Support

This change fixes a few issues and adds a few improvements to the LightDM Autologin configuration process:

Fixes:

- Fixes malforming of configuration file out of the box, as without `[SeatDefaults]`, `[Seat:*]` or similar in the configuration file LightDM will break on a lot of distributions using LightDM

- Preserves the intended lightdm.conf file settings outside of `autologin-user` if the distribution has an /etc/lightdm/lightdm.conf file of its own

Misc. changes:

- Small spelling fix
This commit is contained in:
The feren OS Dev 2019-04-15 15:01:08 +01:00 committed by GitHub
parent 189b33a376
commit 3ecd031d9d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -487,31 +487,45 @@ 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
if not '[SeatDefaults]' in text and not '[Seat:*]' in text:
addseat = True
with open(lightdm_conf_path, 'w') as lightdm_conf:
if addseat:
# Append 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
loopcount = 0
for line in text:
if 'autologin-user=' in line:
if do_autologin:
line = "autologin-user={!s}\n".format(username)
else:
line = "#autologin-user=\n"
text[loopcount] = line
loopcount += 1
lightdm_conf.write(line)
lightdm_conf.write("".join(text))
loopcount = 0
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"),