什么是X Window?
X Window即X Window图形用户接口,是一种计算机软件系统和网络协议,提供了一个基础的图形用户界面(GUI)和丰富的输入设备能力联网计算机。其中软件编写使用广义的命令集,它创建了一个硬件抽象层,允许设备独立性和重用方案的任何计算机上实现。
------来自百度百科
与windows有何区别?
windows是一个完整的操作系统,包括了从内核到shell到窗口环境等一切内容,但是X Window只是操作系统的一部分,是一个窗口环境。但是两者都能提供图形界面,都可以初一多个窗口,允许用户通过鼠标键盘与计算机完成信息交互。
X Window的灵活性高,windows会帮用户制定好各种窗口界面,即使使用一些定制工具,能够改变的也不多,无法按照自己的想法来定制,而X Window完全可以自己来定制,包括从界面到交互方式。
与Mac OS的有何区别?
虽Mac os虽然基于unix,它的图形界面的也是X协议的一种实现,由苹果公司实现,而且它的X server集成到内核中,经过苹果的优化实起来更加高效,而且图形界面更加精美,我们也不能自己去配置。
一些基本知识:
X Window 是一种规范,有多种实现方式,Linux系统下最流行的是实现Xorg和XFree86,当然还有比较新的Xwayland
可以用ps -e | grep X 来查看当前系统的实现方式,如图,目前fedora 25 使用的是Xwayland。
用 ps -ef | grep X 可以查看Xwayland运行时的命令行参数。
X Window 是一个分层的架构,它分为 Server 和 Client。X Server 负责图形界面的显示,而Client 程序需要连接到 X Server,然后请求 X Server 绘制图形界面,同时从 X Server 接受用户的输入。在桌面系统上,X Server 和 Client 程序往往安装在同一台机器上,日常使用基本感觉不到它是分层的。但是很显然,X Server 和 Client 也可以分别运行在不同的机器上,在一台机器上运行程序,而在另外一台机器上显示图形界面。
X Window 中的 Server 和 Client 的概念和我们平时接触到的“Server/Client”概念刚好相反。很多熟悉 Internet 原理的人,第一次接触 X Window 的这两个概念都会搞错。比如,我在一台本地机器上运行 Ubuntu 14.04 桌面版,而在另外一台远程机器上运行 CentOS 5.10(纯字符界面),当我用 ssh 从 Ubuntu 连接到 CentOS 的时候,Ubuntu 是 Client,而 CentOS 是 Server。在 X Window 中,Server 偏偏是我面前的这台 Ubuntu,X Server 运行在 Ubuntu 上。我可以在 CentOS 中运行 GVim,但是窗口显示在 Ubuntu 中,这时,GVim 是一个 Client 程序,它在远程机器上运行,而它的窗口显示在本地。
Server和Client之间的通信