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
DM的第二个优点是其可定制性。从颜色到欢迎界面,一切都可以定制。例如,要自定义 lightdm 登录管理器,您需要编辑/etc/lightdm/lightdm.conf
。
要查看默认显示管理器,只需运行以下命令:
cat /etc/X11/default-display-manager
窗口系统
窗口系统是 Linux 图形用户界面 (GUI) 的核心。它决定了屏幕上需要绘制什么以及如何绘制。在这篇博文中,我们将讨论最流行的窗口系统:X Window System,也称为X或X11,我将在下文中继续使用这个名称。
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
-
Host Name
:物理连接的计算机名称(显示)。如果此部分留空,则默认为当前计算机。主机名可以是计算机的节点名称、IP 地址或空白。 -
Display Number
:特定设备可能连接了多台显示器。此字段指定要连接的显示器。 -
Screen Number
:每个显示器都有多个窗口。此字段表示要显示到哪个窗口。
此连接字符串存储在DISPLAY
Linux 的环境变量中,要查看要输出到哪个显示器,只需运行以下命令:
echo $DISPLAY
要在极简tty上启动 GUI ,只需在终端中运行以下命令:
startx
此命令是专门用于初始化 X11 的工具的一部分xinit
。如果您还没有安装它,可以运行以下命令来安装它:
sudo apt install xinit
窗口管理器
窗口管理器是一个特殊的客户端应用程序,它控制 X 显示器的几何形状、外观、坐标和图形属性。它还负责重新排列堆栈中的窗口并调整其大小。一些常用的窗口管理器包括:dwm、i3、herbstluftwm、awesome、openbox 等。
窗口管理器还提供客户端装饰,例如标题栏、按钮等。请注意,许多gtk应用程序都有内置客户端装饰,因此不需要窗口管理器(例如:firefox、gedit)。
Linux 社区多年来开发了许多独立的窗口管理器。越来越多的人放弃完整的桌面环境,转而使用窗口管理器,原因如下:
- 不再臃肿,只包含基本必需品
- 速度更快,因此效率更高
- 高度可定制
切换窗口管理器就像执行以下命令一样简单:
sudo apt install dwm
echo "exec dwm" > ~/.xsession
如前所述,显示管理器运行该.xsession
脚本。exec dwm
在上述脚本中添加命令,指示DM在登录后立即运行 dwm 窗口管理器。
桌面环境
桌面环境很容易被称为窗口管理器的超集。实际上,它是一个捆绑的图形用户界面 (GUI),除了窗口管理器之外,还包含许多功能,包括壁纸、工具栏、图标和桌面小部件。它是一个功能齐全的图形用户界面 (GUI)。例如,gnome、XFCE、KDE 等。
结论
这篇博客深入探讨了窗口系统和窗口管理器的工作原理,以及如何看待你逐渐喜爱的 GUI。在本系列的后续部分中,我将尝试各种窗口管理器,并讨论以下内容:
- WM功能
- 安装和设置
- 实际功能
- 判决
如果您希望我添加一些额外的学习指标,或者想推荐一个窗口管理器,请留言。敬请期待后续内容✌️。
文章来源:https://dev.to/l04db4l4nc3r/the-linux-desktop-deep-dive-1jh3