linux图形界面总结——X、Xorg、WM、QT、GTK、KDE、GNOME的区别与联系

文章目录

    • 一、 linux图形界面
    • 二、X协议
    • 三、Xfree86 Xorg
    • 四、WM(window manager:窗口管理器)
    • 五、X协议的Client端实现
    • 六、KDE、GNOME、QT和GTK直接关系
    • 七、参考:

一、 linux图形界面

linux本身没有图形界面,linux现在的图形界面的实现只是linux下的应用程序实现的。

图形界面并不是linux的一部分,linux只是一个基于命令行的操作系统,linux和Xfree的关系就相当于当年的DOS和 WINDOWS3.0一样,windows3.0不是独立的操作系统,它只是DOS的扩充,是DOS下的应用程序级别的系统,不是独立的操作系统,同样 XFree只是linux下的一个应用程序而已。不是系统的一部分,但是X的存在可以方便用户使用电脑。

WINDOWS95及以后的版本就不一样了,他们 的图形界面是操作系统的一部分,图形界面在系统内核中就实现了,没有了图形界面windows就不成为windows了,但linux却不一样,没有图形 界面linux还是linux,很多装linux的WEB服务器就根本不装X服务器.这也WINDOWS和linux的重要区别之一。

linux图形相关软件层次:

在这里插入图片描述

二、X协议

X是一个开放的协议规范,当前版本为11,俗称X11。X Window System由客户端和服务端组成,服务端X Server负责图形显示,而客户端库X Client根据系统设置的DISPLAY环境变量,将图形显示请求发送给相应的X Server。

三、Xfree86 Xorg

Xfree86,Xorg是X协议的软件实现。XFree86只是实现X协议的一个免费X服务器软件,只不过现在LINUX上最常用的是Xorg了。而苹果电脑的图形界面用的也是X协议,而且被认为是做的最好的X协议图形界面,并且他对X协议的实施是做在系统内核里的,所以性能明显好很多,这就是为什么很多大型三维图形设计软件都是在苹果平台上的原因。

/usr/X11R6这个目录,这是XFree的默认安装目录,X11R6 实际上是 X Protocol version 11 Release 6

四、WM(window manager:窗口管理器)

WM的作用就是最大化,最小化,移动,关闭窗口等.而这些不是X服务器来负责完成的,所以,我们看到的linux图形界面,都是启动了WM的,否则linux图形界面的窗口将不能移动,放大和缩小。

五、X协议的Client端实现

XFree86是X协议的服务器软件(注以软件的形式实现),但Client端更多的是方便程序员更方便的使用X协议与服务器端的XFree86交互,故就产生了一个Xlib库,封装了X协议内容,如果你还觉得直接使用Xlib不方便,于是就产生了qt和gtk,对Xlib进一步封装,提供了很多控件,可以可视化的使用X协议更方便程序员的开发。

Xlib、qt、gtk直接关系如下图:
在这里插入图片描述

QT是直接使用xlib库的,GTK并为直接使用xlib,而是使用更低层的函数库GDK和Glib。这种结构使得Gtk可以更方便地移植到其它系统上,或使用与XWindows系统无关的图形库。

六、KDE、GNOME、QT和GTK直接关系

KDEGNOME是窗口管理器,启动他们后我们进入了可视化操作(图形界面),既然需要显示图形,自然少不了与X协议的服务器软件打交道,既然QT和GTK进一步封装了X协议,并且他们提供了更为丰富的窗口及控制机制,于是在QT基础上实现的窗口管理器叫KDE,在GTK基础上实现的窗口管理器叫GNOME.

再次提示:KDE和GNOME并不只是窗口管理器,同时提供了桌面、菜单等等。

其它的小型窗口管理器有:

  • windowmaker
  • after step
  • blackbox
  • fvwm
  • fvwm2
  • …等等都是常用的优秀窗口管理器。

REDHAT9中有windowmaker 但是默认不安装,大家可以装来试试.只要xinitwmaker&就可以用 windowmaker 了。

七、参考:

https://blog.csdn.net/zhangna20151015/article/details/51280578

https://www.cnblogs.com/wangkangluo1/archive/2012/06/14/2548706.html

https://www.cnblogs.com/newjiang/p/8414625.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/27213.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux驱动开发:驱动开发框架,linux内核字符设备驱动开发过程

一、驱动框架 1.Linux内核模块和字符驱动的关系 模块是Linux进行组建管理的一种方式, 结构体:对设备的管理内核需要抽象出来一个结构体来描述设备所有的共性信息写驱动需要申请一个结构体并赋值(初始化),然后注册给内核让内核统一管理 驱动:由内核统一管理,所以驱动…

RabbitMQ实现六类工作模式

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: RabbitMQ实现六类工作模式 ⏱️ 创作时间: 2023年07月20日…

图像处理之梯度及边缘检测算子

文章目录 一、sobel 算子二、Scharr算子三、Roberts算子四、拉普拉斯算子 梯度是一个量变化的速度,在数学中通常使用求导、求偏导获取梯度或者某一方向上的梯度。 在数字图像中梯度可以看为像素值分别在x,y方向上的变化速度,因为数字图像的离散型&#x…

微软浏览器连不上网络

针对微软浏览器连不上网络,但其他浏览器仍能连上网络 控制面板 -> 网络和Internet -> Internet 选项 -> 连接 -> 局域网设置 -> 取消代理服务器

SQL数据库(设置模式、数据库操作、表操作、列操作、SQL索引/约束、SQL数据类型、SQL函数、常见问题)

目录 SQL数据库 设置模式 SET NAMES utf-8 set sql_safe_updates1 数据库操作 CREATE DATABASE databaseName(创建数据库) USE databaseName(选择数据库) DROP DATABASE databaseName(删除数据库) …

[pyqt5]鼠标指针光标样式

pyqt5默认有下面几种光标样式 设置光标: self.setCursor(Qt.CrossCursor) 恢复默认光标 self.unsetCursor() 自定义光标 from PyQt5.Qt import * import sysapp QApplication(sys.argv)# 创建一个控件 window QWidget() window.resize(500,500) window.move(…

指针知多少

作者简介:დ旧言~,目前大一,现在学习Java,c,Python等 座右铭:松树千年终是朽,槿花一日自为荣。 望小伙伴们点赞👍收藏✨加关注哟💕💕 ⛵前言 不知道大家还记…

【深度学习】多任务学习

多任务学习是一个很火的话题,在自动驾驶领域以及其他对存储资源要求较高的端侧任务,都会考虑这种方式。之前面试的时候也有被问题多任务学习。前几天看到一个写得很好的例子,在此记录一下,也好久没有写博客了。 1.参考 论文是20…

p2p大豆计数模型

前面学习了一下论文:Improved Field-Based Soybean Seed Counting and Localization with Feature Level Considered 论文链接:https://spj.science.org/doi/10.34133/plantphenomics.0026 解读链接:论文阅读--考虑特征水平的改进的基于田间…

如何在 3ds Max 中使用 Mental Ray 制作逼真的草地和带有光晕的天空

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 首先,您将创建一个平面对象,然后添加一个噪点修改器。在此之上应用毛发和毛皮修饰符。 这将用于模拟逼真的草地。 我们用日光系统创造太阳和天空。为太阳添加镜头和戒指效果以及酷炫…

ES6类-继承-Symbol-模版字符串

目录 类 继承 ES5 如何继承 ES6继承 Symbol 用途 可以产生唯一的值,独一无二的值 解决命名冲突 getOwnPropertySymbols() 作为全局注册表 缓存 Symbol.for() 消除魔术字符串 模版字符串 类 在javascript语言中,生成实例对象使用构造函数&#xf…

使用Linux Deploy搭建服务器(三)Linux Deploy安装宝塔面板

宝塔面板是一个免费的服务器管理平台,可以在你的服务器上安装它,然后你就能很方便的管理你的服务器,以及搭建各种服务平台,在此基础上我们可以使用内网穿透,搭建出自己的Linux服务器。可以这样一个相对便宜的方式&…