Installing and configuring an X server

This detailed and easy-to-understand page will help you set up things correctly on your own, and help you understand what you are doing Or you can ask somebody to quickly configure everything for you, and keep on believing that things work by magic...

What is an X server?

An X server is not a server for distributing your perfect models output!

An X server is basically a program running on your local computer that understands the X Windows System protocol used by Linux computers (local computer, or remote Linux servers) to generate graphics, and that can render (i.e. display) the graphics generated remotely on your local computer

This page will mention a DISPLAY variable several times: the X server needs this in order to know where to display the graphics!

What do we mean exactly with Local and Remote computers?

This page will very often mention local computers, and remote computers:

The local computer is the desktop or laptop you are interacting with (using a screen+mouse+keyboard)

The local computer can be a Linux, Windows or Mac (i.e OS X) computer

The remote computer or server is another computer that you also want to interact with (using the screen+mouse+keyboard of your local computer)

Some servers used by LSCE users

We only consider on this page the case of a remote Linux machine that requires a local running X server

Remote Linux machine can mean several things:

It can be another operating system running inside a Virtual Machine on your local computer

We mostly consider on this page the case of a Linux virtual machine using Windows Subsystem for Linux (WSL) on a local Windows computer, but this can apply to other configurations

It can be a distant Linux computer or server in your building, or a high performance Linux computer in a computing center on the other side of the Earth. It could also be a Linux virtual machine in the Cloud

Using an X server on Linux

You don't need to do anything special!
Linux computers come pre-configured with a running X server that will display the graphics generated locally and on remote Linux servers

Using an X server on Windows

There are several available options

Installing VcXsrv

VcXsrv is pre-installed on the LSCE Windows computers! You may want to check if a more recent version is available You surely want to follow the configuration steps, in order to get the best possible settings to work with PuTTY!

Type: free

Download the installer from VcXrsv and install VcXsrv.

VcXsrv Configuration

You need to configure VcXsrv to work in multiple windows mode. The following steps will show you how to create a shortcut on your desktop to start VcXsrv in this appropriate mode

Start the configuration tool: Start => VcXsrv => Xlaunch

Select Multiple windows, then Next

Select Start no client, then Next

Keep the default Clipboard settings, uncheck Native opengl, then Next

You can check the OpenGL discussion section if you have time...

Click on Save configuration and save an X_Server.xlaunch configuration file on your Desktop, then Terminate.
You should now have a new X_Server icon/shortcut on your Desktop

Start the server by double-clicking on the new X_Server icon

It will seem that nothing happens, but an X icon will appear in the right side of the taskbar (you may have to look for it in the Display hidden icons pull-up menu). Your computer is now ready to display remote graphics!

The X server will stop when you close your Windows session or restart the computer. Do not forget to click on the X_Server icon on your desktop if you know that you will need an X server later

Document how to automatically start the X server...

Note: you can right-click on the X icon and select Exit... if you need to quit the X server

Installing x410

x410 is a low cost commercial X server that can be directly installed from the Microsoft store. This is an X server, and you will get the same functionalities as what is already provided for free by VcXsrv, but: Once installed, x410 will be automatically updated by the Microsoft Store application If you move to another computer, you can install x410 again by just Connecting the Microsoft Store to your MS account on the new computer. No need to buy x410 again ! There seems to be more (useful) updates than for VcXsrv The interface is more modern, with more options, and there is a lot of useful information on the web site The x410 name is easier to remember!
Type: commercial

Buy and install x410 from the Microsoft store

x410 configuration

Start x410: Start => X410

It will seem that nothing happens, but an X icon will appear in the right side of the taskbar (you may have to look for it in the Display hidden icons pull-up menu). Your computer is now almost ready to display remote graphics!

Right-click on the X icon to open the X410 settings

Select Auto copy to Windows after selection
and click somewhere else on the desktop to close the settings

It is possible to automatically start x410 when you open your session! Otherwise, it will stop when you close your Windows session or restart the computer, and you will have to restart it by hand (Start => X410) if you know that you will need an X server later

Open the Windows Task Manager (Right-click on Start and select Task Manager)

Go to the Startup panel (if there are no panels, select More details)

Right-click on X140 and select Enabled

Note: if you need to quit the X server, you can right-click on the X icon, and then click on the Display number at the lower left (usually 0) and select Shut down

Using an X server on a Mac

Installing XQuartz

Type: free

Download the installer from XQuartz and install it

XQuartz configuration

Nothing to configure!

Configuration on the remote Linux server

If you are connecting with ssh or PuTTY

Nothing special to do, if you are using "ssh -X" or "ssh -Y" or a correctly configured PuTTY to connect to a remote Linux server

If you are using Windows Subsystem for Linux

In that special case, you will need the X server to display graphics from the local virtual machine and from remote computers

You have to make sure that the DISPLAY variable is correctly defined in the terminals used in WSL

Testing

Testing plan

The idea is to:

Open a terminal and check that the DISPLAY environment variable is correctly defined on the local machine

If we use WSL, we also check that we can start an application using graphics in WSL

Connect to the remote machine

Check that a (new) DISPLAY variable is automatically defined on the remote machine

Check that we can start an application using graphics on the remote machine

Test application:

We need a simple graphical application that is likely to be already installed on the remote machine

The test is declared successful if we get a new window and we can interact with it.
Note: some applications may start with their window iconified, and you may have to check the part of your screen where the iconified windows go...

Do not forget to cleanly quit the test application when you have checked that it seems to work

It's enough to test one application

xterm &: the recommended test application. It will open a new terminal on the remote machine

xeyes &, xclock &, gvim &, gedit &, eog &, evince &, ... : other standard applications, that may be installed (or not)

The test may fail, due to the usually expected errors

On a Linux computer

Some basic commands in a terminal

[Local] $ hostname
name_of_your_local_machine
[Local] $ echo $DISPLAY
:0
[Local] $ ssh -X some_login@some_remote_server
[some connection information skipped here]
[Remote] $ hostname
name_of_the_remote_server
[Remote] $ echo $DISPLAY
localhost:20.0
[Remote] $ xterm &

On a Windows computer with only an X server installed

We just open a Powershell window (Start => Windows Powershell => Windows Powershell) and type some basic commands, including the creation of a DISPLAY variable

PS C:\> $env:computername
name_of_your_local_machine
PS C:\> $env:DISPLAY
PS C:\> $env:DISPLAY="localhost:0"
PS C:\> $env:DISPLAY
localhost:0
PS C:\> ssh -Y some_login@some_remote_server
Warning: No xauth data; using fake authentication data for X11 forwarding.
[some connection information skipped here]
[Remote] $ hostname
name_of_the_remote_server
[Remote] $ echo $DISPLAY
localhost:19.0
[Remote] $ xterm &

On a Windows computer with PuTTY and an X server installed

We assume here that PuTTY is already installed and configured and correctly configured (with Enable X11 forwarding)

We just have to open a pre-configured PuTTY Session on a remote server

[Remote] $ hostname
name_of_the_remote_server
[Remote] $ echo $DISPLAY
localhost:19.0
[Remote] $ xterm &

On a Windows computer with WSL+Linux and an X server installed

We assume that WSL+Ubuntu is installed and that the DISPLAY variable is configured correctly

Open a WSL terminal (you should know how, if you have installed WSL) and type some basic commands

[Local WSL] $ hostname
name_of_your_local_machine
[Local WSL] $ echo $DISPLAY
localhost:0.0
[Local WSL] $ xterm &
[Local WSL] $ ssh -X some_login@some_remote_server
[some connection information skipped here]
[Remote] $ echo $DISPLAY
localhost:22.0
[Remote] $ xterm &

On a Mac

Troubleshooting

Nothing works!

That's unfortunate, but:

Have you turned on your computer?

Do you have network access, and an account on a remote server?

Have you run the Tests?

Have you installed and configured the X server correctly? Is it really running?

Have you configured PuTTY and/or other required applications correctly ?

Is the DISPLAY variable defined correctly on the local and remote computer?

Error when there is no X server running

If the DISPLAY variable is defined, but there is no X server, you will get a Can't open display: localhost:[SOME VALUE] error

$ xterm &
xterm: Xt error: Can't open display: localhost:23.0

Time to read this page again...

Error when DISPLAY is not defined correctly

If the DISPLAY variable is not defined (correctly), you will get a Can't open display: [NO VALUE DISPLAYED HERE] error

$ xterm &
$ xterm: Xt error: Can't open display:
xterm: DISPLAY is not set
$ echo $DISPLAY
$ setenv DISPLAY CRAP_DISPLAY
$ xterm
xterm: Xt error: Can't open display: CRAP_DISPLAY

Make sure that you are using ssh -X or ssh -Y, or that PuTTY is configured with Enable X11 forwarding

Can't start a graphical application by clicking on its desktop shortcut

Check the shortcut and run the command directly in a terminal to check the error message

There is a good chance that you have forgotten to start the X server!

OpenGL related settings

It's hard to know what the best OpenGL settings for your X server are: it depends on your local computer, the remote computer, the network speed, the application generating the graphics, the libraries' versions...

If Native opengl is activated in VcXsrv, you may have to also use the following environment variable on the remote computer: export LIBGL_ALWAYS_INDIRECT=1

or maybe not! You can try to understand the What does LIBGL_ALWAYS_INDIRECT=1 actually do? thread...

Blurry display

If you use VcXsrv and the content of some displayed X windows appear blurry, see if you can fix the compatibility settings, or try to use x410.

[ PMIP3 Wiki Home ] - [ Help! ] - [ Wiki syntax ]