桌面环境和窗口管理器之间的区别是什么?

我真的很难理解桌面环境和窗口管理器之间的区别是什么?

编辑:来自Jack Wallen的文章

基本上,Linux桌面可以包括三个层次:
X Windows - 这是一个基础,允许在显示器上绘制图形元素。X Windows构建了原始框架,允许窗口移动、键盘和鼠标交互,并进行窗口绘制。这对于任何图形化桌面都是必需的。
窗口管理器 - 窗口管理器是控制窗口的位置和外观的一部分。窗口管理器包括:Enlightenment、Afterstep、FVWM、Fluxbox、IceWM等。需要X Windows,但不需要桌面环境。
桌面环境 - 对于一些人来说,这一点可能会有些模糊。桌面环境包括一个窗口管理器,并在此基础上构建。桌面环境通常是一个比窗口管理器更完全集成的系统。需要同时安装X Windows和窗口管理器。
桌面环境的例子包括GNOME、KDE、Cinnamon、Xfce等。

是的,但重点应该放在角色不再明确分工的方面,自从80年代末以来就一直如此。那种仅凭"Motif"一词就能说清楚一切的日子已经过去了。例如,现在我们有了合成器和窗口装饰器这两个含混不清的角色。当Compiz与MATE"集成"时,它又在哪里呢? - tgm1024--Monica was mistreated
7个回答

窗口管理器负责管理您的窗口。它会在内容周围添加窗口装饰,包括最小化或关闭按钮。它允许调整窗口大小和移动窗口,并决定哪个窗口位于顶部。
Metacity和Compiz是今天的两个例子,而twm和fvwm可能会被像我这样的老人记得。
桌面环境为您提供全面的用户体验。它具有面板、系统菜单、启动器和状态小程序。当然,它需要一个窗口管理器来管理窗口。它可能提供默认的文件浏览器和查看器。为了简化操作,它甚至可能包含默认的编辑器、终端程序,甚至电子邮件客户端,所有这些都被设计成外观相似并能够协同工作。
GNOME、XFCE和KDE目前是最知名的桌面环境。

7任务栏(窗口列表)是属于窗口管理器还是桌面环境的一部分? - Dan Dascalescu
我不认为将其严格区分是真正有用的。亲爱的老fvwm自带了几个小部件(其中包括分页器和窗口列表),但我不会把fvwm称为除了窗口管理器之外的任何东西。另一方面,Gnome或Unity的任务栏已经不再是窗口管理器的一部分了。 - MPi

什么是窗口管理器?

窗口管理器是一种软件,用于管理窗口,允许打开、关闭、调整大小和移动窗口。它还能向用户呈现菜单和选项。它控制用户图形界面的外观和感觉。在Linux或BSD上,你有选择的余地。你可以自由选择任意数量的窗口管理器,从轻巧简洁的(占用内存和CPU较少)到功能丰富的大型窗口管理器。大约有17个“主流”窗口管理器,至少还有70个其他窗口管理器。

以下是一些较受欢迎的窗口管理器的简短列表:

  • fvwm2
  • twm
  • mwm
  • wm2
  • AfterStep
  • Enlightenment
  • WindowMaker
  • IceWM
  • Sawfish
  • Blackbox
  • Fluxbox
  • 以及MetaCity

如果你想找一个列出所有窗口管理器的很好的网站,请尝试www.plig.org/xwinman/

什么是桌面环境?

桌面环境(DE)通常依赖于窗口管理器,并添加了许多功能,包括面板、状态栏、拖放功能以及一套集成的应用程序和工具。实际上,用户对操作系统的意见通常基于一个因素:桌面环境。当然,DE只是操作系统的一小部分,在Linux和Unix系统中,窗口管理器和/或DE可以被替换或高度定制,而不会违反任何最终用户许可协议。
Unix/Linux最受欢迎的桌面环境有:
- GNOME - KDE - CDE - XFce 当然还有其他选择。
来源链接:Source (Archived)

第一个链接坏了,请修复一下。 - evaristegd
1@evaristegd 真的不在我的控制范围之内。无论如何,这个答案已经足够完整了。链接只是附加说明。此外,读完答案后,人们可以在互联网上查找,对两者之间的区别有一个相当好的概念,并获得足够的背景知识来进一步阅读相关内容。 - zeal

我会尽量简洁地解释一下。以Ubuntu为例:
- Compiz/Metacity(或KWin、XFWM)是窗口管理器。它们的作用是绘制窗口、边框、按钮等。 - Gnome(或KDE、XFCE)是桌面环境,因为除了窗口管理器外,它们还包含登录界面、面板、系统托盘以及一些工具来配置和调整设置。

从维基百科上的图片和文字对于我在面对那些概念时感到困惑时非常有帮助。显示服务器桌面环境

enter image description here


好答案,因为它提供了如今有效运用的例子,与过去的回答形成鲜明对比。 - mathway

在区分它们方面并没有明确的定义,但是有着一些明显的模式。

窗口管理器(WM)的经典功能

  • 控制窗口的位置和大小,以及重新定位和调整大小。
    • 图层 —— 一些窗口位于顶层,一些位于底层,一些是停靠窗口等等。
    • 通过堆栈平铺算法来定位。
  • 虚拟桌面(也称为工作区)。
  • 关闭、最大化、最小化(也称为缩小为图标)、提升、降低等窗口操作。
  • 焦点 —— 确定哪个窗口接收键盘输入。
  • 装饰 —— 标题栏和标题按钮(可选,例如在Dwm和Spectrwm中可能不存在)。

桌面环境(DE)的经典功能

有人会提到菜单(例如Windows的“开始菜单”)、任务栏和窗口列表,但是举个例子,尽管Icewm具备这些功能,它只是一个窗口管理器(WM),而不是一个桌面环境(DE)。
这是因为桌面环境的一个基本特点是它们自带一套通用的图形用户界面应用程序,例如文件管理器、图像查看器、日历等等。
此外,桌面环境还提供了一套用于配置的图形界面实用工具,不仅可以配置桌面环境本身,还可以配置通过命令行界面(CLI)控制的系统参数。例如:
- 键盘布局可以通过setxkbmap命令行实用工具进行设置。但是桌面环境提供了一个图形界面来管理键盘布局,这样用户就不必学习或烦恼于命令行语法。 - 电源设置(屏幕自动关闭时间、电池通知)。 - 区域设置(时区、语言)。 - 用户管理。 - 显示设置(背景、分辨率)。
证据和参考资料
你不需要相信我,只要看一下Ubuntu软件仓库中的一些软件包依赖关系就可以了。
  • KDE 包括 kmailmuon(软件中心)、kate(编辑器)、juk(音乐播放器)、gwenview(图像查看器)、systemsettings(推荐)、dolphin(文件管理器)。

  • XFCE 包括 thunar(文件管理器)、orage(日历)、xfce4-settings

  • GNOME 包括 shotwell(图像查看器)、libreofficegnome-screenshot,以及通过 gnome-core 依赖关系提供的其他一些软件: nautilus(文件管理器)、gnome-software(软件中心)、baobab(磁盘使用情况)、gnome-control-center(设置)。

并将它们与窗口管理器进行对比 - I3, Xmonad, Icewm, Bspwm —,它们的依赖关系是系统库,除了旧的、经典的 x11-utils 之外,并没有任何 GUI 程序。

结论

桌面环境(DEs)比窗口管理器(WMs)更“重”。

从某种意义上说,桌面环境作为一个宝贵的桥梁,帮助那些从 Windows/Mac 迁移到 GNU/Linux 的人,他们通常非常依赖图形界面,而 GNU/Linux 的世界在历史上更加面向命令行界面。

这就是为什么一些高级用户称桌面环境为“臃肿”的原因。从他们的角度来看,它包含了许多通过命令行轻松实现的任务所需的图形界面。而且为什么桌面环境会提供一整套默认程序呢?这样的用户想要构建自己的工具集,并且可以轻松地做到;他们只需要一个窗口管理器来执行基本和必不可少的窗口操作。
不过,不要让势利眼的人把你吓跑。使用你最舒适并能完成工作的工具。如果你好奇并想了解底层发生了什么以及如何处理命令行界面,你可能会慢慢远离桌面环境。

有人知道一个简单的脚本,能够输出:窗口管理器、桌面环境、合成器,都在一行里。这是我在其他地方找到的一个使用env的脚本:printf 'Desktop: %s\nSession: %s\n' "$XDG_CURRENT_DESKTOP" "$GDMSESSION" 我猜现在(2023年末)有太多衍生的DEs和WMs,我们Linux迷们有点跟不上了吧? 这就是为什么我在寻找一个脚本,告诉我有没有DE在运行;如果有DE在运行的话,我应该期望找到哪些“堆栈”应用,比如xrandr、dconf-editor等。 - undefined
gsettings可执行文件的存在是否证明我正在运行X而不是Wayland?Cinnamon是Gnome的一种“风格”吗?对于所有初学者的问题,我很抱歉! - undefined

XFCE网站对XFCE桌面环境的组件有一个相当不错的解释(其中之一是窗口管理器):
Xfce包含一些核心组件,用于满足你对桌面环境的最基本需求:
窗口管理器: 负责在屏幕上放置窗口,提供窗口装饰,并管理工作区或虚拟桌面。
桌面管理器: 设置背景图像,并提供根窗口菜单、桌面图标或最小化图标以及窗口列表。
面板: 切换打开的窗口,启动应用程序,切换工作区和菜单插件以浏览应用程序或目录。
会话管理器: 控制桌面的登录和电源管理,并允许您存储多个登录会话。
应用程序查找器: 按类别显示系统中安装的应用程序,以便您可以快速找到并启动它们。
文件管理器: 提供基本的文件管理功能和独特的实用工具,如批量重命名器。
设置管理器: 用于控制桌面的各种设置,如键盘快捷键、外观、显示设置等工具。
链接:https://www.xfce.org/about

IMHO(就我个人而言),桌面环境这个术语源自窗口管理器。桌面环境是一套软件/工具,用于构建现今复杂的人机界面,而窗口管理器仅用于创建简单的图形界面(我还记得1995年Silicon Graphics工作站上的XWindows :))。
祝好, Vincenzo