This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
other:x_conf [2022/08/08 13:41] jypeter [If you are connecting with ssh] |
other:x_conf [2023/06/30 08:20] jypeter Added the no space related error |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Installing and configuring an X server ====== | ====== Installing and configuring an X server ====== | ||
+ | |||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | 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... | ||
+ | </WRAP> | ||
+ | |||
===== What is 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 not** a server for distributing your perfect models output! |
- | An //X server// is basically a program running on your local computer that understands the [[https://en.wikipedia.org/wiki/X_Window_System_core_protocol|X Windows System protocol]] used by **remote Linux servers** to generate graphics, and that can //render// (i.e. display) the graphics generated remotely on your **local computer**. | + | * An //X server// **is** basically a program running on your **local** computer that understands the [[https://en.wikipedia.org/wiki/X_Window_System_core_protocol|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) | ||
+ | * [[other:ssh#connecting_to_servers_commonly_used_by_lsce_users|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 [[https://en.wikipedia.org/wiki/Virtual_machine|Virtual Machine]] on your local computer** | ||
+ | * We mostly consider on this page the case of a **Linux virtual machine** using [[other:win10wsl|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 ===== | ===== Using an X server on Linux ===== | ||
- | Linux computers come pre-configured with a running //X server// that will display the graphics generated locally and on remote Linux servers | + | <WRAP center round tip 60%> |
+ | You don't need to do anything special! | ||
+ | </WRAP> | ||
- | **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 ===== | ===== Using an X server on Windows ===== | ||
- | There are several options available | + | There are several available options |
==== Installing VcXsrv ==== | ==== Installing VcXsrv ==== | ||
Line 32: | Line 58: | ||
=== VcXsrv Configuration === | === 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 | + | 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'' | * Start the //configuration tool//: ''Start'' => ''VcXsrv'' => ''Xlaunch'' | ||
Line 54: | Line 80: | ||
This is an //X server//, and you will get the same functionalities as what is already provided for free by [[other:x_conf#installing_vcxsrv|VcXsrv]], **but**: | This is an //X server//, and you will get the same functionalities as what is already provided for free by [[other:x_conf#installing_vcxsrv|VcXsrv]], **but**: | ||
* Once installed, ''x410'' will be automatically updated by the Microsoft Store application | * 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 [[other:win10config#connecting_to_the_microsoft_store|Connecting the MS Store to your account]] on the new computer. No need to buy it again | + | * If you move to another computer, you can install ''x410'' again by just [[other:win10config#connecting_to_the_microsoft_store|Connecting the Microsoft Store to your MS account]] on the new computer. No need to buy ''x410'' again ! |
- | * There seem to be more (useful) updates than for ''VcXsrv'' | + | * 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 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! :-D | * The ''x410'' name is easier to remember! :-D | ||
Line 68: | Line 94: | ||
* Start ''x410'': ''Start'' => ''X410'' | * 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!\\ {{ :other:x410_x.png?direct |}} | + | * 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!\\ {{ :other:x410_x.png?direct |}} |
* Right-click on the ''X'' icon to open the **X410 settings** | * Right-click on the ''X'' icon to open the **X410 settings** | ||
- | * Select ''Auto copy to Windows after selection''\\ {{ :other:x410_settings.png?direct |}} | + | * Select ''Auto copy to Windows after selection''\\ {{ :other:x410_settings.png?direct |}} and click somewhere else on the desktop to close the 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 | + | * 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'') | * 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'') | * Go to the ''Startup'' panel (if there are no panels, select ''More details'') | ||
Line 77: | Line 103: | ||
* 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'' | * 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 an Apple computer ===== | + | ===== Using an X server on a Mac ===== |
+ | ==== Installing XQuartz ==== | ||
+ | Type: <wrap em>free</wrap> | ||
+ | |||
+ | Download the installer from [[https://www.xquartz.org|XQuartz]] and install it | ||
+ | |||
+ | === XQuartz configuration === | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | Nothing to configure! | ||
+ | </WRAP> | ||
+ | |||
+ | The ''XQuartz'' //X server// will be automatically started, if a graphical application needs it! | ||
+ | |||
+ | Check the [[https://support.apple.com/guide/terminal/script-management-with-launchd-apdc6c1077b-5d5d-4d35-9c19-60f2397b2369/mac|launchd documentation]] if you need more details | ||
+ | <code>$ launchctl list | grep quartz | ||
+ | - 0 org.xquartz.startx</code> | ||
===== Configuration on the remote Linux server ===== | ===== Configuration on the remote Linux server ===== | ||
==== If you are connecting with ssh or PuTTY ==== | ==== If you are connecting with ssh or PuTTY ==== | ||
- | Nothing special to do, if you are using [[other:ssh#using_an_x_server_to_display_graphics|"ssh -X" or "ssh -Y"]] or ''PuTTY'' to connect to a remote Linux server | + | Nothing special to do, if you are using [[other:ssh#using_an_x_server_to_display_graphics|"ssh -X" or "ssh -Y"]] or a [[other:putty_conf#changing_some_useful_settings|correctly configured PuTTY]] to connect to a remote Linux server |
- | ==== If you are using WSL ==== | + | ==== If you are using Windows Subsystem for Linux ==== |
- | + | ||
- | If you have installed [[other:win10wsl|WSL+Ubuntu]] on your local machine, and you need your //X server// to display local graphics generated in WSL, you need to **define the ''DISPLAY'' variable** in your terminal: | + | |
- | * //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 | + | |
+ | In that special case, you will need the //X server// to display graphics [[other:x_conf#what_do_we_mean_exactly_with_local_and_remote_computers|from the local virtual machine and from remote computers]] | ||
+ | You have to make sure that the ''DISPLAY'' variable is correctly [[other:win10wsl#configuration_in_your_local_linux_account|defined in the terminals used in WSL]] | ||
===== Testing ===== | ===== Testing ===== | ||
+ | |||
+ | ==== Testing plan ==== | ||
The idea is to: | The idea is to: | ||
- | * Open a terminal and check that the ''DISPLAY'' environment variable is correctly defined on the local machine | + | * Open a terminal and check that the ''DISPLAY'' environment variable is defined on the local machine |
+ | * If we use [[other:win10wsl|WSL]], we also check that we can start an application using graphics in ''WSL'' | ||
* Connect to the remote machine | * Connect to the remote machine | ||
* Check that a (new) ''DISPLAY'' variable is automatically defined on 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 | + | * 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) | ||
- | ==== On a Linux computer ==== | + | The test may fail, due to the [[other:x_conf#nothing_works|usually expected errors]] |
+ | ==== On a Linux computer or a Mac ==== | ||
- | Some basic commands in a terminal | + | Open a //terminal// ([[other:ssh#a_recommended_terminal_for_mac|terminal on a Mac]]) and use some basic commands to check things |
<code>[Local] $ hostname | <code>[Local] $ hostname | ||
Line 121: | Line 172: | ||
localhost:20.0 | localhost:20.0 | ||
- | [Remote] $ xterm</code> | + | [Remote] $ xterm &</code> |
==== On a Windows computer with only an X server installed ==== | ==== 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 | + | We just open a ''Powershell'' window (''Start'' => ''Windows Powershell'' => ''Windows Powershell'') and type some basic commands, including the creation of a ''DISPLAY'' variable |
<code>PS C:\> $env:computername | <code>PS C:\> $env:computername | ||
Line 145: | Line 196: | ||
localhost:19.0 | localhost:19.0 | ||
- | [Remote] $ xterm</code> | + | [Remote] $ xterm &</code> |
Line 159: | Line 210: | ||
localhost:19.0 | localhost:19.0 | ||
- | [Remote] $ xterm</code> | + | [Remote] $ xterm &</code> |
==== On a Windows computer with WSL+Linux and an X server installed ==== | ==== On a Windows computer with WSL+Linux and an X server installed ==== | ||
+ | |||
+ | We assume that [[other:win10wsl|WSL+Ubuntu]] is installed and that the ''DISPLAY'' variable is [[other:x_conf#if_you_are_using_windows_subsystem_for_linux|configured correctly]] | ||
+ | |||
+ | Open a //WSL// terminal (you should know how, if you have installed //WSL//) and type some basic commands | ||
+ | |||
+ | <code>[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 &</code> | ||
+ | |||
- | * FIXME ''export DISPLAY=localhost:0.0'' | ||
===== Troubleshooting ===== | ===== Troubleshooting ===== | ||
+ | |||
==== Nothing works! ==== | ==== Nothing works! ==== | ||
That's unfortunate, but: | That's unfortunate, but: | ||
- | * Have you turned on your computer? | + | * Have you turned on your computer? :-P |
- | * Do you have network access, and an account on a remote server? | + | * Do you have network access, and an account on a remote server? :-? |
* Have you run the [[other:x_conf#testing|Tests]]? | * Have you run the [[other:x_conf#testing|Tests]]? | ||
- | * Have you installed and configured the //X server// correctly? Is it really running? | + | * Have you [[other:x_conf|installed and configured the X server]] correctly? Is it really running? |
* Have you configured [[other:putty_conf|PuTTY]] and/or other required applications correctly ? | * Have you configured [[other:putty_conf|PuTTY]] and/or other required applications correctly ? | ||
- | * Is the ''DISPLAY'' variable defined correctly on the local and remote computer? | + | * Is the [[other:x_conf#what_is_an_x_server|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 | ||
+ | |||
+ | <code>$ xterm & | ||
+ | xterm: Xt error: Can't open display: localhost:23.0</code> | ||
+ | |||
+ | Time to [[other:x_conf|read this page again]]... | ||
+ | |||
+ | ==== Error when there is no space left in your home directory ==== | ||
+ | |||
+ | If there is no space left in your home directory (usually the home directory of the remote server), or if you have exceeded your [[other:newppl:starting#which_disks_should_you_use|home disk quota]], you will get an error similar to [[#error_when_there_is_no_x_server_running|Error when there is no X server running]] | ||
+ | |||
+ | <code>$ xterm & | ||
+ | xterm: Xt error: Can't open display: localhost:23.0</code> | ||
+ | |||
+ | **Solution**: clean the content of your //home//! | ||
+ | ==== 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 | ||
+ | |||
+ | <code>$ 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 | ||
+ | </code> | ||
+ | |||
+ | Make sure that you are using ''ssh -X'' or ''ssh -Y'', or that [[other:putty_conf#changing_some_useful_settings|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 [[other:x_conf#error_when_there_is_no_x_server_running|you have forgotten to start the X server!]] | ||
+ | |||
==== OpenGL related settings ==== | ==== OpenGL related settings ==== | ||