针对该部分笔记,其主要是 X Window System 的相关内容,学习这些内容是为了了解它工作原理、实现某些操作。
认识
X Window System,X11,X,其是用于位图显示的窗口系统,是在 UNIX 环境中经常使用的 Client-Server 显示协议。
X11 为图形界面环境提供基本框架:在显示设备上,绘制和移动窗口;与鼠标、键盘进行交互。但是 X 不负责用户界面,所以不同桌面环境之间的差异非常大。
补充说明,X11 是个框架,并非完整的实现。
组成
架构概览
X Window System/Software architecture
X Server,其运行在我们的电脑(笔记本、台式机、Whatever…)中,负责处理显示器、鼠标、键盘、……
X Client,其指我们桌面运行的应用程序。其能够运行在当前电脑中,也能运行在远程主机中。
Client 连接 Server,来要求 Server 绘制界面、显示效果、……
详细说明
X 采用 Client / Server 架构。特殊的地方在于,Server 运行在本地(用户)主机中,而 Client 运行在远程主机中;
Client 是应用程序,比如 Firefox XTerm XClock 等等。负责与 Server 交流,发出请求,并接收 Server 信息;
Server 是服务端实现,比如 Xorg Server、XFree86 等等;
Server 比较特殊,Server 独占显示控制权,并服务来自 Client 的请求,并负责与用户交互(鼠标、键盘)。因此 Client(应用程序)无需关心显示细节,只需要向 Server 发送指令,比如“绘制从这里到那里的直线”、“渲染字符串”;
这样带来的好处就是 Client 与 Server 可以运行在不同的主机上,我们在本地运行 Server,但是通过 TCP/IP 网络,我们可以运行 Host A 主机上的 Firefox 程序,运行 Host B 上的 Chrome 程序,运行 Host C 上的 Thundbird 程序,而本地运行 Server 只是负责显示这些程序界面(Client 会告诉 Server 显示什么、如何显示),实际的程序运行及资源占用则是发生在远程主机上的;
当然,大多数情况下,我们是单台主机,所以 Client 与 Server 在同个主机上。
X11 Compositor
—— 在学习 Wayland 相关内容时,我们需要简单了解 X11 Compositor 相关内容,所以简单整理该部分笔记。
DeepSeek / 在 x11 中,是否存在 compositor
DeepSeek / X11 Compositor 与 Wayland Compositor 的主要差距有哪些?
在 X11 中,确实存在 Compositor(合成器)。它并不是 X11 核心协议的一部分,而是一个运行在 X11 系统之上的独立程序,主要负责为窗口添加视觉效果并管理最终的屏幕图像合成。X11 Compositor 和 Wayland Compositor 虽然在名称上都叫“合成器”,但它们在架构、职责和能力上有着天壤之别。
常见的 X11 Compositor 实现:Compton、Picom、xcompmgr、Compiz、……
核心作用:
- 视觉增强:它为窗口添加诸如阴影、透明度(包括非活动窗口透明化和菜单透明化)、窗口动画淡入淡出 等效果。
- 合成渲染:在没有合成器的情况下,X11 应用程序直接将内容绘制到屏幕的帧缓冲区,这容易导致不同窗口绘制内容时相互干扰,出现画面撕裂。合成器作为中间层,让每个应用程序先在自己离屏的缓冲区中绘制好内容,然后由合成器统一收集所有这些缓冲区,并根据窗口层级、位置和效果设置,合成为一幅完整的最终图像,再提交给显示器。这种方式可以有效减少画面撕裂,并通过 VSync 技术带来更流畅的体验。
我们推测:Compositor 是个很好的主意,所以在 Wayland 中成为核心,得以发扬光大。
性质
在远程主机中运行应用,但在本地主机中显示应用界面 run remote application in local
根据 X.Org 特性,我们可以:在远程服务器的命令行中(其无图形界面),运行 xterm 命令,但是却是在本地显示 XTerm 的终端界面。
该笔记将记录:如何使用这一特性。实际的用途,请自行挖掘 :-)
环境概述:
- Local Machine: laptop-01 XTerm
- Remote Server: server-01 X Window System
执行命令:
laptop-01 # ssh -X root@server-01 server-01 # su - root server-01 # xterm // 稍后(取决于网络质量),我们便可在本地(laptop-01)看到打开的 XTerm 终端
构建
XFree86,XF86,其为是 X Window System 协议的实现。
X.Org,同样是是 X Window System 的开源实现,其由 XFree86 4.4 RC2 分叉出来的。The X.Org project provides an open source implementation of the X Window System.
参考
X Window System – Wikipedia https://en.wikipedia.org/wiki/X_Window_System
The X Window System Architecture: overview
Wikipedia/XFree86
Wikipedia/Root Window
ArchWiki/Display Manager
X.Org/Wiki https://www.x.org/wiki/