From a293daf12e4fa274885d2f575e20398b4cde3d2d Mon Sep 17 00:00:00 2001 From: "Alexandria P." Date: Wed, 12 Jun 2024 11:46:29 -0600 Subject: [PATCH 1/7] easier debugging for session logic --- pkgs/jovian-greeter/greeter.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/jovian-greeter/greeter.py b/pkgs/jovian-greeter/greeter.py index b0b12251..1783a36f 100644 --- a/pkgs/jovian-greeter/greeter.py +++ b/pkgs/jovian-greeter/greeter.py @@ -137,6 +137,7 @@ def _consume_session(self) -> Optional[str]: helper = HELPER_PREFIX.joinpath('consume-session') if helper.exists(): logging.debug('Using pkexec helper') + logging.debug('Helper path: {}'.format(helper)) res = subprocess.run( ['/run/wrappers/bin/pkexec', helper, self.user], stdin=subprocess.DEVNULL, @@ -145,6 +146,7 @@ def _consume_session(self) -> Optional[str]: env={'SHELL': '/bin/sh'} ) next_session = res.stdout.decode('utf-8').strip() + logging.debug('STDERR: {}'.format(res.stderr.decode('utf-8').strip())) if not next_session: return None From f7274a5eb9717a8622a96a849394d17e2cebda56 Mon Sep 17 00:00:00 2001 From: "Alexandria P." Date: Wed, 12 Jun 2024 12:31:24 -0600 Subject: [PATCH 2/7] still cant tell whats wrong --- pkgs/jovian-greeter/greeter.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/jovian-greeter/greeter.py b/pkgs/jovian-greeter/greeter.py index 1783a36f..55e73b20 100644 --- a/pkgs/jovian-greeter/greeter.py +++ b/pkgs/jovian-greeter/greeter.py @@ -127,6 +127,7 @@ def __init__(self, user: str, home: Path): def next_session(self) -> Optional[Session]: sessions = [ DEFAULT_SESSION ] + logging.debug("Sessions: {}".format(sessions)) if next_session := self._consume_session(): sessions = [ next_session ] + sessions @@ -171,6 +172,7 @@ def _find_sessions(self, sessions: Iterable[str]) -> Optional[Session]: for data_dir in self.xdg_data_dirs + [ '/usr/share' ]: data_dir = Path(data_dir) for session in sessions: + logging.debug("Examining session: {}".format(session)) desktop_file = f'{session}.desktop' wayland_session = data_dir.joinpath('wayland-sessions').joinpath(desktop_file) x_session = data_dir.joinpath('xsessions').joinpath(desktop_file) From a8cbe014f63872ee5a5e5307c2201772058448b6 Mon Sep 17 00:00:00 2001 From: "Alexandria P." Date: Wed, 12 Jun 2024 12:38:52 -0600 Subject: [PATCH 3/7] maybe this? --- pkgs/jovian-greeter/greeter.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/jovian-greeter/greeter.py b/pkgs/jovian-greeter/greeter.py index 55e73b20..3b74b251 100644 --- a/pkgs/jovian-greeter/greeter.py +++ b/pkgs/jovian-greeter/greeter.py @@ -147,7 +147,10 @@ def _consume_session(self) -> Optional[str]: env={'SHELL': '/bin/sh'} ) next_session = res.stdout.decode('utf-8').strip() - logging.debug('STDERR: {}'.format(res.stderr.decode('utf-8').strip())) + stderr = res.stderr.decode('utf-8').strip() + if stderr == "": + stderr = "" + logging.debug('STDERR: {}'.format(stderr)) if not next_session: return None @@ -177,9 +180,11 @@ def _find_sessions(self, sessions: Iterable[str]) -> Optional[Session]: wayland_session = data_dir.joinpath('wayland-sessions').joinpath(desktop_file) x_session = data_dir.joinpath('xsessions').joinpath(desktop_file) + logging.debug("Checking wayland session path: {}".format(wayland_session)) if wayland_session.exists(): return WaylandSession(session, wayland_session) + logging.debug("Checking X session path: {}".format(x_session)) if x_session.exists(): return XSession(session, x_session) From e2000424e88fef930573486678749aa2b436bc7d Mon Sep 17 00:00:00 2001 From: "Alexandria P." Date: Wed, 12 Jun 2024 12:48:29 -0600 Subject: [PATCH 4/7] take a crack at fixing the bug --- pkgs/jovian-greeter/greeter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/jovian-greeter/greeter.py b/pkgs/jovian-greeter/greeter.py index 3b74b251..bb57efbc 100644 --- a/pkgs/jovian-greeter/greeter.py +++ b/pkgs/jovian-greeter/greeter.py @@ -172,7 +172,7 @@ def _consume_session(self) -> Optional[str]: return next_session def _find_sessions(self, sessions: Iterable[str]) -> Optional[Session]: - for data_dir in self.xdg_data_dirs + [ '/usr/share' ]: + for data_dir in self.xdg_data_dirs + [ '/usr/share', '/run/current-system/sw/share/xsessions/' ]: data_dir = Path(data_dir) for session in sessions: logging.debug("Examining session: {}".format(session)) From 57c2ed46153168428939d7630081fc354c2d643b Mon Sep 17 00:00:00 2001 From: "Alexandria P." Date: Wed, 12 Jun 2024 12:49:22 -0600 Subject: [PATCH 5/7] capitalize Wayland --- pkgs/jovian-greeter/greeter.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/jovian-greeter/greeter.py b/pkgs/jovian-greeter/greeter.py index bb57efbc..65c63688 100644 --- a/pkgs/jovian-greeter/greeter.py +++ b/pkgs/jovian-greeter/greeter.py @@ -172,7 +172,7 @@ def _consume_session(self) -> Optional[str]: return next_session def _find_sessions(self, sessions: Iterable[str]) -> Optional[Session]: - for data_dir in self.xdg_data_dirs + [ '/usr/share', '/run/current-system/sw/share/xsessions/' ]: + for data_dir in self.xdg_data_dirs + [ '/usr/share', '/run/current-system/sw/share' ]: data_dir = Path(data_dir) for session in sessions: logging.debug("Examining session: {}".format(session)) @@ -180,7 +180,7 @@ def _find_sessions(self, sessions: Iterable[str]) -> Optional[Session]: wayland_session = data_dir.joinpath('wayland-sessions').joinpath(desktop_file) x_session = data_dir.joinpath('xsessions').joinpath(desktop_file) - logging.debug("Checking wayland session path: {}".format(wayland_session)) + logging.debug("Checking Wayland session path: {}".format(wayland_session)) if wayland_session.exists(): return WaylandSession(session, wayland_session) From 200752673ca98ec40cdeec280bf2096a4ea9dc39 Mon Sep 17 00:00:00 2001 From: "Alexandria P." Date: Wed, 12 Jun 2024 13:18:26 -0600 Subject: [PATCH 6/7] log XDG_DATA_DIRS --- pkgs/jovian-greeter/greeter.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/jovian-greeter/greeter.py b/pkgs/jovian-greeter/greeter.py index 65c63688..d29d732e 100644 --- a/pkgs/jovian-greeter/greeter.py +++ b/pkgs/jovian-greeter/greeter.py @@ -124,6 +124,7 @@ def __init__(self, user: str, home: Path): self.user = user self.home = home self.xdg_data_dirs = os.environ.get('XDG_DATA_DIRS', '').split(':') + logging.debug("XDG_DATA_DIRS: {}".format(self.xdg_data_dirs)) def next_session(self) -> Optional[Session]: sessions = [ DEFAULT_SESSION ] From 2e1cca9d0f4b5ba26e38eca125b4ea8cbe357a24 Mon Sep 17 00:00:00 2001 From: "Alexandria P." Date: Wed, 12 Jun 2024 13:47:20 -0600 Subject: [PATCH 7/7] even more logging --- pkgs/jovian-greeter/greeter.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/jovian-greeter/greeter.py b/pkgs/jovian-greeter/greeter.py index d29d732e..6fbe8f94 100644 --- a/pkgs/jovian-greeter/greeter.py +++ b/pkgs/jovian-greeter/greeter.py @@ -87,6 +87,9 @@ def create_session(self, username: str): def start_session(self, command: List[str], environment: List[str]): try: subprocess.check_call(["plymouth", "quit", "--retain-splash", "--wait"]) + except FileNotFoundError: + logging.debug("Failed to stop Plymouth: could not find executable") + logging.debug("If you are not using Plymouth, this failure is benign and expected") except Exception as ex: logging.debug("Failed to stop Plymouth", exc_info=ex) @@ -122,7 +125,9 @@ def _recv(self) -> Mapping[str, Any]: class Context: def __init__(self, user: str, home: Path): self.user = user + logging.debug("USER: {}".format(self.user)) self.home = home + logging.debug("HOME: {}".format(self.home)) self.xdg_data_dirs = os.environ.get('XDG_DATA_DIRS', '').split(':') logging.debug("XDG_DATA_DIRS: {}".format(self.xdg_data_dirs)) @@ -151,7 +156,7 @@ def _consume_session(self) -> Optional[str]: stderr = res.stderr.decode('utf-8').strip() if stderr == "": stderr = "" - logging.debug('STDERR: {}'.format(stderr)) + logging.debug('STDERR for `consume-session`: {}'.format(stderr)) if not next_session: return None