From: Adriaan de Groot Date: Tue, 10 Mar 2026 14:49:55 +0100 Subject: [displaymanager] Support alternative greeter paths in lightdm Origin: upstream 3.4.2 --- src/modules/displaymanager/main.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/modules/displaymanager/main.py b/src/modules/displaymanager/main.py index 73a884df7..143b0db15 100644 --- a/src/modules/displaymanager/main.py +++ b/src/modules/displaymanager/main.py @@ -664,16 +664,20 @@ class DMlightdm(DisplayManager): a .desktop file that specifies where the actual executable is. May return None to indicate nothing-was-found. """ - greeters_dir = "usr/share/xgreeters" - greeters_target_path = os.path.join(self.root_mount_point, greeters_dir) - available_names = os.listdir(greeters_target_path) - available_names.sort() - desktop_names = [n for n in self.preferred_greeters if n in available_names] # Preferred ones - if desktop_names: - return desktop_names[0] - desktop_names = [n for n in available_names if n.endswith(".desktop")] # .. otherwise any .desktop - if desktop_names: - return desktop_names[0] + for greeters_dir in ( "usr/share/xgreeters", "usr/share/lightdm/greeters", ): + greeters_target_path = os.path.join(self.root_mount_point, greeters_dir) + available_names = [] + try: + available_names = os.listdir(greeters_target_path) + except FileNotFoundError: + continue + available_names.sort() + desktop_names = [n for n in self.preferred_greeters if n in available_names] # Preferred ones + if desktop_names: + return desktop_names[0] + desktop_names = [n for n in available_names if n.endswith(".desktop")] # .. otherwise any .desktop + if desktop_names: + return desktop_names[0] return None def greeter_setup(self):