[ Content contribution] Linux 图形界面的“家族树”
Tofloor
poster avatar
reaper_6
deepin
2025-08-21 08:17
Author

我们经常混淆Linux中的显示服务器 (Display Server)显示管理器 (Display Manager)窗口管理器 (Window Manager)桌面环境 (Desktop Environment),这些概念和他们之间的关系,导致在沟通和处理系统问题的时候造成沟通上的障碍。让我们用一个树形结构来描述之间的关系,厘清它们各自扮演的角色以及如何协同工作。


Linux 图形界面的“家族树”:

操作系统 (Linux Kernel)
  └── 显示服务器 (Display Server)  <- 负责实际的图形渲染和输入处理的核心层
      ├── X Window System (X11/Xorg)
      │   └── 显示管理器 (Display Manager / Login Manager)  <- 处理登录认证和会话选择
      │       ├── GDM (for GNOME)
      │       ├── LightDM (lightweight, common for XFCE, MATE)
      │       ├── SDDM (for KDE Plasma)
      │       └── 其他 (Ly, etc.)
      │
      └── Wayland  <- 现代的显示服务器协议,通常直接与合成器集成
          └── 合成器 (Compositor) / Wayland Compositor  <- 在Wayland中,它既是显示服务器也是窗口管理器
              ├── Mutter (GNOME)
              ├── KWin (KDE Plasma)
              ├── Sway (Wayland version of i3)
              └── 其他 (Hyprland, Weston, etc.)

          └── 桌面环境 (Desktop Environment)  <- 提供完整的用户体验包
              ├── GNOME  (使用 Mutter 作为其 Wayland 合成器)
              ├── KDE Plasma (使用 KWin 作为其 Wayland 合成器)
              └── 其他 (Budgie, Pantheon, Deepin DDE 等)

  └── 桌面环境 (Desktop Environment)  <- 建立在显示服务器之上,提供完整的用户体验
      ├── GNOME  (在X11下使用 Mutter 的Xorg后端)
      ├── KDE Plasma (在X11下使用 KWin 的Xorg后端)
      ├── Cinnamon (在X11下使用 Muffin)
      ├── XFCE     (在X11下使用 Xfwm)
      ├── MATE     (在X11下使用 Marco)
      └── 其他轻量级桌面环境 (LXQt 等)

      └── 窗口管理器 (Window Manager)  <- 负责窗口的绘制、移动、缩放等(如果是独立的,则不属于DE内部)
          ├── 堆叠式 (Stacking WMs): Openbox, Fluxbox, FVWM
          ├── 平铺式 (Tiling WMs): i3, Awesome, XMonad, DWM
          └── 动态式 (Dynamic WMs): Herbstluftwm, Qtile

详细解释它们之间的关系:

1. 显示服务器 (Display Server):最底层核心

  • 功能: 这是图形堆栈的基础。它负责处理图形输出(像素如何显示在屏幕上)、用户输入(键盘、鼠标、触摸板的事件),并提供一个接口让应用程序能够将内容绘制到屏幕上。

  • 代表:

    • X Window System (X11 或 Xorg):Linux 长期以来的标准显示服务器。它是一个独立的服务器进程。
    • Wayland:更新、更现代的显示服务器协议。Wayland 的特点是它通常会将显示服务器和合成器的功能集成到一个单一的组件中(也就是 Wayland 合成器)。

2. 显示管理器 (Display Manager / Login Manager):登录入口

  • 功能: 你在开机后看到的第一屏图形界面。它负责用户认证(输入用户名和密码)、会话选择(选择要启动哪个桌面环境或窗口管理器)以及启动相应的图形会话。
  • 位于何处: 它运行在显示服务器(Xorg 或 Wayland 合成器)之上,是用户与图形会话的“守门人”。
  • 代表: GDM (GNOME Display Manager)、SDDM (Simple Desktop Display Manager for KDE)、LightDM (一个轻量级的通用显示管理器)。

3. 窗口管理器 (Window Manager):窗口的管家

  • 功能: 这是直接负责管理屏幕上所有“窗口”的程序。它处理窗口的绘制(标题栏、边框、按钮)、移动、缩放、最大化/最小化、关闭,以及窗口的堆叠顺序和焦点管理。

  • 与显示服务器的关系: 窗口管理器是显示服务器上的一个“客户端”应用程序,它通过显示服务器的协议来操作窗口。

  • 分类:

    • 堆叠式 (Stacking WMs):允许窗口互相重叠,如我们熟悉的 Windows 或 macOS 界面。
    • 平铺式 (Tiling WMs):自动将窗口排列成不重叠的布局,最大化屏幕利用率,通常通过键盘操作。
    • 动态式 (Dynamic WMs):可以根据需要在这两种模式之间切换。
  • 与桌面环境的关系:

    • 集成在桌面环境内: 大多数完整的桌面环境会内置自己的窗口管理器(例如 GNOME 使用 Mutter,KDE 使用 KWin,Cinnamon 使用 Muffin)。
    • 独立存在: 也有很多独立的窗口管理器(如 Openbox、i3、Awesome),它们可以单独使用,或者与一些轻量级的面板、文件管理器等组合,来构建一个极简的自定义桌面。

4. 桌面环境 (Desktop Environment):完整的用户体验包

  • 功能: 这是最顶层的用户界面。它是一个完整的软件包,包含了窗口管理器、文件管理器、面板、系统设置工具、壁纸管理、主题引擎、图标集以及一套核心的应用程序(如文本编辑器、终端)。它旨在提供一个开箱即用、功能完善且一致的用户体验。
  • 与底层组件的关系: 桌面环境是建立在显示服务器和窗口管理器之上的。它利用显示服务器的能力来绘制图形,并使用窗口管理器来管理应用程序窗口。
  • 代表: GNOMEKDE PlasmaCinnamonXFCEMATELXQt 等。

总结来说:

  • 显示服务器 是最底层的图形核心,负责渲染和输入。
  • 显示管理器 是登录界面,负责用户认证和会话选择。
  • 窗口管理器 负责窗口的实际管理(移动、缩放、绘制)。
  • 桌面环境 是一个包含了以上所有(或大部分)组件以及其他实用工具的完整图形用户界面套装,为用户提供一个统一、便捷的操作环境。

在 Wayland 的世界里,Wayland 合成器 的概念模糊了显示服务器和窗口管理器之间的界限,它通常同时扮演了这两者的角色,并可能包含了桌面环境的一些基本功能。

这个树形结构能帮助你更清晰地理解它们之间的层次和依赖关系吗?

Reply Favorite View the author
All Replies
tacat
deepin
2025-08-21 08:19
#1

相比其他os ,linux的图形技术栈,是不是略复杂

Reply View the author
流星追月
deepin
2025-08-21 08:31
#2

wayland是极简协议,deepin25需要开发扩展协议,和waylang标准协议一致,然后和Qt6.8协议兼容,浩瀚的工程,不是几天能搞定的,到年底能搞成就不错了,还要和商业APP磨合兼容,再优化改进协议,头发不搞白几十根完不成的。努力努力再努力还要开发自主的编译器,编程语言,不知道何时能完成。

Reply View the author
reaper_6
deepin
2025-08-21 09:03
#3
tacat

相比其他os ,linux的图形技术栈,是不是略复杂

乐高的复杂和一般玩具不能完全等同。

Reply View the author
静夜思
Super Moderator
2025-08-21 09:53
#4
reaper_6

乐高的复杂和一般玩具不能完全等同。

like高复杂意味着高可玩性

Reply View the author
静夜思
Super Moderator
2025-08-21 09:54
#5
It has been deleted!
reaper_6
deepin
2025-08-21 17:50
#6
静夜思

like高复杂意味着高可玩性

linux模块的设计原则通常是:高内聚,低耦合的

Reply View the author
Feelup
deepin
2025-08-21 20:48
#7

写得真棒,根据你写的内容我做了一个导图版本,方便大家保存使用

Linux图形界面栈.zip
Linux图形界面栈.png

Reply View the author