![用户界面子系统、它们的组件和职责是什么?](https://linux22.com/image/264/%E7%94%A8%E6%88%B7%E7%95%8C%E9%9D%A2%E5%AD%90%E7%B3%BB%E7%BB%9F%E3%80%81%E5%AE%83%E4%BB%AC%E7%9A%84%E7%BB%84%E4%BB%B6%E5%92%8C%E8%81%8C%E8%B4%A3%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我试图了解负责用户界面的不同子系统、引用它们的术语以及它们的结构;到目前为止我知道有:
在顶层:
台式机? (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 没有很多环境变量。这些通常仅适用于终端后面的外壳。但是,您可以运行
set
并env
了解设置的内容。 - 不确定“主菜单”作为子系统或子系统的组件是什么意思。菜单是窗口管理器的一部分。
我已经提到了一些流行的桌面管理器和窗口管理器。使用 Google 可以找到更多信息。
根据您的操作系统,可能有一个 ASCII 配置文件定义了您的首选桌面。例如,在 Debian GNU/Linux 上,这是在/etc/X11/default-display-manager
config.php 中定义的。您还可以运行 'ps -ef | grep user',其中'user'是系统上某个用户的登录名,查看列出了哪些进程,以及运行的图形桌面。对我来说,这就是“元城市”。