From a1173bccc2fa7b512d573d77cb0e3b0e61615949 Mon Sep 17 00:00:00 2001 From: Bernhard Landauer Date: Wed, 28 Jun 2017 02:47:21 +0200 Subject: [PATCH] [displaymanager] check for installed lightdm greeter and configure accordingly - no matter if for example slick-greeter is installed as "lightdm-slick-greeter" or whatever. tested with lightdm-deepin-greeter and slick-greeter. - plus some little simplifications - added Copyright https://github.com/calamares/calamares/issues/756 --- src/modules/displaymanager/main.py | 48 +++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/src/modules/displaymanager/main.py b/src/modules/displaymanager/main.py index 006490294..d3d8eca3b 100644 --- a/src/modules/displaymanager/main.py +++ b/src/modules/displaymanager/main.py @@ -3,10 +3,11 @@ # # === This file is part of Calamares - === # -# Copyright 2014-2016, Philip Müller +# Copyright 2014-2017, Philip Müller # Copyright 2014-2015, Teo Mrnjavac # Copyright 2014, Kevin Kofler # Copyright 2017, Alf Gaida +# Copyright 2017, Bernhard Landauer # # Calamares is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -403,6 +404,10 @@ def run(): # setup lightdm if "lightdm" in displaymanagers: if have_dm("lightdm", root_mount_point): + lightdm_conf_path = os.path.join( + root_mount_point, "etc/lightdm/lightdm.conf" + ) + if enable_basic_setup: libcalamares.utils.target_env_call( ['mkdir', '-p', '/run/lightdm'] @@ -440,21 +445,42 @@ def run(): if default_desktop_environment is not None: os.system( "sed -i -e \"s/^.*user-session=.*/user-session={!s}/\" " - "{!s}/etc/lightdm/lightdm.conf".format( + "{!s}".format( default_desktop_environment.desktop_file, - root_mount_point + lightdm_conf_path ) ) - if default_desktop_environment.desktop_file == "deepin": - os.system( - "sed -i -e \"s/^.greeter-session=.*" - "/greeter-session=lightdm-deepin-greeter/\" " - "{!s}/etc/lightdm/lightdm.conf".format( - root_mount_point - ) - ) + # configure lightdm-greeter + greeter_path = os.path.join( + root_mount_point, "usr/share/xgreeters" + ) + if (os.path.exists(greeter_path)): + greeter_configured = False + + # configure first found lightdm-greeter + for entry in os.scandir(greeter_path): + if entry.name.endswith('.desktop') \ + and not greeter_configured: + greeter = entry.name.split('.')[0] + libcalamares.utils.debug( + "found greeter {!s}".format(greeter) + ) + os.system( + "sed -i -e \"s/^.*greeter-session=.*" + "/greeter-session={!s}/\" {!s}".format( + greeter, + lightdm_conf_path + ) + ) + libcalamares.utils.debug( + "{!s} configured as greeter.".format(greeter) + ) + greeter_configured = True + + if not greeter_configured: + return ("No lightdm greeter installed.") else: libcalamares.utils.debug("lightdm selected but not installed") displaymanagers.remove("lightdm")