diff --git a/src/modules/displaymanager/main.py b/src/modules/displaymanager/main.py index 3ff9dd350..942a7d470 100644 --- a/src/modules/displaymanager/main.py +++ b/src/modules/displaymanager/main.py @@ -129,6 +129,14 @@ class DisplayManager(metaclass=abc.ABCMeta): """ # Many implementations do nothing + @abc.abstractmethod + def greeter_setup(self): + """ + Additional setup for the greeter. + """ + # Most implementations do nothing + + class DMmdm(DisplayManager): name = "mdm" executable = "mdm" @@ -514,6 +522,38 @@ class DMlightdm(DisplayManager): ) ) + def greeter_setup(self): + lightdm_conf_path = os.path.join( + root_mount_point, "etc/lightdm/lightdm.conf" + ) + + # configure lightdm-greeter + greeter_path = os.path.join( + root_mount_point, "usr/share/xgreeters" + ) + + if (os.path.exists(greeter_path)): + # configure first found lightdm-greeter + for entry in os.listdir(greeter_path): + if entry.endswith('.desktop'): + greeter = entry.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) + ) + break + else: + return ("No lightdm greeter installed.") + class DMslim(DisplayManager): name = "slim" @@ -711,36 +751,7 @@ 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" - ) - - # configure lightdm-greeter - greeter_path = os.path.join( - root_mount_point, "usr/share/xgreeters" - ) - - if (os.path.exists(greeter_path)): - # configure first found lightdm-greeter - for entry in os.listdir(greeter_path): - if entry.endswith('.desktop'): - greeter = entry.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) - ) - break - else: - return ("No lightdm greeter installed.") + pass else: libcalamares.utils.debug("lightdm selected but not installed") displaymanagers.remove("lightdm")