在区分它们方面并没有明确的定义,但是有着一些明显的模式。
窗口管理器(WM)的经典功能
- 控制窗口的位置和大小,以及重新定位和调整大小。
- 图层 —— 一些窗口位于顶层,一些位于底层,一些是停靠窗口等等。
- 通过堆栈或平铺算法来定位。
- 虚拟桌面(也称为工作区)。
- 关闭、最大化、最小化(也称为缩小为图标)、提升、降低等窗口操作。
- 焦点 —— 确定哪个窗口接收键盘输入。
- 装饰 —— 标题栏和标题按钮(可选,例如在Dwm和Spectrwm中可能不存在)。
桌面环境(DE)的经典功能
有人会提到菜单(例如Windows的“开始菜单”)、任务栏和窗口列表,但是举个例子,尽管Icewm具备这些功能,它只是一个窗口管理器(WM),而不是一个桌面环境(DE)。
这是因为桌面环境的一个基本特点是它们自带一套通用的图形用户界面应用程序,例如文件管理器、图像查看器、日历等等。
此外,桌面环境还提供了一套用于配置的图形界面实用工具,不仅可以配置桌面环境本身,还可以配置通过命令行界面(CLI)控制的系统参数。例如:
- 键盘布局可以通过setxkbmap命令行实用工具进行设置。但是桌面环境提供了一个图形界面来管理键盘布局,这样用户就不必学习或烦恼于命令行语法。
- 电源设置(屏幕自动关闭时间、电池通知)。
- 区域设置(时区、语言)。
- 用户管理。
- 显示设置(背景、分辨率)。
证据和参考资料
你不需要相信我,只要看一下Ubuntu软件仓库中的一些软件包依赖关系就可以了。
KDE 包括 kmail
、muon
(软件中心)、kate
(编辑器)、juk
(音乐播放器)、gwenview
(图像查看器)、systemsettings
(推荐)、dolphin
(文件管理器)。
XFCE 包括 thunar
(文件管理器)、orage
(日历)、xfce4-settings
。
GNOME 包括 shotwell
(图像查看器)、libreoffice
、gnome-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 的世界在历史上更加面向命令行界面。
这就是为什么一些高级用户称桌面环境为“臃肿”的原因。从他们的角度来看,它包含了许多通过命令行轻松实现的任务所需的图形界面。而且为什么桌面环境会提供一整套默认程序呢?这样的用户想要构建自己的工具集,并且可以轻松地做到;他们只需要一个窗口管理器来执行基本和必不可少的窗口操作。
不过,不要让势利眼的人把你吓跑。使用你最舒适并能完成工作的工具。如果你好奇并想了解底层发生了什么以及如何处理命令行界面,你可能会慢慢远离桌面环境。