显示服务器、显示管理器和窗口管理器有什么区别?

Linux 令人着迷的地方之一是能够查看不同的系统组件。 Linux 系统最重要的组件之一是桌面环境。 它允许您通过提供多种功能(例如登录、启动应用程序、显示面板等小部件等)来充分利用您的计算机。

因此,它是一个复杂的软件。

在这里,我们将通过解释桌面环境中三个最重要的组件来消除这种复杂性:显示服务器、窗口管理器和登录管理器。

1. 显示服务器

显示服务器位于桌面环境的基础上。 显示服务器的主要工作是处理低级绘图功能,这意味着它直接绘制到屏幕上。 其他图形程序不直接在屏幕上绘制; 相反,他们将绘图请求发送到显示服务器,显示服务器为他们在屏幕上绘图。

简而言之,显示服务器为应用程序提供像素访问权限。 因此,所有需要像素访问的应用程序都将与显示服务器通信。 例如,如果一个应用程序想要创建一个窗口,它们会请求显示服务器创建该窗口。 其他 example 需要像素访问的应用程序是屏幕录像机,它们通过显示服务器提供的 API 获取屏幕数据。

任何依赖于显示服务器的应用程序都称为客户端。 显示服务器负责管理其客户端和硬件设备之间的通信。 它向其客户端发送键盘和鼠标事件的信号。

显示服务器还负责绘制鼠标指针并控制其位置。

X11 和 Wayland 是显示服务器的两个主要选项。 X11 比 Wayland 更老。 事实上,Wayland 被开发为 X11 的继任者。 但是,X11 仍然在 Linux 发行版中广泛使用。

上述概念适用于 X11 和 Wayland。 但是,他们与客户沟通的方式存在重大差异。 Wayland 客户端比 X11 客户端更加孤立。 因此,Wayland 被认为比 X11 更安全。

如果您打算切换到 Wayland,您可能会考虑其他差异,但在大多数情况下,您不必关心这些差异。 这是因为应用程序开发人员使用支持 X11 和 Wayland 的高级工具包(如 Gtk+ 和 Qt)。 GNOME 和 KDE 也可以与 X11 和 Wayland 一起使用。

在了解了什么是显示服务器以及它的作用之后,让我们继续下一个组件。

2. 窗口管理器

窗口管理器的功能(顾名思义)是管理打开的窗口。 窗口管理涉及控制窗口的大小及其位置(根据您或应用程序的要求)。 因此,每当您开始拖动窗口或调整其大小时,窗口管理器都会负责处理您的请求。

请记住,要拖动窗口,您只需单击其标题栏,而要调整大小,请单击并拖动其边框。 这将我们带到窗口管理器的下一个功能,即在窗口周围绘制装饰(标题栏和边框称为窗口装饰)。

你可能会问,为什么显示服务器不处理窗口管理? 嗯,确实如此。 实际上,窗口管理器通过与显示服务器通信来完成它们的工作。 由于控制窗口和绘制它们的装饰需要像素访问,它们需要与显示服务器通信。 所以窗口管理器只是指示显示服务器,显示服务器做实际的操作。

窗口管理器可能具有的另一个重要特性是窗口合成。 如果它具有此功能,则称为窗口合成器。 这使应用程序能够做一些很酷的事情,比如允许透明度、模糊、绘制窗口阴影、在窗口移动/最小化/最大化时为窗口设置动画,以及其他视觉效果。

窗口管理器示例

有很多可用的选项(不像显示服务器,只有两个选项)。 其中最受欢迎的是:

  • Kwin(与 KDE 一起提供)。
  • Mutter(与 GNOME 一起提供)。
  • Xfwm(Xfce 的窗口管理器)。
  • 松饼(肉桂桌面的咕哝叉)。

还有许多其他选项可用,有些是桌面环境的一部分,有些是作为单个软件包开发的。 您甚至可以单独使用窗口管理器而不是完整的桌面环境。

某些桌面环境将允许您使用第三方窗口管理器。 为了 example,您可以选择将 Xfce 与 kwin 一起使用。 虽然 GNOME 和 Cinnamon 不支持第三方窗口管理器(对于 example 如果你试图用另一个窗口管理器强制替换 Cinnamon 会话中的松饼,面板将消失)。

现在您了解了窗口管理器,让我们转到下一个组件。

3. 登录管理器(或显示管理器)

登录管理器是第一个显示为您提供用户列表的图形程序,以便您选择一个并登录。 它还使您可以选择所需的桌面环境。 这使您只需注销、选择另一个桌面环境并再次登录即可在桌面环境之间切换。 这就是登录管理器被称为显示管理器的原因(不要与显示服务器混淆)。

登录管理器通过查看来识别当前安装的桌面环境 /usr/share/xsessions 目录。 该目录包含几个 。桌面 文件。 每个文件对应于当前安装的桌面环境之一。

周围也有很多登录管理器。 最受欢迎的是:

  • Gdm(GNOME 显示管理器)。
  • Kdm(显示管理器)。
  • lightdm(许多桌面环境和 Linux 发行版都带有 lightdm,因为它非常可定制和灵活)。

上述三个组件是任何桌面环境中最重要的组件。 这意味着为了拥有一个功能强大的图形环境,您至少应该安装这些软件包。 但是,完整的桌面环境随具有更具体工作的各种其他软件包一起提供。

桌面环境的其他常见组件

除了上述组件之外,您使用的桌面环境可能还包含以下软件包:

  • 壁纸管理器:负责设置桌面上的壁纸。
  • 桌面文件管理器实例:负责显示桌面图标,这是安装在系统上的文件管理器的一部分。 例如,nautilus 文件管理器有“nautilus_desktop”,nemo 有“nemo_desktop”。
  • 屏幕锁定器:它会在您的电脑闲置一段时间后锁定您的电脑。
  • 网络管理器:网络管理器管理您的互联网连接并自动在 Wi-Fi 和有线连接之间切换。 该程序本身不会向您的桌面添加任何视觉元素,但您的桌面环境必须为它实现了一个 GUI,可以从面板或其他地方访问。
  • 通知守护进程:当应用程序想要显示通知时,它会将其发送到通知守护进程以显示它。
  • Policy Kit 身份验证代理:这就像一个 GUI sudo. 当您执行需要 root 权限的操作(例如安装软件或应用更新)时,此应用程序会弹出。
  • 还有许多其他人。

请注意,设置墙纸和显示桌面图标由两个单独的应用程序处理。 此外,完整的桌面环境还附带了许多超出本文范围的其他软件包。

了解系统的内部结构

对于 Linux 用户,了解其桌面环境的组件对于故障排除和修复问题至关重要。 如果您决定构建自己的桌面环境,这些知识也可能会掌握。