Linux 桌面深度探索

2025-05-25

Linux 桌面深度探索

即使从纯粹的物质意义上来说,Linux 也确实具有很大的意义。

  • Linus Torvalds

在现有的软件设计实践导致整体混乱的世界中,特别是在内核和操作系统的情况下,Linux 社区提出了像用乐高积木搭建的城堡一样设计的软件。

对我来说,Linux 最棒的地方在于它独特的“简单复杂”“复杂简单”的可定制性。Linux 的一切都是模块化的,以用户为中心。各个齿轮像一台运转良好的机器一样协同工作。它总是能带给我惊喜。

Linux 桌面环境就是这样一个可插拔的 GUI 层,它存在于浩瀚的沉积之中。它给人的感觉就像一个真正关心用户自由的系统,就像一个拥有个性的蜂巢思维。这正是促使我进行一系列“窗口管理器切换”的动机。

典型的 Linux 桌面由以下活动部分组成:

典型的层次结构如下所示:

替代文本

在介绍每个组件之前,让我们先看看没有任何图形用户界面的 Linux 系统是什么样子。

Linux 系统启动时,默认会生成 8 个tty。TTY<Ctrl> + <Alt> + [1-8]本质上指的是一个没有任何 GUI 的终端控制台。您可以通过按 来访问这些控制台。例如,按<Ctrl> + <Alt> + 1将显示以下屏幕:

替代文本

第 7 个 tty 实际上使用显示管理器加载 GUI ,我们将在下一节中讨论。


显示管理器

在 Linux 中,启动过程结束后会加载显示管理器(也称为登录管理器)。它会加载一个身份验证屏幕,类似于 telnet,提示输入用户名和密码。它的主要功能是处理身份验证和管理用户会话。它还会加载为机器配置的窗口系统,并通过运行.xsession脚本来实现,该脚本用于设置初始客户端(我们将在下一节中介绍什么是 X Client)。

替代文本

例如lightdm,它适用于许多 Linux 系统,并且无疑是目前功能最丰富的显示管理器之一。其他一些显示管理器包括gdm,它是 gnome 的显示管理器,以及用于 X11 的xdm(我们稍后会讲到)。

显示管理器最大的好处在于,你不必使用系统预装的显示管理器。运行新的显示管理器非常简单,只需运行以下命令:



sudo systemctl disable gdm
sudo apt install lightdm
sudo systemctl enable lightdm


Enter fullscreen mode Exit fullscreen mode

DM的第二个优点是其可定制性。从颜色到欢迎界面,一切都可以定制。例如,要自定义 lightdm 登录管理器,您需要编辑/etc/lightdm/lightdm.conf

要查看默认显示管理器,只需运行以下命令:



cat /etc/X11/default-display-manager


Enter fullscreen mode Exit fullscreen mode

窗口系统

窗口系统是 Linux 图形用户界面 (GUI) 的核心。它决定了屏幕上需要绘制什么以及如何绘制。在这篇博文中,我们将讨论最流行的窗口系统:X Window System,也称为XX11,我将在下文中继续使用这个名称。

X11 在 Linux 中使用网络方式实现 GUI。它由以下元素组成:

替代文本

  • X Server:它是一个与硬件交互并控制显示以绘制方框和按钮的程序。每个 X 服务器都针对特定的显卡构建(它具有硬件依赖性)。请注意,X11 采用的是客户端-服务器架构的翻转视图。通常,在这种架构中,服务器远程运行,但在 X11 中,服务器实际上在主机上运行。

  • X Client:它是一个使用 X 服务器在特定屏幕上显示自身的程序,例如:xclock、xterm、xcalc。X11 的最大优点在于,它彻底改变了人们对 GUI 的理解,X 客户端和服务器无需位于同一台机器上。它的本质含义是,我可以从我的机器发送命令,在另一台机器上显示特定程序,反之亦然。这太酷了!

  • Window Manager:我们将在下一节讨论WM 。

替代文本

X 客户端和 X 服务器使用相同的语言,并通过 X 协议相互通信。连接字符串如下所示:



hostname:displaynumber:screennumber


Enter fullscreen mode Exit fullscreen mode
  • Host Name:物理连接的计算机名称(显示)。如果此部分留空,则默认为当前计算机。主机名可以是计算机的节点名称、IP 地址或空白。

  • Display Number:特定设备可能连接了多台显示器。此字段指定要连接的显示器。

  • Screen Number:每个显示器都有多个窗口。此字段表示要显示到哪个窗口。

此连接字符串存储在DISPLAYLinux 的环境变量中,要查看要输出到哪个显示器,只需运行以下命令:



echo $DISPLAY


Enter fullscreen mode Exit fullscreen mode

要在极简tty上启动 GUI ,只需在终端中运行以下命令:



startx


Enter fullscreen mode Exit fullscreen mode

此命令是专门用于初始化 X11 的工具的一部分xinit。如果您还没有安装它,可以运行以下命令来安装它:



sudo apt install xinit


Enter fullscreen mode Exit fullscreen mode

窗口管理器

窗口管理器是一个特殊的客户端应用程序,它控制 X 显示器的几何形状、外观、坐标和图形属性。它还负责重新排列堆栈中的窗口并调整其大小。一些常用的窗口管理器包括:dwm、i3、herbstluftwm、awesome、openbox 等。

替代文本

窗口管理器还提供客户端装饰,例如标题栏、按钮等。请注意,许多gtk应用程序都有内置客户端装饰,因此不需要窗口管理器(例如:firefox、gedit)。

Linux 社区多年来开发了许多独立的窗口管理器。越来越多的人放弃完整的桌面环境,转而使用窗口管理器,原因如下:

  • 不再臃肿,只包含基本必需品
  • 速度更快,因此效率更高
  • 高度可定制

切换窗口管理器就像执行以下命令一样简单:



sudo apt install dwm
echo "exec dwm" > ~/.xsession


Enter fullscreen mode Exit fullscreen mode

如前所述,显示管理器运行该.xsession脚本。exec dwm在上述脚本中添加命令,指示DM在登录后立即运行 dwm 窗口管理器。


桌面环境

桌面环境很容易被称为窗口管理器的超集。实际上,它是一个捆绑的图形用户界面 (GUI),除了窗口管理器之外,还包含许多功能,包括壁纸、工具栏、图标和桌面小部件。它是一个功能齐全的图形用户界面 (GUI)。例如,gnome、XFCE、KDE ​​等。

替代文本


结论

这篇博客深入探讨了窗口系统和窗口管理器的工作原理,以及如何看待你逐渐喜爱的 GUI。在本系列的后续部分中,我将尝试各种窗口管理器,并讨论以下内容:

  • WM功能
  • 安装和设置
  • 实际功能
  • 判决

如果您希望我添加一些额外的学习指标,或者想推荐一个窗口管理器,请留言。敬请期待后续内容✌️。

文章来源:https://dev.to/l04db4l4nc3r/the-linux-desktop-deep-dive-1jh3
PREV
创作你的第一个 CSS 艺术作品 😍
NEXT
2022 年寻找远程工作