X11 follows a client/server model, where the X server accepts requests for graphical output from client applications (e.g. interactive matplotlib sessions), and sends back user input from the keyboard, mouse etc. In order for this model to work, client applications
need to know which X server to send their requests to. This is controlled by the
variable. In the case where you are connecting to a remote X session (for example over an SSH connection), the
in your remote session needs to point to your local X server.
is structured like this:
Not all parts may be present - the hostname is usually omitted for local sessions, and the screen number is also omitted if there is only one screen. In a local terminal session on laptop, my
alistair@laptop:~$ echo $DISPLAY
Provided that the remote server also supports X11, it's possible to open graphical windows on the remote machine and have them appear on your local machine using X11
forwarding. For an SSH connection you do this by passing the
alistair@laptop:~$ ssh -X firstname.lastname@example.org
alistair@workstation:~$ echo $DISPLAY
The remote SSH server should take care of setting the
appropriately when you open the connection. In this particular case,
actually a 'proxy' X11 server running on the remote machine that listens on display 10 and relays commands to your local X server over the SSH connection (take
a look at this if you're interested in the details).
Now you should be able to start a remote IPython session, import matplotlib using an interactive backend, and create plot windows which will then appear on your local machine. Since your keyboard/mouse input and the display output are now passing over an encrypted
network connection, the plot windows will be less responsive than you're used to for a local session.
Another word of warning: if you have an IPython session open with an interactive matplotlib session running it is impossible to close the SSH connection without killing the IPython process. I also sometimes call
I start a long-running process that imports matplotlib - that way I can disconnect from the remote server without killing the process.
step3:设置成功后，登陆远端Linux主机，执行 gtk-demo 测试是否可以将界面显示在本地窗口