Answers:
(我正在研究GNOME和X的关系。我想分享我的一些理解。我将尽我所能以合乎逻辑的方式介绍它。)
下面是GUI的基本组件的说明。
关键组件是显示服务器。有几个可用的显示服务器。如:
X,X11和X Window System是同义词。它们都代表一个窗口系统。窗口系统是一种图形用户界面(如上所述,GUI),它为用户界面实现了WIMP(窗口,图标,菜单,指针)范例。
这是Linux和Windows系统的主要窗口系统列表。
通常,任何窗口系统的主要组件都称为显示服务器(因为窗口系统是一种GUI,而显示服务器是任何GUI的关键部分,所以这并不奇怪),尽管还使用了诸如窗口服务器或合成器之类的其他名称。
任何应用程序运行,并提供其GUI是一个客户端的的显示服务器。显示服务器及其客户端通过通信协议相互通信,该通信协议通常称为显示服务器协议,显示服务器是客户端和用户之间的中介。显示服务器从内核接收所有输入,内核从所有连接的输入设备(例如键盘,定点设备或触摸屏)接收该输入,并将其传输到正确的客户端。显示服务器还负责将客户端输出到计算机监视器。甲显示服务器协议可以支持网络,甚至可以实现网络透明。(因此,您可以看到,它本质上只是关于数据流和路由,可视数据仍然是数据。)
并根据这里:
X Server是一个为其他程序提供显示和用户输入服务的程序。相比之下,文件服务器为其他程序提供了对文件存储设备的访问权限。文件服务器通常位于远程位置,您可以使用所在计算机上的文件服务器服务。相反,X Server通常在您所在的机器上运行;您的计算机上运行的程序以及远程计算机上运行的程序可能会请求显示和用户输入服务。
因此X由以下组成:
根据这里:
X提供了GUI环境的基本框架:在显示设备上绘制和移动窗口以及与鼠标和键盘进行交互。X并不要求用户界面–这是由单独的程序处理的。因此,基于X的环境的视觉样式差异很大。不同的程序可能呈现完全不同的界面。
换句话说,X仅使程序具有执行基本功能的能力,例如绘制/移动窗口和输入交互。X不强制使用视觉样式。因此,您说的“ ...为应用程序提供了一种标准来表示其UI ... ”是不正确的。
GNOME和KDE都是Linux 桌面环境。桌面环境是在操作系统之上运行的一组程序,它们共享一个公共GUI。
但是就像我上面提到的,X11作为显示服务器,仅通过某些库(例如Xlib或XCB)提供基本的绘图功能。通过此类库直接连接X11的应用程序可能具有截然不同的视觉样式。
那么如何创建通用的GUI?这是小部件工具箱。如GTK +和Qt。它们在Wayland和X11 窗口系统中很流行。
GNOME使用GTK +。
KDE使用Qt。
而这里是X Window系统桌面环境的比较。
我画一个粗略的概念图。操作系统上方的3个部分非常可定制。这就是为什么产生如此多的灵活性(混乱)的原因。
而这里是关于QT和GTK一些讨论(也许offtopic此主题虽然...)
Xorg(以及更早的Xfree和更早的 X10)是一个用于服务器的服务器,该协议更完整地称为X Window System;它允许应用程序在“屏幕”上绘制。Gnome / KDE / Xfce和其他窗口管理器 /桌面环境是在X中运行的特殊应用程序,它们绘制诸如边框和图标之类的东西,并最大限度地减少和最大化应用程序本身所没有的东西。
而且,由于Gnome和KDE都可以(或确实)在MS Windows(和Wayland)上运行,因此它们是(或可以)独立于X。