This is an old revision of the document!
Table of Contents
Installing and configuring an X server
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
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)
- 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 options available
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
, thenNext
- Select
Start no client
, thenNext
- Keep the default
Clipboard
settings, uncheckNative opengl
, thenNext
- You can check the OpenGL discussion section if you have time…
- Click on
Save configuration
and save anX_Server.xlaunch
configuration file on your Desktop, thenTerminate
.
You should now have a newX_Server
icon/shortcut on your Desktop - Start the server by double-clicking on the new
X_Server
icon- 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 laterDocument how to automatically start the X server…
- Note: you can right-click on the
X
icon and selectExit…
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 MS Store to your account on the new computer. No need to buy it again - There seem 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
- Right-click on the
X
icon to open the X410 settings - It's possible to automatically start
x410
! 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 selectTask Manager
) - Go to the
Startup
panel (if there are no panels, selectMore details
) - Right-click on
X140
and selectEnabled
- 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 (usually0
) and selectShut down
Using an X server on a Mac
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 PuTTY
to connect to a remote Linux server
If you are using WSL
You need to know what you consider as the Local machine, and what is the Remote server
- Local machine: your local Windows computer, where you have installed WSL+Ubuntu
- Remote server : we consider 2 types of remote servers:
- an actual remote server
- The WSL computer running on a virtual machine inside your local Windows computer. This can be considered as a different and remote computer, even it is running on the local computer
You need your local X server to display graphics generated in WSL - Define the
DISPLAY
variable in the terminals used in WSL:- bash shell:
export DISPLAY=localhost:0.0
- tcsh shell:
setenv DISPLAY localhost:0.0
- You probably want to define the
DISPLAY
variable automatically in one of the shell configuration files
Testing
The idea is to:
- Open a terminal and check that the
DISPLAY
environment variable is correctly defined on the local machine - Connect to the remote machine
- Check that a (new)
DISPLAY
variable is automatically defined on the remote machine - Check that you can start an application using graphics (e.g.
xterm
) on the remote machine
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
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
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?
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
Make sure that you are using ssh -X
or ssh -Y
, or that PuTTY is configured with Enable X11 forwarding
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 & $ connect localhost port 6000: Connection refused xterm: Xt error: Can't open display: localhost:12.0
Time to read this page again…
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 inVcXsrv
, 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 ]