X11 和 Xlib 有什么区别?

Kaw*_*iKx 6 xorg x11

我不确定我是否做对了。Xlib 是一个与 X 服务器交互的库。X11 只是 X 服务器的另一个名称。

X 服务器只是一个库吗?如果是这样,为什么我们不能直接访问它?为什么我们需要 Xlib?

提前致谢

Gil*_*il' 12

实际上,严格来说,X11 是 X 客户端应用程序和 X 服务器之间的通信协议。X 服务器是系统的一部分,它与硬件通信并提供基本概念,特别是屏幕上的窗口的概念,具有潜在的重叠窗口,以及一个窗口具有输入焦点。(X 服务器不处理窗口装饰、菜单、键盘快捷键或任何其他窗口管理器的工作。)

X之所以叫X,是因为它(部分)是W窗口系统的后继者,而X11是X的11版。从1984年到1987年,大概用了3年时间,核心协议一直稳定然后。

X11 也是软件分发的基本名称,其中包括使用 X11 协议的库、客户端应用程序和服务器代码。该软件分发被称为 X Window System(版本 11),或简称 X 或 X11。这个软件发行版最初来自麻省理工学院,在那里发明了 X;然后它有一段有时动荡的历史,由麻省理工学院领导的财团生产版本高达 X11R6.3。

如今,X Window System 的实际参考实现是X.Org Foundation 的实现。这是一个可用的实现,今天几乎所有 X11 安装都使用。

有几个X 服务器,其中大多数共享一个代码库。大多数用户使用 X.orgXorg服务器,它与大多数显示硬件进行通信。还有其他服务器,例如Xnest,它在另一个显示器上的 X 窗口内显示 X 显示器,以及Xvfb,它是仅保留在内存中的虚拟显示器。

Xlib(具有共享对象名称libX11)只是 X Window 系统中的库之一。它是围绕 X11 协议客户端的基本包装器。几乎所有的 X 客户端都使用这个库(其中许多是通过更高级别的库间接使用的)。


jll*_*gre 8

“X Window System version 11”是整个shebang。

X11 服务器不是一个库,而是一个至少处理一个强制帧缓冲区和通常输入设备(如键盘、鼠标或触摸屏)的程序。有各种 X 服务器实现,X.org是突出的一种。其中一些不直接处理物理显示器/鼠标/键盘组合,而是纯粹的软件,如XnestXephyrXvfbXvnc

X11 客户端也是程序,使用X11 协议在本地或远程连接到 X 服务器,显示窗口,在其中绘制图形、像素图和文本并获取输入设备事件。请注意,一些 X 客户端(如 Xephyr)也是 X 服务器,有些是其他协议服务器X11vnc,有些是多个服务器的客户端:x2x

有一类特定的客户端,名为window manager,旨在(重新)定位和装饰顶部窗口。与其他窗口系统不同,用户可以选择他想使用的窗口管理器。

大多数客户端在较低级别直接或间接使用Xlib,但也有替代方案,如Xcb。通常,客户使用更高级别的工具包,如GTK+QT和许多其他工具包来简化开发并提供同质化的外观。