Xorg 和 Gnome/KDE/Xfce 之间的区别

Xorg 和 Gnome/KDE/Xfce 之间的区别

我想了解有关 UNIX 系统的更多信息,并且我想我有一个非常直接的问题。我想我知道 X 的用途:它为应用程序提供了呈现其 UI(除其他外)的标准。

但是为什么需要 Gnome/KDE 以及它们与 X 有何关系?我认为他们使用 X 作为应用程序和 GUI 之间的某种接口,因此 GUI 是可定制的,而界面在应用程序之间保持不变。

这是真的还是 Gnome/KDE 独立于 X?

答案1

(我正在研究GNOME和X的关系。我想分享一些我的理解。我会尽可能用逻辑的方式来表达它。并且我尽量使措辞精确。)

1.GUI由什么组成?

我想每个人都知道 GUI 是什么。

下面是 GUI 基本组件的图示。

在此输入图像描述

开窗系统只是一种为用户界面实现 WIMP(窗口、图标、菜单、指针)范例的 GUI。

这里是 Linux 和 Windows 系统的主要窗口系统列表。

窗口系统的关键组件是显示服务器(或窗口服务器、合成器)。任何在窗口中呈现其 GUI 的应用程序都是客户显示服务器的。

由于涉及到客户端和服务器,所以需要通信协议,称为显示服务器协议当然。

显示服务器是一个程序,其主要任务是协调客户端与操作系统其余部分、硬件以及彼此之间的输入和输出。它提供了图形硬件的抽象,供图形界面的更高级别(毫不奇怪,GUI 系统具有分层设计)元素使用,例如窗口管理器

有多种可用的显示服务器。例如:

  • X.Org服务器(主要用于 *nix)
  • Wayland(主要用于 *nix)
  • Mir(主要用于 *nix)
  • SurfaceFlinger(适用于 Google Android。)
  • Quartz Compositor(这是 Apple MacOS 使用的。)
  • 桌面窗口管理器(这是 Microsoft Windows 使用的。)

2. X 到底是什么意思?

X、X11 和 X Window System 是同义词。他们都代表着一个窗口系统

如上所述,X窗口系统的关键组件——显示服务器是X.Org服务器

有时,X.Org服务器也简称为X服务器。

任何运行并呈现其 GUI 的应用程序都是客户显示服务器。显示服务器及其客户端通过通信协议相互通信,该协议通常称为显示服务器协议,显示服务器是调解人客户端和用户之间。显示服务器接收来自内核的所有输入,内核从所有连接的输入设备(例如键盘、指点设备或触摸屏)接收这些输入,并将其传输到正确的客户端。显示服务器还负责将客户端的输出输出到计算机显示器。 A显示服务器协议可以是网络能力的,甚至是网络透明的。 (所以你可以看到,它本质上只是关于数据流和路由,视觉数据仍然是数据。)

并根据这里

X.Org Server 是一个提供以下功能的程序:显示和用户输入服务到其他程序。相比之下,文件服务器为其他程序提供对文件存储设备的访问。文件服务器通常位于远程位置,您可以从所在的计算机使用文件服务器的服务。相反,X 服务器通常运行在您所在的计算机上;显示和用户输入服务可能会被您机器上运行的程序请求,也可能被运行在偏僻的机器。

所以 X 窗口系统由以下部分组成:

  • 显示服务器
  • 显示服务器协议
  • 一些用于开发的库
  • 和其他东西

在此输入图像描述

根据这里

X(我认为是窗口系统)提供了 GUI 环境的基本框架:在显示设备上绘制和移动窗口以及与鼠标和键盘进行交互。 X 不强制要求用户界面——这是由单独的程序处理的。因此,基于 X 的环境的视觉样式差异很大;不同的程序可能呈现完全不同的界面。

换句话说,X 窗口系统只赋予程序执行基本操作的能力,例如绘制/移动窗口输入交互。 X 不强制执行视觉样式。它只是提供一种绘制方式,而不是提供绘制什么。所以你说的“...它为应用程序提供了呈现其 UI 的标准...“ 是不正确的。

3. 什么是窗口管理器?

Gnome/Xfce/KDE 都有窗口管理器。因为它们都工作在X显示服务器上,所以都被称为X 窗口管理器。窗口管理器与 X 服务器和 X 客户端协作。您可以在上面的 GUI 组合图中看到窗口管理器所在的位置。这里是不同类型的窗口管理器。

4. 什么是 GNOME/KDE/Xfce 桌面

GNOME、KDE ​​和 Xfce 桌面都是 Linux桌面环境。桌面环境是运行在操作系统之上的一组程序,它们共享一个通用的 GUI

但就像我上面提到的,X11作为一个显示服务器,只提供基本的绘图能力通过一些库,如 Xlib 或 XCB。通过此类库直接连接 X11 的应用程序可以具有截然不同的视觉风格

那么如何创建一个通用的GUI呢?来了小部件工具包。例如GTKQt。它们在 Wayland 和 X11 中很受欢迎开窗系统

GNOME 和 Xfce 使用 GTK。

KDE 使用 Qt。

这里是 X Window 系统桌面环境的比较。

5.什么是gdm3、lightdm、kdm

都是显示管理器,如“dm”部分所示。

就我个人而言,我认为显示管理器是一个误导性的名字。最好被称为图形登录管理器。它通常是一个图形用户界面,在引导过程结束时显示,代替默认 shell。

不同的桌面环境使用不同的登录管理器来保持视觉风格一致。

  • GNOME 使用 gdm3。
  • Xfce使用lightdm
  • KDE 使用 kdm

显示管理器可以从同一台或另一台计算机在 X 服务器上启动会话

总结一下...希望我没有过度阐述...

  • GUI 可以有多种类型。开窗系统是 GUI 的一种类型。

  • 任何窗口系统的关键组件通常称为显示服务器

  • 窗口系统,例如X,抽象硬件和IO。提供绘图、移动窗口、IO处理等基础服务。

  • 窗口管理器, 例如侏儒、Xfce、KDE,在显示管理器之上工作并提供您所看到的外观和感觉。

  • A桌面环境是一组共享共同视觉风格的应用程序。

  • 显示管理器,或图形登录管理器,提供图形登录界面。

我画了一个粗略的概念图。操作系统之上的 3 个部分是非常可定制的。这就是为什么会出现如此多的灵活性(混乱)。

在此输入图像描述

添加 1 - 下午 1:26 9/21/2018

这里有一些关于 QT 和 GTK 的讨论(不过可能是这个帖子的题外话……)

答案2

Xorg(以及早期的 Xfree 和早些时候 X10)是一个协议的服务器,更完整地称为X窗口系统;它允许应用程序在“屏幕”上绘图。可以用X.Gnome/KDE/Xfce等进行远程窗口管理器/ 桌面环境是在 X 中运行的特殊应用程序,它们绘制边框和图标等内容,并最小化和最大化应用程序本身不绘制的内容。

而且,由于 Gnome 和 KDE 都可以(或确实)在 MS Windows(以及不同程度的 Wayland)上运行,所以它们是(或可以)独立于 X。

相关内容