[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:
parent
383e0e4f25
commit
18392cb216
@ -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")
|
||||
|
Loading…
Reference in New Issue
Block a user