User Tools

Site Tools


other:x_conf

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
other:x_conf [2022/08/09 12:06]
jypeter [What do we mean exactly with Local and Remote computers?]
other:x_conf [2024/07/10 08:54] (current)
jypeter [Using X forwarding in a Windows Powershell]
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? =====
Line 7: Line 15:
   * 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   * 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? ===== ===== What do we mean exactly with Local and Remote computers? =====
  
Line 16: Line 24:
  
   * The **remote computer or server** is another computer that you also want to interact with (using the screen+mouse+keyboard of your local 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//**     * We only consider on this page the case of a **remote //Linux// machine** that **requires a local running //X server//**
  
Line 33: Line 42:
 ===== Using an X server on Windows ===== ===== Using an X server on Windows =====
  
-There are several ​options ​available+There are several available ​X servers, and applications that will allow //X forwarding//​ from a remote server to your local X server
  
 +==== Using X forwarding in a Windows Powershell ====
 +
 +**You have to type ''​$env:​DISPLAY = "​localhost:​0"''​ before connecting** using ''​ssh -Y remote server''​ (''​-X''​ will not work), in order to have the ''​DISPLAY''​ variable correctly defined on the remote server
 +
 +<​code>​PS C:\> ssh -X obelix
 +[...]
 + >​echo $DISPLAY
 +DISPLAY: Undefined variable.
 + >​logout
 +Connection to obelix closed.
 +
 +PS C:\> $env:​DISPLAY
 +
 +PS C:\> $env:​DISPLAY = "​localhost:​0"​
 +PS C:\> $env:​DISPLAY
 +localhost:0
 +
 +PS C:\> ssh -X obelix
 +[...]
 +Warning: untrusted X11 forwarding setup failed: xauth key data not generated
 +[...]
 + >​echo $DISPLAY
 +DISPLAY: Undefined variable.
 +
 +PS C:\> ssh -Y obelix
 +[...]
 +Warning: No xauth data; using fake authentication data for X11 forwarding.
 +[...]
 + >​echo $DISPLAY
 +localhost:​42.0
 + >​xterm&​
 +[1] 30038
 +</​code>​
 ==== Installing VcXsrv ==== ==== Installing VcXsrv ====
  
Line 49: Line 91:
 === 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 71: Line 113:
 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 85: Line 127:
  
   * 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 96: Line 138:
 ===== Using an X server on a Mac ===== ===== Using an X server on a Mac =====
  
 +==== Installing XQuartz ====
  
-===== Configuration on the remote Linux server =====+Type: <wrap em>​free</​wrap>​
  
-==== If you are connecting with ssh or PuTTY ====+Download the installer from [[https://​www.xquartz.org|XQuartz]] and install it
  
-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+=== XQuartz configuration ===
  
-==== If you are using WSL ====+<WRAP center round tip 60%> 
 +Nothing to configure! 
 +</​WRAP>​
  
-You need to know what you consider as the //Local machine//, and what is the //Remote server//+The ''​XQuartz'' ​//X server// will be automatically startedif a graphical application needs it!
  
-  * **Local machine**: your local **Windows computer**, where you have installed ​[[other:win10wsl|WSL+Ubuntu]]+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 =====
  
-  * **Remote server** : we consider 2 types of remote servers: +==== If you are connecting with ssh or PuTTY ====
-    * 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+
  
 +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 Windows Subsystem for Linux ====
 +
 +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 //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 145: Line 205:
 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 169: Line 229:
 localhost:​19.0 localhost:​19.0
  
-[Remote] $ xterm</​code>​+[Remote] $ xterm &</​code>​
  
  
Line 183: Line 243:
 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_wsl|configured correctly]]+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+Open a //WSL// terminal (you should know how, if you have installed ​//WSL//) and type some basic commands
  
 <​code>​[Local WSL] $ hostname <​code>​[Local WSL] $ hostname
 name_of_your_local_machine name_of_your_local_machine
 +
 [Local WSL] $ echo $DISPLAY [Local WSL] $ echo $DISPLAY
 localhost:​0.0 localhost:​0.0
-[Local WSL] $ xterm+ 
 +[Local WSL] $ xterm &
  
 [Local WSL] $ ssh -X some_login@some_remote_server [Local WSL] $ ssh -X some_login@some_remote_server
Line 203: Line 265:
 [Remote] $ echo $DISPLAY [Remote] $ echo $DISPLAY
 localhost:​22.0 localhost:​22.0
-[Remote] $ xterm</​code>​+ 
 +[Remote] $ xterm &</​code>​ 
 + 
 + 
 + 
 + 
 ===== 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?+  ​* Are you [[other:​x_conf#​using_x_forwarding_in_a_windows_powershell|using Windows Powershell correctly]]?​ 
 +  ​* Is the [[other:​x_conf#​what_is_an_x_server|DISPLAY variable]] defined correctly on the local and remote computer?
  
-=== When DISPLAY is not defined correctly ===+ 
 +==== 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 If the ''​DISPLAY''​ **variable is not defined (correctly)**,​ you will get a ''​Can'​t open display: //[NO VALUE DISPLAYED HERE]//''​ error
Line 225: Line 313:
 $ echo $DISPLAY $ echo $DISPLAY
  
 +$ setenv DISPLAY CRAP_DISPLAY
 +$ xterm
 +xterm: Xt error: Can't open display: CRAP_DISPLAY
 </​code>​ </​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''​+  * 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''​
  
-=== When there is no X server running ​===+  * If you use ''​ssh''​ in a **Windows Powershell**,​ read [[other:​x_conf#​using_x_forwarding_in_a_windows_powershell|Using X forwarding in a Windows Powershell]] 
 + 
 +==== 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!]]
  
-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 & 
-$ connect localhost port 6000: Connection refused 
-xterm: Xt error: Can't open display: localhost:​12.0</​code>​ 
  
-Time to [[other:​x_conf|read this page again]]... 
 ==== OpenGL related settings ==== ==== OpenGL related settings ====
  
other/x_conf.1660046780.txt.gz · Last modified: 2022/08/09 12:06 by jypeter