X11 是什么?
的有关信息介绍如下:正好这两天换了电脑,需要用ssh连接到远程服务器用python在服务器端进行数据可视化然后在本地电脑显示,这里就涉及到X11的东东,查了下,在这里写下自己的理解。
首先是X和X11的区别,X是一个 协议 并不是具体的实现,类似HTTP,WSGI一样都是协议,X11就是X协议的第11版,类似ES5,ES6等不同版本的ECMAScript标准。
X协议中X应用程序负责通过X协议告诉服务端需要在服务端显示什么图形,然后服务端收到消息后就会通过服务端上的Xserver的实现来显示客户端程序想要的图形。
这里通常与我们理解http协议不同的是,X 服务端通常都在我们本地的电脑上,而不是在远程服务器上。例如我通过ssh -X来启动X11 forwarding连接到远程服务器,远程服务器有python程序调用matplotlib绘制图形,那这个时候服务器端的程序就是X应用程序,他通过X协议告诉我们本地的Xserver如何在我们本地的电脑上显示图形(如果我们本地安装有相应的X11实现的话)。
例如我使用的是mac,那么我就需要在mac端安装相应的X11协议的实现,也就是XQuartz(从苹果官网上看到XQuartz就是一个X11的实现,就是适用于macos的x11服务端和客户端的库 关于 Mac 版 X11 ),有了他,当我们的mac电脑接收到X应用程序通过X协议发过来的消息时候就可以通过XQuartz在我们本地进行图形显示。如果我使用的是windows电脑,我也需要在windows上运行的X11 server,通常我们会使用Xmanager、putty+Xming等等,这样只要实现X协议无论我们是在什么终端上,我们都能够收到X应用程序传过来的消息在本地通过本地的实现进行图形显示。类似只要web服务器和web应用都遵守wsgi服务,无论我们用什么web服务器,什么python的web应用都是可以组合在一起工作的。
当我们在mac通过x11server显示图形的时候自然会弹出下面这个小图标,毕竟是他在工作的,这时候他就扮演着x11 server的角色。
我也不太会解释,先按我自己的理解来说吧,希望能够抛砖引玉。
其实这方面我也不太懂,以下难免有错误,欢迎大家指正。
首先,最原始的unix系统中是没有图形界面的,只有字符界面的。
在Macintosh和Windows有图形界面之后,unix系统也想搞一套图形界面系统,然后就有了X11。
经过几年的发展,X11逐渐成了unix和linux上的主流图形界面系统。
不过X11和其它的图形界面系统的主要区别在于,X11是客户端/服务器结构的。这是因为X11刚产生的年代,unix的主要使用方式是通过终端机登录主机,并且要求支持多用户。
这种结构的优点在于天生支持远程桌面,缺点在于效率低下。
后来在个人电脑出现之后,多用户的需求逐渐变弱,效率的问题就越来越明显。所以出来了很多替代技术,使用本机的硬件加速来提高效率。X11也慢慢呈现被淘汰的趋势。
替代X11的众多技术中,Wayland算是比较有名的一个,但是目前(2015年2月)各大主要的Linux发行版对Wayland的支持还是处于初级阶段。
我在两个地方见过,一个是在mac上面安装识别图形的java程序的时候。还有一个是在安装linux系统的时候,如果linux需要安装xface之类的东西的话,就得有这么一个xorg的东西。
Mac 不再随附 X11,但 XQuartz 项目会提供 X11 服务器和客户端库。
Apple 创建了 XQuartz 项目,共同致力于在 Mac 上进一步开发和支持 X11。XQuartz 项目最初基于 Mac OS X v10.5 中随附的 X11 版本。目前有多个版本的 XQuartz,其中包含修复程序、针对新功能的支持以及 X11 体验的更多改进功能。Apple 是 XQuartz 项目的贡献者,并致力于确保 X11 与 macOS 和最新版本的 XQuartz 正常配合使用。
XQuartz 项目提供适用于 MacOS 的 X11 服务器和客户端库,网址是 www.xquartz.org 。下载可用的最新版本。
既然问是什么,那就是问基础概念的东西了,可以参考鸟哥私房菜基础篇的介绍:
x11又叫x window, 是个软件,能运行很多不同版本的unix程序。 Mac os x就是一个类unix系统,然而unix有很多版本,里面有些很好用的程序,mac不能全部兼容。如果你想用那些东西,这时候需要就x11。