Last active
November 17, 2025 01:43
-
-
Save nightuser/2ec1b91a66ec33ef0a0a67b6c570eb40 to your computer and use it in GitHub Desktop.
Use existing Xorg session for chrome-remote-desktop
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Add an option to use the existing Xorg session with | |
| chrome-remote-desktop. | |
| The original idea of the patch: https://superuser.com/a/850359 | |
| --- a/chrome-remote-desktop 2024-03-27 16:03:20.518579015 +0000 | |
| +++ b/chrome-remote-desktop 2024-03-27 16:17:58.241912847 +0000 | |
| @@ -110,6 +110,8 @@ | |
| X_LOCK_FILE_TEMPLATE = "/tmp/.X%d-lock" | |
| FIRST_X_DISPLAY_NUMBER = 20 | |
| +EXISTING_X_DISPLAY_FILE_PATH = os.path.join(CONFIG_DIR, "Xsession") | |
| +X_SESSION_FILE_TEMPLATE = "/tmp/.X11-unix/X%d" | |
| # Amount of time to wait between relaunching processes. | |
| SHORT_BACKOFF_TIME = 5 | |
| @@ -738,16 +740,33 @@ | |
| return True | |
| return False | |
| + def _use_existing_session(self): | |
| + with open(EXISTING_X_DISPLAY_FILE_PATH) as fh: | |
| + try: | |
| + display_raw = fh.readline().rstrip() | |
| + display = int(display_raw) | |
| + except ValueError: | |
| + logging.error("Display must be a number; got: '%s'" % display_raw) | |
| + sys.exit(1) | |
| + if not os.path.exists(X_SESSION_FILE_TEMPLATE % display): | |
| + logging.error("Xorg session file doesn't exist") | |
| + sys.exit(1) | |
| + logging.info("Using existing Xorg session: %d" % display) | |
| + self.child_env["DISPLAY"] = ":%d" % display | |
| + | |
| def launch_session(self, server_args, backoff_time): | |
| """Launches process required for session and records the backoff time | |
| for inhibitors so that process restarts are not attempted again until | |
| that time has passed.""" | |
| logging.info("Setting up and launching session") | |
| self._setup_gnubby() | |
| - self._launch_server(server_args) | |
| - if not self._launch_pre_session(): | |
| - # If there was no pre-session script, launch the session immediately. | |
| - self.launch_desktop_session() | |
| + if os.path.exists(EXISTING_X_DISPLAY_FILE_PATH): | |
| + self._use_existing_session() | |
| + else: | |
| + self._launch_server(server_args) | |
| + if not self._launch_pre_session(): | |
| + # If there was no pre-session script, launch the session immediately. | |
| + self.launch_desktop_session() | |
| self.server_inhibitor.record_started(MINIMUM_PROCESS_LIFETIME, | |
| backoff_time) | |
| self.session_inhibitor.record_started(MINIMUM_PROCESS_LIFETIME, |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Appreciate finding this resource and the trail on documentation on this issue.
Using the post from @evandrobubiak worked for me on Mint 22.2 leaving out step 7 as the comments generated errors starting chrome-remote-desktop service. Since the service did restart step 8 wasn't needed either.
Very nice to get this working after losing after Ubuntu 22.04 and 24.04 installs, thank you!