Xorg(X服务器)的角色和架构以及与其他软件的交互

Xorg(X服务器)的角色和架构以及与其他软件的交互

我已经成为 Linux 用户多年了,但我仍然很难理解 X 与 Windows 和 Mac 系统上用于显示的软件相比如何。

我知道它是一个基于客户端/服务器的软件,但让我特别困惑的是它如何与小部件工具包一起提供显示以及它们如何相互交互。

我的意思是,以 Mac 的 Cocoa 框架为例:你有 GnuStep,它是该框架的开源实现,但是(据我猜测),它运行在 X 上,对吗?但我认为 Mac 不使用 X。

Linux 上的 Xorg 有其他选择吗?例如,我可以用其他东西来运行 GnuStep 吗?

窗口管理器和桌面环境是专门为与 X 配合使用而编写的,还是可以与其他显示软件配合使用?

答案1

首先检查了解Linux桌面

我已经成为 Linux 用户多年了,但我仍然很难理解 X 与 Windows 和 Mac 系统上用于显示的软件相比如何。

我知道它是一个基于客户端/服务器的软件,但让我特别困惑的是它如何与小部件工具包一起提供显示以及它们如何相互交互。

我的意思是,以 Mac 的 Cocoa 框架为例:你有 GnuStep,它是该框架的开源实现,但是(据我猜测),它运行在 X 上,对吗?但我认为 Mac 不使用 X。

工具包(GTK、Qt...)通常不会相互交互 - 它们只是库,因此(大部分)在每个进程的基础上分开。当然,它们通过发送绘制命令和读取输入来与 X 服务器交互。然而,其中一些不限于单个后端 (X11) - 例如 GTK、Qt 和 GNUstep 也有 MS Windows 风格。

这些工具包充当本机绘图界面之上的统一 API 层 - 在 X11 的情况下,它们将绘制按钮的请求转换为一系列简单对象(矩形、阴影等;例如,在最近的 GTK 版本中,这是通过另一个实现的)抽象层提供者开罗)。在 Windows 或 Mac 上,他们可以使用本机 API,以便例如“GTK 按钮”可以转换为“Windows 按钮”,并且例如在帧缓冲设备上,它将直接转换为单个像素(可能再次通过像开罗这样的光栅引擎)。例如 Qt 有大约15个不同的后端

如果您谈论的是使用不同工具包与应用程序进行通信的桌面环境,那就完全是另一回事了。这些日子,D总线通常在 X 会话中使用,它不仅允许 GUI 应用程序向其他应用程序发送消息或从其他应用程序接收消息。

Linux 上的 Xorg 有其他选择吗?例如,我可以用其他东西来运行 GnuStep 吗?

一种替代方案(除了 John Siu 在他的回答中提到的那些之外)可能是韦兰。然而,能够使用它的应用程序并不多原生地

窗口管理器和桌面环境是专门为与 X 配合使用而编写的,还是可以与其他显示软件配合使用?

大多数时候窗口管理器只理解 X 协议,并且应该在 X 服务器下(或之上,取决于从哪一侧看)运行。几乎是因为没有更好的东西了(尽管 X11 及其实现中有一些东西,但可能会更好)。

答案2

如果您正在寻找 Linux 上 X11 的替代品,有一些基于这个帖子。然而检查他们的维基链接,其中一些似乎不再开发。以下是 2 个似乎活跃的

  1. 直接FB

  2. KDrive/TinyX

我个人之前使用/尝试过 directfb 。我当时使用的是 Gentoo,并且可以指定使用 DirectFB 库而不是 X11 来编译窗口应用程序(或者两者都用?我忘了。)

相关内容