macOS 26.4 made a change that broke the current version of the X2Go client. This page explains what happened and how to get X2Go working again.
If you're just looking to get X2Go working with SENS servers, this is covered on the X2Go page.
This page explains the problem in depth so that other solutions may be created.
Before macOS 26.4, when a service like XQuartz requested that macOS create a socket for it with a randomized path, the socket was created in a directory under /private/tmp. macOS 26.4 changed the base directory for these sockets to /var/run.
This change causes a problem for version 4.1.2.2 of the macOS X2Go client because there is platform-specific code that only gets called if the DISPLAY environment variable (which contains the path to XQuartz’s socket) starts with one of two hard-coded values:
This logic may be found in Loop.cpp of nx-libs.
This workaround is provided for informational purposes only. The authors and publishers provide no warranties of any kind and shall not be held liable for any damages that may result from implementing this workaround.
To get the X2Go client working again, the XQuartz socket must be accessible from a path that the client expects XQuartz to use. One minimally-disruptive way to do this is to create a symlink to the socket with a path X2Go handles correctly, then update the DISPLAY environment variable so that X2Go uses that path instead.
A launcher application or script could do the following:
By performing this setup using a launcher, the user does not have to modify the configuration of macOS or XQuartz, which might disrupt other applications.