用户界面子系统、它们的组件和职责是什么?

用户界面子系统、它们的组件和职责是什么?

我试图了解负责用户界面的不同子系统、引用它们的术语以及它们的结构;到目前为止我知道有:

在顶层:

台式机? (kde、gnome 等)

然后我们有:

  • 显示管理器(也称为桌面管理器或桌面环境)
  • 窗口管理器
  • 还要别的吗?

我正在将其设为社区 wiki,我希望它成为 *所有(从用户角度)了解有关 Linux 用户界面子系统的中心位置;我想知道的是每个组件的组成部分是什么,每个组件的职责是什么,即我想知道以下内容:

  • 到底是什么负责全局快捷键,当我打开“运行应用程序”对话框时,谁在执行该操作,当我按下某个键显示桌面、运行终端、最大化窗口等时,谁在捕获并将其发送到右侧窗口;
  • 谁负责绘制桌面、工作区等。
  • 哪些环境变量可以为我提供有关这些组件的信息
  • “主菜单”是一个子系统,还是子系统的一个组件?

最好能编制一份最流行的桌面/子系统列表,每个桌面/子系统都运行哪些桌面/子系统,您可以混合和匹配桌面/桌面环境/窗口管理器等吗?

最后,如何判断系统上实际运行(活动?)的桌面/子系统,不同的用户可以拥有不同的子系统吗?

答案1

首先,显示管理器(或DM,例如xdm、gdm、kdm)与桌面环境(或DE,例如GNOME、KDE、XFCE)不同。

显示管理器负责图形登录,并决定(或让您选择)运行哪个会话。或者什么会议*s* 如果您选择“切换用户”菜单选项。

桌面环境基本上是程序(显示管理器、窗口管理器、会话管理器、面板、配置工具等)和库(例如 Gtk)的集合,旨在提供一致且集成的工作环境。

窗口管理器管理窗口:放置窗口的位置、移动窗口、调整窗口大小、最小化/最大化窗口、平铺窗口等。它还处理执行这些操作的快捷方式。在某些情况下,窗口管理器还绘制窗口的边框,在其他情况下,此任务是临时交给“窗口装饰器”的。

GNOME 中的“运行应用程序”对话框是 的一部分gnome-panel,但在另一个 DE 中它可能是环境的另一部分。

谁负责粉刷窗户等取决于;如果有一个“合成器”正在使用(通常是窗口管理器的一部分,例如在 Compiz 中),那么合成器会在屏幕上绘制窗口,否则(像过去一样)是 X-server 来做这件事。

主菜单由 gnome-panel 的一部分放在屏幕上,但使用的数据来自一堆文件/usr/share/applications/(可能与您家中的等效目录组合以进行个人更改)。这些文件具有由 FreeDesktop.org(不同桌面环境在通用基础设施上协作的平台)定义的结构,因此 GNOME 和 KDE 知道相同的程序(但仍然可以以不同的方式显示它们,并且在某些情况下优先考虑“本机”程序)超过“外国”的)。

是的,不同的用户可以使用不同的会话配置(甚至可以定义自己的会话配置)。在 GDM 中,尝试“会话”下拉菜单以获取可用选项。

此外,可以混合和匹配多个组件,但这有时会导致合作减少并失去工作方式的“平滑性”。一个众所周知的交换事物的例子当然是 Compiz,如果您想要精美的桌面效果,它可以取代 Metacity。但还有很多其他可能的改变。

答案2

桌面管理器主要管理您的硬件,而窗口管理器则管理您的软件。例如,电源管理、屏幕保护程序、系统性能、登录屏幕等均由桌面管理器管理。您的主题、窗口位置、小部件和图标集、字体等均由窗口管理器管理。

您可以在没有桌面管理器的情况下安装窗口管理器。登录虚拟终端,然后让登录脚本执行窗口管理器来启动“桌面”是很常见的。

桌面管理器有 GNOME、KDE ​​和 CDE。窗口管理器有 Metacity、Openbox、Enlightenment、Awesome 等。

直接回答您的一些问题:

  • 窗口管理器主要负责桌面键盘快捷键。
  • 窗口管理器负责绘制桌面、工作区、窗口的位置等,如前所述
  • GUI 没有很多环境变量。这些通常仅适用于终端后面的外壳。但是,您可以运行setenv了解设置的内容。
  • 不确定“主菜单”作为子系统或子系统的组件是什么意思。菜单是窗口管理器的一部分。

我已经提到了一些流行的桌面管理器和窗口管理器。使用 Google 可以找到更多信息。

根据您的操作系统,可能有一个 ASCII 配置文件定义了您的首选桌面。例如,在 Debian GNU/Linux 上,这是在/etc/X11/default-display-managerconfig.php 中定义的。您还可以运行 'ps -ef | grep user',其中'user'是系统上某个用户的登录名,查看列出了哪些进程,以及运行的图形桌面。对我来说,这就是“元城市”。

相关内容