[displaymanager] Refactor greeter setup

- Only lightdm has support for dynamically configuring the
   greeter based on what is installed. Still, refactory that
   to something general.
This commit is contained in:
Adriaan de Groot 2018-08-20 10:26:59 -04:00
parent 383e0e4f25
commit 18392cb216

View File

@ -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")