User Tools

Site Tools


Table of Contents


For those who want to find reasons for certain behavior of X2Go, read here: How To Debug or Troubleshoot your X2Go installation

NX Protocol FAQ

Is X2Go compatible with NoMachine's NX or freeNX?

No. It is not possible to use NX client to log on to an X2Go server and vice versa.

X2Go does use the same libraries for graphics, keyboard/mouse input, and clipboard sharing. However, X2Go aims for an even greater integration into the Linux environment. Therefore, X2Go performs session handling in an incompatible manner.

X2Go also performs SSH authentication in a different manner than NoMachine does.

Can I install FreeNX and X2Go Server on one system?

Yes - the NX libraries of X2Go are actually the most recent stable versions of NXv3 libs available. They are versioned as 3.5.0.x and include the patchset developed by X2Go and others. NoMachine dropped the NXv3 development branch completely and NXv4 was released as closed source only. :-(

In former times the NX libs shipped with X2Go installed into an X2Go'ish location so that they would not interfere with the original NX libraries.

Nowadays the NX libs shipped with X2Go work as a replacement for the NXv3 that are not maintained by NoMachine anymore.

(This FAQ article has been written by Mike Gabriel and Mike DePaulo. If someone does not agree with the given information on NoMachine, please be so kind to contact us, so that we can discuss it and possibly correct errors in the given information).

Why are you using the terms "nx-libs" and "NX libraries"? X2Go clearly uses the 2 executables nxproxy & nxagent?


  1. That is the term that was always used.
  2. Libraries are created also from the source package.
  3. Those libraries define the NX protocol.

Note that originally, “nx-libs” was not a single git repo. Instead, it was 7 separate tarballs:

  1. nxcomp
  2. nxcompext
  3. nxcompshad
  4. nxproxy
  5. nxagent
  6. nxauth
  7. nx-X11

Only the topmost three are libraries.

Having separate tarballs made maintenance more difficult, so they were combined into one as the X2Go project started redistributing them.

You are probably referring to the LBX post-mortem

It is true that X11 forwarding's performance can be improved by SSH's zlib compression and by the use of XCB rather than xlib.

However, nx-libs performs 3 additional performance improvements:

  1. nx-libs caches images, so that they do not have to be resent. For example, opening up your “start menu” is very fast the 2nd and 3rd time that you do so.
  2. zlib is generic lossless compression, so it is not well-suited for images. nx-libs achieves better performance by using compression methods such as JPEG (default, lossy) or PNG (lossless.)
  3. XCB applications are still partially hindered by round-trips, and nx-libs eliminates more of those round-trips. See Bart Massey's explanation for more info.

The topmost two performance improvements also reduce bandwidth usage, which has the effect of improving performance when other users are sharing the same WAN link.

Why Am I told to enable X11 forwarding with X2Go? I thought that X2Go uses nx-libs instead of X11 forwarding!

The simple answer is that the OpenSSH server treats the connection differently (in such a way that degrades nx-libs performance) unless X11 forwarding is enabled.

See NoMachine's explanation for more info.

What is the difference to LTSP? Why a free thin client environment?

LTSP requires a high bandwidth on your network. It can efficiently be used in Local Area Networks (LANs) only.

However, X2Go is not a mere solution for local area networks, but it also allows for the integration of a mobile network into the system. Nomachine’s NX libraries - used by X2Go - enable the transport of whole desktop sessions over a narrow bandwidth connection through the internet.

Further bonuses of X2Go are that you can pause a desktop session and take it to a different thin client for further use.

Does X2Go support compositors?

No, X2Go doesn't support X11 screen compositors. The compositors will be disabled.

Server FAQ

What are the packages x2goserver-home and x2goserver-one for?

Both packages (x2goserver-home, x2goserver-one) are obsolete as of April 2011. They have been removed from the current .deb repositories and they should not be used anymore (in fact they break your system). On .deb based system they will automatically be uninstalled with an update of the x2goserver package.

X2go Server currently does neither have any group membership restrictions any more as former versions had. This may well be re-introduced, though, if someone picks up work on that.

The obsolete x2goserver-home package added all known users on the server system to the group x2gousers which made some people nervous when testing X2Go on production systems. For this reason we have dropped the auto-adding of users to groups in Apr 2011.

Do I need a PostgreSQL database to run X2Go Server?

No. The PostgreSQL database is only needed if you are planing to use more than one connected server (server array). By default X2Go Server installs with SQLite3 support enabled. To set up X2Go with PostgreSQL as the DB backend you have to edit X2Go Server's configuration in /etc/x2go.

Is there an X2Go server daemon/service that needs to be started?

Strictly speaking, the only daemon/service that needs to be running is the SSH daemon. If users can connect to your server via an SSH client, then they should be able to connect via X2Go Client or PyHoca-GUI/PyHoca-CLI.

Depending on your Linux distribution, there may be an X2Go server init script called x2goserver or a systemd service called x2gocleansessions.service. It is highly recommended that this service be enabled. It handles session cleanup, but does not provide X2Go “login functionality”. You must not assume that the service is running correctly if logins via any of the X2Go client applications are possible. It is also *not* a prerequisite for new X2Go sessions.

Does X2Go support Wayland or Mir?

So long as X2Go uses the NX protocol exclusively for remote display and keyboard/pointer input, X2Go cannot support Wayland or Mir. Audio and file/printer sharing are handled by separate protocols. This is because NX works with the X11 protocol, rather than using an entirely separate protocol like SPICE and VNC do. NX improves X11 performance by caching the X11 traffic, compressing it, and eliminating the X11 “round-trips”.

Client FAQ

You have 3 clients. Which client should I use?

If in doubt, pick the regular X2Go Client (x2goclient). It is the most widely used and tested.

  • The regular X2Go Client (x2goclient) is optimized for thin client & single-session usage, but can be used on any desktop/laptop computer.
  • PyHoca-GUi is optimized for users who want to connect to multiple sessions at once, and already know how to use X2Go. For example, a sysadmin administrating multiple servers.
  • PyHoca-CLI is launched via command-line args; similar to vncviewer or rdesktop/xfreerdp. It is also suitable for connecting to multiple sessions at once.

Is there an MS Windows Client?

Yes, there are two: X2Go Client and PyHoca-GUI.

Is there an OS X Client?

Why is there no sound using Linux?

Assuming PulseAudio daemon is up and running. Probably because the PulseAudio server does not listen to client connections. Check whether the file /etc/pulse/ on the client contains the line:

load-module module-native-protocol-tcp auth-cookie=".pulse-cookie"

If not, add it. Alternatively you can load the module at runtime:

pactl load-module module-native-protocol-tcp 'auth-cookie=".pulse-cookie"'

Can I use x2goprint with Windows Clients?

To set a print target, you'll need x2goclient. For example you can use the RDP tunneling feature of X2Go. FIXME

Session FAQ

How do I change the keyboard layout?

Although some tools (e.g. Gnome Keyboard Indicator) might have trouble changing the layout, you should be able to change the keyboard layout using setxkbmap.

setxkbmap de
setxkbmap us

Ubuntu's and Fedora's KDE won't resize the desktop to the window size requested by X2Go Client. How can I fix this?

This happens because of a package called kscreen. You might encounter an X2Go session trying to launch KDE and this KDE session not resizing properly to your client-side screen or session window size.

In general, this is not a bug. Using two applications - kscreen and X2Go client applications' resizing features - that handle display resolution is not supported, as it can lead to many unexpected situations and race conditions.

On machines that act as an X2Go Server only, it may make sense to remove the kscreen package completely. This, however, may have a negative effect on your X2Go server's plug'n'play capabilities. The kscreen package handles hotplugging of display hardware. Hence, if your X2Go Server machine is also used as a physical desktop machine, consider well, if it is OK to remove that package or not.

For X2Go we suggest disabling the KScreen KDED module in the user's profile, since X2Go handles resolution switches for you:

System Settings -> Startup and Shutdown -> Service Manager, uncheck "KScreen 2"

To manually change output settings (rotation, enabling/disabling outputs etc) use the KScreen KCM.

How do I customize font sizes in X2Go sessions?

Some people have asked for font size customizations in X2Go session windows. Please use the DPI value in the session setup to customize font sizes within your X2Go sessions:

  • 70 DPI → quite readable fonts
  • 90 DPI → the default font size
  • 120 DPI → miniature font size

File and folder sharing has stopped working since Apr 2011 (approx.). Why? What can I do about it?

Add users that shall be granted X2Go file and folder sharing functionality to the fuse group on your system (openSUSE/SLES users: to the trusted group). Example for user foo:

$ sudo gpasswd -a foo fuse
# if on SUSE + derivatives
$ sudo gpasswd -a foo trusted

How to run multiple Firefox in different sessions in paralell?

Known Issues

Can't login to x2goserver with an ECDSA key

Currently, older versions of the ssh library used by X2Go called libssh are unable to work with ECDSA keys. However you may use an RSA key - if you need to - or go with the SSH default authenticating method using the remote user's password.

SSH Login issue

If you already use OpenSSH to get a shell on your x2go server, you may get this message when trying to connect with x2go:

The host key for
this server was not found but an othertype of key exists. An attacker
might change the default server key to confuse your client into thinking
the key does not exist

This is related to the ECDSA host key (related to the previous FAQ entry - although there is a subtle difference between host and client keys.) To solve this issue, you can disable ECDSA keys on your OpenSSH server configuration, by commenting the following line in /etc/ssh/sshd_config file:

#HostKey /etc/ssh/ssh_host_ecdsa_key

Then restart the SSH service. Now you should not get the error message anymore.

3rd Party Software Known Issues

Eclipse/DartEditor crashes on Debian Wheezy

Eclipse and DartEditor crash on Debian Wheezy due to the cairo library, as explained on

The bug report and its links explain how to work around this problem by updating to the cairo library from Jessie, or modifying a line in the /usr/bin/eclipse launcher script, changing the last line:

exec $ECLIPSE "$@"


exec $ECLIPSE -vmargs -Dorg.eclipse.swt.internal.gtk.cairoGraphics=false "$@"

LibreOffice performance

If when using LibreOffice, text selections and copy/paste operations spike your CPU usage, disable anti-aliasing and selection transparency in the LibreOffice options.

Mate and numlock erratic behavior

If using Mate DE, your numlock key makes numeric keyboard act in a numeric manner or as a movement keys, disable the dconf setting with:

gsettings set org.mate.peripherals-keyboard remember-numlock-state false

Another interesting setting is:

gsettings set org.mate.peripherals-keyboard numlock-state 'on'

Lastly, you can tell X to always use numeric pad as digits, on keyboard options.

R graphics

Using an buffered X-window and reducing the update rate can significantly improve performance for complex graphs.

#Only update Window every 5 seconds (you have to play with this value)
options(X11updates = 5)
#Open a new X-Window with buffered window
X11(type = "dbcairo");
#Everything following this line will be drawn into this window.

Desktop Environment FAQ (Gnome, KDE, etc.)

Please visit de-compat to find out which Desktop Environments are supported on the X2Go Server side.

doc/faq/start.txt · Last modified: 2021/12/21 04:04 by danger89