From 01cd95512fe8bcf92cd349d9ce6896b000865cf0 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Wed, 25 Sep 2019 12:41:37 +0200 Subject: [PATCH] [displaymanager] Check the TryExec key from the .desktop file --- src/modules/displaymanager/main.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/modules/displaymanager/main.py b/src/modules/displaymanager/main.py index 4bf9e5771..2e6d05311 100644 --- a/src/modules/displaymanager/main.py +++ b/src/modules/displaymanager/main.py @@ -51,6 +51,30 @@ class DesktopEnvironment: self.executable = exec self.desktop_file = desktop + def find_de_tryexec(self, root_mount_point, command): + if command.startswith("/"): + path = [""] + else: + path = ["/bin/", "/usr/bin/", "/sbin/", "/usr/local/bin/"] + + for p in path: + absolute_path = "{!s}{!s}{!s}".format(root_mount_point, p, command) + if os.path.exists(absolute_path): + return absolute_path + return None + + def find_tryexec(self, root_mount_point, absolute_desktop_file): + assert absolute_desktop_file.startswith(root_mount_point) + with open(absolute_desktop_file, "r") as f: + for tryexec_line in [x for x in f.readlines() if x.startswith("TryExec")]: + try: + key, value = tryexec_line.split("=") + if key.strip() == "TryExec": + return self.find_de_tryexec(root_mount_point, value) + except: + pass + return None + def find_desktop_file(self, root_mount_point): x11_sessions = "{!s}/usr/share/xsessions/{!s}.desktop".format(root_mount_point, self.desktop_file) wayland_sessions = "{!s}/usr/share/wayland-sessions/{!s}.desktop".format(root_mount_point, self.desktop_file)