# X11、Xlib、XFree86、Xorg、GTK、Qt、Gnome和KDE之间的关系

X11、Xlib、XFree86、Xorg、GTK、Qt、Gnome和KDE之间的关系

很多人对于他们是啥是傻傻分不清的,我做了个表格供大家参考。

  • 摘抄:

X11是X Window System Protocol, Version 11(RFC1013),是X server和X client之间的通信协议。X server是xfree86/xorg驱动下的显示设备鼠标键盘统称,X client通过X11协议和xfree86/xorg实现的X server通信,比如,告诉它画一个左上角坐标为(x,y),宽为w,高为h的窗口,xfree86就让显示器把屏幕上的小灯(像素)打亮,然后你就看到了一个窗口。为了方便开发人员编写X clients,就有了Xlib来封装协议;Xlib不够方便,于是就有了qt和gtk,提供了很多窗口控件(widgets)。为了方便用户,就出现了gnome和kde等桌面管理系统。一般来说,linux用户看到的界面就是其中之一了。gnome用的是gtk库,kde用的是qt库。

Linux本身没有图形界面,Linux现在的图形界面系统只是Linux下的应用程序

  • 关系梳理
类别 名称 说明
x服务器与x客户端协议 X11 是 X server 和 X client 之间的通信协议,全称 X Window System Protocol, Version 11(RFC1013),甚至简称为 X。
x服务器 XFree86、X.org 是 X11 协议的服务器端实现,现在一般用 X.org。另外还有商业上常用的MOTIF、Xnest。
x客户端库 Xlib库 封装X11协议内容,方便 X client 开发
x客户端高级库 Qt库、GTK库 为了进一步方便开发 X clients,于是对Xlib进行进再封装,就产生了Qt和GTK。他们提供了很多窗口控件(widgets)
x客户端 Gnome、KDE 是用 GTK库(Gnome)或 Qt库(KDE) 编写的桌面管理系统(X client)。

注:GTK开发的软件可以运行在KDE环境中,但是有可能出现一些些小问题,崩溃等。而Gnome的大部分软件都是基于GTK+库开发,同样Qt开发的软件也可以运行于Gnome,这主要也归功于Gnome,KDE以及这些软件(firefox,gimp等)都是遵循x11的协议的client应用,他们具有兼容性,这里要强调,虽然KDE和gnome是桌面环境,窗口管理器,看似更庞大,更底层,但是对于x11协议来说,他们和在他们之上运行的窗口应用(例如firefox,gimp等)属于同级,都是基于x的client软件,他们只是为了方便管理图形界面下的多应用程序而生的。

  • 其他

其他桌面环境:

text 复制代码
XFCE     简单快速的桌面环境,基于GTK
Cinnamon 基于GTK
MATE     基于GTK
LXDE     基于GTK
Trinity  基于Qt
Unity    基于gnome(GTK)开发
相关推荐
峥嵘life15 小时前
Android WiFi 热点 Channel 信道 和 Frequency 频率 转换总结
android·开发语言
wgego16 小时前
基础的反序列化一些总结(php和java)
java·开发语言·笔记
冻柠檬飞冰走茶16 小时前
PTA基础编程题目集 7-8超速判断(C++语言实现)
开发语言·数据结构·c++·算法
山峰哥17 小时前
数据库工程与SQL调优:从慢查询到秒级响应的实战之路
java·开发语言·数据库·sql·深度优先·启发式算法
wangjialelele17 小时前
Selenium4 + Java Web自动化测试入门指南:从环境搭建到常用操作详解
java·开发语言·前端·测试工具·自动化
Awna17 小时前
Golang 大小写可见性规范
开发语言·后端·golang
AI科技星18 小时前
曲率‑挠率与 $\boldsymbol{\omega/c}$ 的关系、精算验证及其物理意义
c语言·开发语言·线性代数·算法·决策树·机器学习·ai科技星
鹿角片ljp18 小时前
Java框架篇:Spring + SpringMVC + SpringBoot + MyBatis深度复习
java·开发语言
xlxxy_20 小时前
外部系统调用SAP接口遇到的一些报错
开发语言·数据库·sap·abap
八角.。20 小时前
方法参数与Debug按键
java·开发语言·jvm