Linux平台Display Server与Desktop Environment

news/2024/9/19 18:36:51/ 标签: linux, 运维, 服务器

Display Driver

Linux中的显示服务器(Display Server)是什么?

显示服务器是一个应用程序,其主要任务是协调客户端与其他操作系统,硬件以及彼此之间的输入和输出。显示服务器通过显示服务器协议与其客户端进行通信。

显示服务器是任何图形用户界面(尤其是窗口系统)中的关键组件。它是图形用户界面(GUI)的基本组件,位于图形界面和内核之间。借助显示服务器,您可以使用GUI图形界面,没有它,您只能使用命令行界面。

注意:不要混淆显示服务器(Display Server)与桌面环境(Desktop Environment),桌面环境(Gnome、KDE、Xfce、MATE等)是基于显示服务器的上层程序。

显示服务器通过显示服务器协议与其客户端进行通信。Linux中提供了三种显示服务器协议: X11、Wayland和Mir。

X Window System, X.Org, X11介绍

X Window System(通常仅称为X或X11)很古老,它起源于1984年,是大多数类似UNIX的操作系统(包括Linux)的默认窗口系统。

X.Org服务器是X.Org基金会管理的X Window System显示服务器的免费开放源代码实现。它是一个通过X11协议与客户端应用程序进行交互的应用程序,用于在显示器上绘制内容并发送输入事件,例如鼠标移动,单击和击键。通常,将启动一个X服务器,它将等待客户端应用程序连接到它。Xorg基于客户端/服务器模型,因此允许客户端在另一台计算机上本地或远程运行。

X11 是网络协议。它描述了如何在客户端(应用程序)和显示器(服务器)之间交换消息。

下一代显示服务器Wayland

Wayland 由X.Org开发人员Kristian Hogsberg于2008年作为个人项目开始。它是一种通信协议 ,用于指定显示服务器与其客户端之间的通信。Wayland是作为一个免费的开源社区驱动的项目而开发的,目的是用现代、安全和简单的窗口系统代替X Window System(也称为X11或Xorg)。

Wayland与X相比的主要优势在于它是从头开始的,X已经太过古老和复杂。Wayland在简洁性和安全性方面都很出色。

总结

与X Window System相比,Wayland还有点新,即使Wayland项目已经进行了十多年,但大多数Linux的视频游戏和图形密集型应用程序仍为X11编写。另外,许多封闭源代码的图形驱动程序,例如NVIDIA GPU的驱动程序,都尚未完全提供对Wayland的支持。

Graphic Library

  • GTK

    GTK(原名GTK+)最初是GIMP的专用开发库(GIMP Toolkit),后来发展为Unix-like系統下开发图形界面应用程序的主流开发工具之一。GTK是GNU计划的一部分。

  • QT
    大家应该很熟悉了,无需赘述。

Desktop Environment

GNOME、KDE、Mate、Unity、Cinnamon、XFCE、LXDE等都是Linux桌面环境,各个桌面环境各有优缺点,比如:在轻量级桌面环境下,XFCE是最受欢迎的桌面环境,在一些配置不高的计算机上运行流畅。

查看当前使用的桌面环境:

$ printf 'Desktop: %s\nSession: %s\n' "$XDG_CURRENT_DESKTOP" "$GDMSESSION"
Desktop: ubuntu:GNOME
Session: ubuntu# 告诉您从lightdm问候者中选择的登录选项
$ echo $GDMSESSION
ubuntu
$ echo $DESKTOP_SESSION
ubuntu
# 
$ echo $XDG_CURRNT_DESKTOP
ubuntu:GNOME$ sudo apt install wmctrl
$ wmctrl -m
Name: GNOME Shell
Class: N/A
PID: N/A
Window manager's "showing the desktop" mode: N/A

GNOME

GNOME 是 the GNU Network Object Model Environment 的缩写。

GNOME 计划 是 1997 年 8 月由 Miguel de Icaza 和 Federico Mena 发起,目前由志愿贡献者和受雇贡献者组成的 GNOME 计划开发,其最大的公司贡献者为红帽(Red Hat)公司。与其说 GNOME 是桌面系统,GNOME 更是一个桌面系统开发框架,基于 glib、GTK 等开发工具包,开发者可以高效地开发风格统一的用户端软件及图形应用。

GNOME 包含了现代桌面应用的方方面面:包括 Nautilus 文件管理器、rhythmbox 音乐播放器、totem 视频播放器、gedit 文本编辑器,还包括邮件客户端 evolution、图形处理软件 GIMP 等。GNOME 被设计为易于使用、对新手友好,可通过图形界面设置选项、定制界面。

Gnome 为那些不倾向于调节更多系统的那些用户考虑。那就是为什么 Gnome 甚至不包括一些简单的调节选项,更换主题甚至字体。这些基本的调节,用户需要安装 gnome-tweak-tool。因此默认的整体 Gnome 可定制化的程度是不高的,但是这可以通过第三方应用/工具来做。

Unity

Unity 是由 Ubuntu 的母公司 Canonical 开发的一款外壳。之所以说它是外壳,是因为 Unity 运行在 GNOME 桌面环境之上,使用了所有 GNOME 的核心应用程序。

2010 年,Unity 第一个版本发布,此后经过数次改进,如今和其它的桌面环境一样,也可以安装到其它的 Linux 发行版上了。

Unity 使用了不同的界面风格,如果你用的是 Ubuntu Linux 发行版,你会注意到 Unity 与 KDE 和 GNOME 桌面环境有些不一样。

Unity 在左边有一个启动器,位于启动器顶部的是搜索图标,又叫“Dash”。在 Dash 上搜索文件时,不仅会给出来自硬盘的搜索结果,还会给出来自在线来源的搜索结果,比如 Google Drive、Facebook、Picasa、Flick 及其他。

MATE

MATE 是一种从现在无人维护的 GNOME 2 代码库派生出来的桌面环境。

MATE 让人觉得在使用旧的桌面环境,但是结合了历年来界面方面的诸多改进。MATE 还非常适用于低配计算机,所以如果你有一台旧的或速度较慢的计算机,可以使用 MATE。

Cinnamon

Cinnamon 是 Linux Mint 的默认桌面环境。

与 MATE 类似,Cinnamon 是由 Linux Mint 团队因为不满 Gnome 3 的改进而开发的另一种桌面环境。但 Cinnamon 与 MATE 不同之处在于,Cinnamon 建立在 Gnome 3 的基础上。Cinnamon 是新的,而且在积极开发之中,但这款出色的桌面环境没有因新颖而在功能方面有所减弱。

Cinnamon 拥有 GNOME 和 Unity 等其它桌面环境所没有的种种功能。Cinnamon 是高度可定制的桌面环境,不需要任何外部插件、窗口组件和调整工具来定制桌面。Cinnamon 甚至可以通过设置管理器本身来下载并安装主题,甚至不需要打开互联网浏览器。

KDE

KDE 是 K Desktop Environment 的缩写,KDE 是基于大名鼎鼎的 Qt 的,最初于 1996 年作为开源项目公布,并在 1998 年发布了第一个版本。

KDE 有类windows的“开始菜单”,界面华丽,被称为最接近 Windows 界面的 Linux 桌面系统,包括界面布局、开始菜单、主题风格都与 Windows 相似,因此对熟悉 Windows 的用户很有亲切感。

KDE 始于德国人 Matthias Ettrich 于 1996 年就读蒂宾根大学的一个计划。

Mathias Ettrich 选择使用 Qt 程式库开发 KDE 桌面系统,Qt 提供框架和众多功能,使应用程序更容易编写,并提供 KDE 桌面环境的一致性。1998年7月,KDE 1.0 发布。之后 KDE 2发布,提出了重大技术改进。KDE 2 和 KDE 3 之间的 API 变化较少,KDE 3 可以被看作延续 KDE 2。KDE 4 则包含了许多新技术的变化。KDE Plasma 5 则提供更现代化,更干净的视觉和交互式用户体验。

同 GNOME 类似,KDE 是一个庞大的项目,官方提供了许多图形应用程序以满足人们日常使用,包括文件管理器 Dolphin、邮件客户端 KMail、文本编辑器 Kate、视频播放器 KMPlayer、音乐播放器 Amarok 等。

从传统角度讲,KDE与GNOME都属于Linux阵营中最具影响力的桌面环境选项。GNOME桌面阵营目前已经分裂成了GNOME、Unity、Cinnamon以及MATE,但KDE项目却仍然保持着旺盛的生命力。Plasma 5界面也拥有了前所未见的精致表现。

KDE在可配置性方面一直优于GNOME以及由GNOME衍生而成的各类Linux发行版。不过这到底是不是件好事,仍然取决于用户的实际情况。有些朋友热衷于探索繁多选项所带来的自由搭配空间,但也有些用户更倾向于使用GNOME那样的精简化方案。随着时间的推移,KDE已经在简化的道路上取得了相当可观的进展——现在很多高级选项都会被隐藏起来,用户可以直接享受其搭配合理的默认效果。

人们曾经对 KDE 的稳定性有所抱怨,不过这几年 KDE 稳定性已提高很多。另一个不足是 KDE 的某些组件设计的过于复杂,难以使用。

许多发行版本如OpenSUSE、PCLinuxOS和 Mandriva等皆采用KDE作为默认桌面环境。

使用KDE的感受实际上与Unity、GNOME、Cinnamon或者是MATE可谓完全不同。后面这些桌面环境都使用内置于GTK工具包当中的,与GNOME非常相似的应用组合。然而KDE却独树一帜,始终坚持Qt一百年不动摇,而且拥有着自己一套与之配合的应用套件。虽然应用程序在任何桌面环境下都能够正常运行,但量身打造出来的效果绝对是不一样的——KDE上的应用几乎与主屏幕及桌面融为一体。

XFCE

XFCE 是一个轻量级的桌面环境,建立在 GTK 基础之上,被广泛的运用于各种 UNIX / Linux 发行版中。XFCE 非常小巧、轻便、高效,运行程序很快,对于一些比较老旧的机器、或是很少内存的机器是理想选择。以 XFCE 作为预设桌面的发行版有 Xubuntu 和 Manjaro 等。

在占用资源方面,较GNOME、KDE较少。适合老机器,轻量级桌面。与windows界面环境类似。许多不习惯GNOME 3 ,Unity新桌面的同学,很多选择了XFCE 4.8,包括Linus大神同学。

XFCE 融合了 UNIX 开发哲学中的“模块化”和“可重用性”的重要的思想。XFCE 包含了许多组件,这些组件可以单独安装,也可以应用于其他桌面环境。用户还可以选择 GNOME 等相关软件,按照自己的需求,定制出与众不同的桌面环境。

XFCE 是一个简单并易于使用的桌面环境,其包括主面板、菜单、快捷方式和应用启动器,并集成窗口管理器、文件管理器(Thunar)、声音管理器,界面和主题可以配置。XFCE 最新版本为 4.14,于 2019 年 8 月 11 日发行。

当然,总体来说,Xfce目前的处境其实有点尴尬。从传统角度讲,它本来是仅次于GNOME与KDE的第三大人气选项。它在轻量化水平上稍优于KDE与GNOME。而在GNOME 3正式发布之后,Xfce已经成为最顶尖的“传统”Linux桌面环境。

自那时开始,Xfce就受到来自两位新对手的冲击。Lxde的轻量化效果更出色,而Cinnamon则在功能集丰富度方面傲视群雄。从这个角度讲,MATE的功能更为齐备,在轻量级水平上则与Xfce基本持平。目前Xfce仍然存在,不过其发展速度已经大不如前。

如果大家打算尝试Xfce的话,最好与Xubuntu配合使用。

LXDE

LXDE,全名为 Lightweight X11 Desktop Environment,旨在提供全新轻量、快速的桌面环境,可在 Unix 以及如 Linux、BSD 等 POSIX 相容平台上运行。LXDE 的主要开发者来自台湾,包括名为 PCMan 的著名开源程序设计者洪任谕。

LXDE也位列四大桌面环境之一,轻量级桌面,占用资源较少,合适老机器,不说在新机子高配置上的表现了。Lxde目前已经成为轻量级兼用户友好桌面环境领域的王者。如果大家手头有一台古董级计算机,但又希望让它排上点用场,那么选择Lxde绝对没错。

不同于 Linux 的其他桌面环境,LXDE 组件依赖性极少,大多数组件可以独立运作,无需倚赖其它组件。LXDE 使用 OpenBox 作为其预设窗口管理器,并且希望能够提供建立在互相独立组件上的轻量级快速桌面环境。相较于功能强大与伴随而来的体积膨胀、占用资源,LXDE 更重视实用性和轻巧性,并且尽力降低其所耗的系统资源。虽然 XFCE 已足够轻巧,但 LXDE 更胜一筹。

相较于现代Linux桌面环境,Lxde对于图形硬件、CPU时钟频率以及内存的要求都低得多。在这里我们虽然看不到令人眼花缭乱的图形特效,但却能够获得最为基本的轻量级桌面环境使用体验,并顺利启动并管理自己的应用程序。

LXDE 的组件包括 PCManFM 文件管理器、LXLauncher 程序启动器、LXTerminal 终端、Leafpad 文字编辑器、Xarchiver 压缩管理器等。

LXDE 的缺点是界面比较简陋,不够精美。

要获得最理想的Lxde使用体验,请搭配Lubuntu一同使用。


http://www.ppmy.cn/news/1511592.html

相关文章

<数据集>骑行头盔识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:5026张 标注数量(xml文件个数):5026 标注数量(txt文件个数):5026 标注类别数:3 标注类别名称:[helmet, without_helmet, two_wheeler] 序号类别名称图片数框数1helm…

在Matlab中进行射频电路S、Z、Y、ABCD等参数的转换

在Matlab中进行射频电路S、Z、Y、ABCD等参数的转换 目录 在Matlab中进行射频电路S、Z、Y、ABCD等参数的转换1、转换案例-3dB电桥2、将转换结果应用到ADS中制造理想3dB电桥器件 在微带线的ABCD矩阵的推导、转换与级联-Matlab计算实例(S、Z、Y参数转换)中&…

SpringBoot开启多端口探究--开启gRPC端口

文章目录 前情提要一、gRPC的特别之处二、粗暴方案原始的GrpcObservabilityServer集成支持方案评价 三、改进方案基本原理改造结果 四、小结 前情提要 之前咱们聊过SpringBoot下开启多端口有3个思路,并分析了第一种开启独立management端口的实现细节,今…

【深度学习】【语音TTS】GPT-SoVITS v2 实战,训练一个人的音色,Docker镜像

文章目录 原理Dockerdocker push训练教程: https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/xyyqrfwiu3e2bgyk 原理 Docker 不用docker不行,不好分配显卡, 做个docker镜像: docker pull pytorch/pytorch:2.1.2

【AI趋势6】大模型与游戏共振

大语言模型与游戏环境的相结合,正在为AI Agent训练打造最佳训练场。游戏不仅能为AI Agent训练提与现实世界类似的虚拟环境,还能为AI Agent训练提供清晰、可量化的评估规则,大幅提升技术迭代与测试效率。当前,包括OpenAI、DeepMind…

前端面试题-什么是JavaScript的闭包?有哪些应用场景?

定义: 一个函数能够访问其它函数内部定义的变量 形成的原理: (1)函数创建:在一个函数(外部函数)中定义另一个函数(内部函数)。 (2)内部函数访问:内部函数可以访问和修改外部函数中的局部变量。 (3)函数…

Spring Cloud Eureka快速搭建:微服务注册中心的配置步骤

Spring Cloud Eureka快速搭建:微服务注册中心的配置步骤 目录 引言Spring Cloud微服务架构概述什么是Eureka?Eureka Server的搭建步骤 4.1 创建Eureka Server项目4.2 配置Eureka Server4.3 启动Eureka Server4.4 多实例Eureka Server的搭建 Eureka Cli…

无人机电池充电器技术详解

随着无人机技术的飞速发展,其作为航拍、物流、农业、监测等多领域的重要工具,对电池续航能力和充电效率提出了更高要求。无人机电池充电器作为保障无人机长时间运行的关键设备,其技术水平的提升直接影响到无人机的使用效率和安全性。本文将从…

牛客网习题——通过C++实现

一、目标 实现下面4道练习题增强C代码能力。 1.求123...n_牛客题霸_牛客网 (nowcoder.com) 2.计算日期到天数转换_牛客题霸_牛客网 (nowcoder.com) 3.日期差值_牛客题霸_牛客网 (nowcoder.com) 4.打印日期_牛客题霸_牛客网 (nowcoder.com) 二、对目标的实现 1.求123...n_…

【Solidity】基础介绍

数据类型 值类型 值类型的变量在赋值或作为函数参数传递时会被复制。 布尔类型:bool整数类型: 无符号:uint8、uint16、…、uint256 (uint256 可简写为 uint)有符号:int8、int16、…、int256 (int256可简写为 int) 地址类型&…

Unity的物理系统

目录 3D 物理系统 主要组件 2D 物理系统 主要组件 物理引擎的选择与应用 物理模拟的控制与优化 Unity中Nvidia PhysX引擎与Box2D引擎在性能和功能上的具体比较是什么? 如何在Unity项目中实现Havok物理引擎,并与PhysX或Box2D引擎结合使用&#xf…

像素尺寸物理尺寸分辨率

同样尺寸的图片(如448448像素)的确会有相同的像素数量,但分辨率的概念不仅仅取决于像素数,还包括图像在物理世界中的显示或打印尺寸。因此,像素尺寸相同的图片在不同的物理尺寸下显示时,分辨率可以不同。 …

UE5.4 用自带OpenCV4.55读取png、MP4、摄像头并在ui中显示的方法

创建c项目,项目build.cs中开启模块: // Copyright Epic Games, Inc. All Rights Reserved.using UnrealBuildTool;public class OpencvT : ModuleRules {public OpencvT(ReadOnlyTargetRules Target) : base(Target){PCHUsage PCHUsageMode.UseExplici…

Kali Linux 命令大全

一、引言 Kali Linux 作为一款专为渗透测试和安全研究设计的操作系统,拥有丰富的命令行工具,熟练掌握这些命令对于高效地进行安全测试和分析至关重要。本文将为您详细介绍 Kali Linux 中常用的命令,涵盖系统信息获取、文件操作、网络分析、用…

Vue3 组件命名

最简单的方式 无须引入插件,可直接命名(缺点,可能就是丑了) // 组件命名 defineOptions({name: Menu}) 优雅的命名方式 安装 vite-plugin-vue-setup-extend 插件 npm i vite-plugin-vue-setup-extend -D vite-plugin-vue-se…

分布式数据库在传统车联网厂商的应用实践 | OceanBase案例

本文作者:慧视通科技,梁君 传统车联网厂商运维百亿级数据的痛点与难点 深圳慧视通科技(简称慧视通)作为专业的位置数据综合运营服务提供商,一直深耕智能交通领域,依托车联网、云计算、大数据处理、无线通信…

Go语言 类封装和绑定方法

本篇文章主要内容为Go语言类相关操作:封装和绑定方法介绍及示例。 目录 封装 绑定方法 类方法形参 指针形参 设置类方法参数 指针与非指针区别 总结 封装 go语言支持类的操作,但是没有class关键字,使用struct来模拟类。 示例如下&am…

Java - File、IO流

File类 File是java.io.包下的类,File类的对象,用于代表当前操作系统的文件(可以是文件、文件夹) File类只能对文件本身进行操作,不能读写文件里面存储的数据。 创建File类的对象: //创建file对象//1.具体…

嵌入式八股-操作系统面试30题(20240817)

计算机的五大单元是什么? 运算器:执行算术和逻辑运算,如加法、减法、与或非等操作。控制器:控制和协调计算机各部件的工作,解释和执行指令。存储器:存储数据和程序,包括主存储器(RAM…

[vue] pdf.js / vue-pdf 文件花屏问题

vue-pdf内核也是pdf.js&#xff0c;修改方式一样 在pdf.worker.js中加入几行代码&#xff0c;追加到”precinct.zeroBitPlanesTree zeroBitPlanesTree;“之后。 for (var l 0; l < layerNumber; l) {if (readBits(1) ! 0) {throw new JpxError("Invalid tag tree&qu…