GUI 的组件在 Linux 中如何工作?

GUI 的组件在 Linux 中如何工作?

至少有几个基本组成部分:

-server (to talk to drivers and listen for input)
-desktop environment (?)
-windows manager (manages apps boarders, size, position, etc) 
-other polishing apps (menus, clocks, icons)

那么什么可以追踪鼠标的位置和其他交互活动呢?

如果其中一些组件丢失,会发生什么情况,比如我在没有窗口管理器或桌面环境的情况下运行 Firefox,它会在没有鼠标的情况下全屏运行吗?

我如何从终端完全启动和停止 GUI?

谢谢

答案1

鼠标光标由图形服务器管理——客户端接收输入事件,但不需要自行绘制指针。

窗口也是如此——一般的“多窗口”概念是核心 X11 协议的一部分,因此您仍然可以在不使用窗口管理器的情况下在 X11 中运行应用程序,但它们将没有边框,您无法移动或调整它们的大小。默认的“无 WM”焦点模式是焦点跟随鼠标。

(在 Wayland 中,窗口管理器与图形服务器是相同的进程。此外,在大多数 Wayland 环境(甚至某些 X11 环境,如 GNOME 3)中,窗口装饰通常由客户端自己绘制,因此线条有点模糊。)


“桌面环境”不是一个组件。它描述了一个收藏组件 – 除其他外,DE 还包括:

  • 一个窗口管理器和一些 shell UI(例如桌面、面板等)——这可能是一个单独的进程,如 GNOME 3 或 e17 中一样,或者完全彼此独立,如 Xfce 中一样;
  • 也许有一个设置管理器(如 gnome-settings-daemon)用于执行各种任务,如电源设置或显示热插拔;
  • 和一个会话管理器来实际启动一切——这是由 DM 或 startx 启动的“初始”进程,终止它会导致硬注销。

此外,DE 还有一组基本应用程序 - 文件管理器、终端、文本编辑器、系统设置;您会在 Windows 的“附件”下看到这些内容。


有两种启动图形服务器的方式——通过显示管理器或手动。

常见的显示管理器有 GDM、LightDM、SDDM、KDM、Xdm – 它们的主要任务是自动检测何时可以启动图形服务器(即显示器),并且通常还会显示图形登录提示。显示管理器本身是通过service或管理的系统服务systemctl

手动方法是运行startx,它将启动 Xorg 以及文件中列出的所有客户端.xinitrc(可以是 DE 的会话管理器,也可以是普通的旧 WM)。

(Xorg 可以完全手动启动但不会做任何有用的事情;由于它占据了整个屏幕,所以您必须从其他地方启动初始客户端。)

相关内容