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

Linux 的迷人之处之一是能够查看不同的系统组件。Linux 系统最重要的组件之一是桌面环境。它通过提供登录、启动应用程序、显示面板等小部件等多种功能,让您可以充分利用计算机。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Kwin(与 KDE 一起提供)。
  • Mutter(随 GNOME 一起提供)。
  • Xfwm(Xfce 的窗口管理器)。
  • 松饼(肉桂桌面的嘟嘟声)。
  • 还有许多其他选项可用,有些是桌面环境的一部分,有些则是作为单个包开发的。您甚至可以单独使用窗口管理器而不是完整的桌面环境。

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

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

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

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

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

  • Gdm(GNOME 显示管理器)。
  • Kdm(Kde 显示管理器)。
  • lightdm(许多桌面环境和 Linux 发行版都带有 lightdm,因为它非常可定制且灵活)。
  • 上述三个组件是任何桌面环境中最重要的组件。这意味着为了拥有功能强大的图形环境,您至少应该安装这些软件包。但是,完整的桌面环境附带了具有更具体作业的各种其他软件包。

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

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

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

    标签: