Arch Linux install i3-wm

发布时间 2023-07-21 23:32:39作者: sha0dow

Arch Linux install i3-wm

简介

i3-wm 是一种动态的平铺式窗口管理器,它的设计目标是提供一个快速、简洁、可定制的桌面环境,适合开发者和高级用户使用。它有以下几个特点:

  • 它使用树形结构来管理窗口,可以灵活地分割、组合、切换窗口。
  • 它支持多种操作模式,类似于 vim,可以通过快捷键执行各种命令。
  • 它支持多显示器,可以在不同的输出设备上创建和移动工作区。
  • 它有丰富的生态系统,可以与其他桌面环境集成,或者使用第三方的工具来增强 i3-wm 的外观和体验。

i3-wm 可以在多数 Linux 发行版中安装,通常包名为 i3-wm 或 i3 的名称。安装后,可以通过 tty 或显示管理器来启动 i3-wm 环境。

说明一下在 i3 中经常遇到的 i3-wm 和 i3-gaps 含义:

  • i3-wm 是 i3 窗口管理器的官方名称,它是一个轻量级、快速且高度可定制的窗口管理器。"wm" 代表窗口管理器(Window Manager),这是它的主要功能。i3-wm使用平铺式窗口管理,意味着窗口默认以平铺的方式在屏幕上排列,不重叠。用户可以使用键盘快捷键来进行窗口的切换、移动和调整大小等操作,而不需要使用鼠标。
  • i3-gaps 是 i3 窗口管理器的一个分支,它在 i3-wm 的基础上增加了一个有趣的功能:窗口间的间隙。这意味着在 i3-gaps 中,窗口之间可以留有一些空隙,使得用户可以更好地区分窗口。这是 i3-gaps 与 i3-wm 之间的主要区别。在 i3-wm 中,窗口紧密排列,没有间隙;而在 i3-gaps 中,你可以通过配置增加窗口之间的间隙。这使得 i3-gaps 更受一些用户喜爱,尤其是那些喜欢自定义和视觉效果的用户。

相信你在网络上看到的说明大多数是这样,说点不一样的新消息:i3-gaps 被合并了 ? 具体内容 ? https://github.com/Airblader/i3

图形用户界面(GUI)

图形用户界面(GUI)中的三个概念:桌面环境(DE)、窗口管理器(WM)、显示管理器(DM)

  1. 桌面环境(DE):

    桌面环境是最上层的图形用户界面,为用户提供了一个集成的、直观的桌面体验。DE通常包含窗口管理器、文件管理器、面板、系统托盘、启动器、图标、主题、壁纸等元素,以及一系列预装的应用程序,如文本编辑器、终端仿真器、邮件客户端等。流行的桌面环境包括 GNOME、KDE Plasma、XFCE、Cinnamon 等。桌面环境为用户提供了一个全面的、易于使用的界面,适用于不同水平的用户。

  2. 窗口管理器(WM):

    窗口管理器是桌面环境的一个组成部分,负责管理图形界面中各个窗口的显示、移动、调整大小和关闭等操作。它负责处理窗口的外观、布局和交互,使用户可以通过鼠标和键盘与窗口进行交互。窗口管理器通常提供窗口标题栏、边框和控制按钮(最小化、最大化、关闭等),同时还支持窗口的层叠、平铺和堆叠等布局方式。一些流行的窗口管理器包括 Metacity、KWin、Openbox、i3 等。

  3. 显示管理器(DM):

    显示管理器是启动时出现的登录界面,它提供了一个用户登录到图形桌面环境的方式。当计算机启动时,显示管理器负责呈现一个登录屏幕,用户可以在该屏幕上输入用户名和密码,选择桌面环境,然后会话将启动并加载相应的桌面环境。显示管理器简化了用户登录过程,同时还支持多个用户账号。常见的显示管理器包括 GDM(GNOME Display Manager)、LightDM、SDDM(Simple Desktop Display Manager)等。

三者关系:

  • WM 是 DE 的一部分,负责处理窗口的布局、外观和交互。
  • DM 是用户登录到桌面环境的入口。它出现在计算机启动时,用户选择桌面环境后,DM 会加载相应的 DE 和 WM 相关程序。

重点:实际上非常奇妙的操作,我们可以在根本不需要 GNOME、KDE Plasma、XFCE 桌面环境下直接骚操作使用 i3-wm 窗口管理器 ?

安装

安装 i3-wm 窗口管理器并配置它需要一些步骤,但是我将尝试提供一个相对简单的方案。

  • 如果是完全没有接触 i3 的新人请一定按照下面安全安装,不要跳过任何步骤,否则可能会出现问题 ❗❗❗
  • 白板新手请忽略任何可选说法【水太深,你把握不住】,务必全部安装下面的软件包,不然报错你调试不出来的 ?

更新系统

在终端中执行以下命令,保障本地软件包数据库状态:

# 更新软件包数据库
sudo pacman -Sy

# 升级更新软件包,系统一两年没有更新建议使用下面的命令
sudo pacman -Syu

install i3-wm

执行以下命令安装 i3-wm 和一些常用的附加软件:

sudo pacman -S i3-wm i3status dmenu

以下是这些软件包的简要介绍:

  1. i3-wm 【必须】是一个高度可定制、动态瓦片式窗口管理器。它允许用户通过键盘快捷键来管理窗口,提高工作效率,特别适用于多显示器环境。
  2. i3status 【可选】是一个简单的状态栏生成器,它可以在 i3-wm 的栏上显示有关系统状态(如时间、电池状态、网络连接等)的信息。
  3. dmenu 【可选】是一个轻量级的动态菜单。它可以用于启动应用程序、执行命令或选择其他操作。在 i3-wm 中,dmenu 经常用来快速启动应用程序,因为它可以通过键盘进行交互。

注:在安装 i3-wm 时,会有一个选择是关于 ttf-font 字体的选择:1) gnu-free-fonts 2) noto-fonts 3) ttf-bitstream-vera 4) ttf-croscore 5) ttf-dejavu 6) ttf-droid 7) ttf-ibm-plex 8) ttf-liberation 下面是每种选择的含义和简要介绍:

  1. gnu-free-fonts:这是 GNU FreeFont 字体家族,包含多种字符集的开源字体。它提供了广泛的字符覆盖,适合多语言环境。
  2. noto-fonts:Noto 字体家族由 Google 开发,旨在提供广泛的字符支持,包括多种语言和符号。这些字体在显示各种文本时非常兼容和可读。
  3. ttf-bitstream-vera:Bitstream Vera 字体家族是一组开源的无衬线字体。虽然它的字符集较小,但在屏幕上显示文本时非常清晰。
  4. ttf-croscore: Croscore 字体家族由 Google 开发,是对早期的 Chrome OS Core 字体进行了修订和改进。它提供了开源的 Arial、Times New Roman 和 Courier New 等字体替代品。
  5. ttf-dejavu:DejaVu 字体家族是对 Bitstream Vera 字体的扩展和增强。它提供了更多的字符覆盖和样式,适用于多种语言和使用场景。
  6. ttf-droid:Droid 字体家族是由 Google 开发的一组用于移动设备的字体。它在移动设备上显示文本时表现良好。
  7. ttf-ibm-plex:IBM Plex 是由 IBM 设计的开源字体家族,提供了多种样式和字符支持。
  8. ttf-liberation:Liberation 字体家族是对 Microsoft Windows 字体(如 Times New Roman、Arial 和 Courier New)的开源替代品。它提供了类似于 Windows 字体的外观和感觉。

选择建议:

  • 如果你需要广泛的字符覆盖和多语言支持,推荐选择 noto-fontsgnu-free-fonts
  • 如果你喜欢清晰易读的字体,可以选择 ttf-dejavuttf-bitstream-vera
  • 如果你喜欢外观类似于 Windows 字体的字体,可以选择 ttf-liberationttf-croscore
  • 如果你对特定字体家族有偏好或有其他需求,可以根据个人喜好选择适合的字体包。

总体来说,选择字体主要取决于个人偏好和使用场景,当然你也可以默认 ?

Xorg

在使用 i3 窗口管理器时,需要 Xorg 作为其图形服务器,这是因为i3是一个基于 X Window System 的窗口管理器。

  • Xorg(通常称为 X Server 或 X)是一个开源的图形服务器,它是 X Window System 的实现之一。
  • X Window System 是一种图形用户界面(GUI)的基础架构,为Unix和类Unix系统提供了图形显示和用户输入处理的能力。

X Window System 最初由麻省理工学院(MIT)开发,其起源可以追溯到 1984 年。最早的版本称为 X10,后来发展为 X11。X10 是一个比较简单的系统,而X11 成为了更加通用和流行的版本。X Window System 的目标是将图形显示和用户输入处理从硬件和操作系统解耦,这样不同的图形应用程序就可以共享图形资源,而不需要重新实现图形相关的代码。这种解耦的设计使得 X Window System 在多用户、多任务和网络环境下非常有用,同时也使得它成为 Unix 和类 Unix 系统的主流图形界面。可以看看 ? https://farseerfc.me/zhs/compositor-in-X-and-compositext.html,当然好奇建议使用搜索引擎 ?

X.Org ? https://www.x.org/wiki/

sudo pacman -S xorg-server xorg-xinit xorg-apps

以下是这些软件包的简要介绍:

  1. xorg-server(也称为 X Server、X11 Server或简称为 Xorg)【必须】是一个开源的 X Window System 服务器,用于管理图形显示和用户输入。它是 Linux 和其他类 Unix 操作系统中广泛使用的图形服务器。
  2. xorg-xinit 【必须】是一个用于启动 X 服务器的脚本,它可以加载用户的 X11 配置文件(例如 .xinitrc)并启动所需的窗口管理器。
  3. xorg-apps 【可选】包含了一些基本的 X11 应用程序,如 xterm(终端模拟器)、xclock(时钟程序)等。这些应用程序对于图形环境下的测试和调试非常有用。

注:安装 xorg-server 或者 xorg 会有一个选择【没有经验直接回车】比如 1) xorg-bdftopcf 2) xorg-iceauth 3) xorg-mkfontscale 4) xorg-sessreg 5) xorg-setxkbmap 6) xorg-smproxy 7) xorg-x11perf 8) xorg-xauth 9) xorg-xbacklight 10) xorg-xcmsdb 11) xorg-xcursorgen 12) xorg-xdpy info 13) xorg-xdriinfo 14) xorg-xeu 15) xorg-xgamma 16) xorg-xhost 17) xorg-xinput 18) xorg-xkbcomp 19) xorg-xkbeud 20) xorg-xkbprint 21) xorg-xkbutils 22) xorg-xkill 23) xorg-x1satoms 24) xorg-xlsclients 25) xorg-xmodmap 26) xorg-xpr 27) xorg-xprop 28) xorg-xrandr 29) xorg-xrdb 30) xorg-xrefresh 31) xorg-xset 32) xorg-xsetroot 33) xorg-xvinfo 34) xorg-xwd 35) xorg-xwininfo 36) 这些工具用于配置、管理和显示 X11 窗口系统的不同方面,包括键盘布局、显示设置、窗口信息等。以下是这些软件包的简要介绍:

  1. xorg-bdftopcf:将 BDF 字体文件转换为 Portable Compiled Format (PCF) 字体文件的工具。
  2. xorg-iceauth:用于生成和管理 ICE (Inter-Client Exchange) 验证信息的工具,用于 X11 客户端之间的安全通信。
  3. xorg-mkfontscale:创建可缩放字体文件索引的工具,用于快速查找和缩放字体。
  4. xorg-sessreg:将 X11 会话注册到系统的 utmp/utmpx 数据库的工具,记录用户登录和注销的信息。
  5. xorg-setxkbmap:使用 X Keyboard Extension 设置键盘布局的工具,用于更改键盘映射。
  6. xorg-smproxy:允许不支持 X11R6 会话管理的 X 应用程序参与 X11R6 会话的 X11 会话管理代理。
  7. xorg-x11perf:用于测试和评估 X11 服务器性能的简单工具。
  8. xorg-xauth:X.Org 授权设置程序,用于管理 X11 认证令牌,允许其他用户访问 X11 会话。
  9. xorg-xbacklight:基于 RandR 的背光控制应用程序,用于调整笔记本电脑显示器的背光亮度。
  10. xorg-xcmsdb:用于 X Color Management System (CMS) 的设备颜色特性工具。
  11. xorg-xcursorgen:从 PNG 图像创建 X11 游标文件的工具。
  12. xorg-xdpyinfo:用于显示 X11 显示的信息的工具。
  13. xorg-xdriinfo:查询 DRI 驱动程序的配置信息的工具。
  14. xorg-xev:打印 X11 事件的内容,用于显示和监视 X11 事件。
  15. xorg-xgamma:更改显示器的 gamma 修正的工具。
  16. xorg-xhost:X 服务器访问控制程序,用于管理 X11 主机访问控制列表。
  17. xorg-xinput:配置 X11 输入设备(如鼠标、键盘)的小型命令行工具。
  18. xorg-xkbcomp:X 键盘描述编译器,用于编译 X11 键盘映射描述。
  19. xorg-xkbevd:XKB 事件守护程序,用于创建和管理 XKB 事件。
  20. xorg-xkbprint:生成 XKB 键盘描述的 PostScript 描述的工具。
  21. xorg-xkbutils:XKB 实用程序演示,用于管理 X11 键盘布局。
  22. xorg-xkill:通过 X 资源终止客户端的工具。
  23. xorg-xlsatoms:列出定义在服务器上的国际化 atoms。
  24. xorg-xlsclients:列出运行在显示器上的客户端应用程序。
  25. xorg-xmodmap:修改键盘映射和按钮映射的实用程序。
  26. xorg-xpr:从 xwd 打印 X 窗口转储的工具。
  27. xorg-xprop:用于显示窗口属性的实用程序。
  28. xorg-xrandr:用于 RandR 扩展的基本命令行界面。
  29. xorg-xrdb:X 服务器资源数据库实用程序。
  30. xorg-xrefresh:刷新 X 屏幕的所有或部分内容的工具。
  31. xorg-xset:用于设置 X 服务器用户偏好的实用程序。
  32. xorg-xsetroot:将根窗口背景设置为给定图案或颜色的经典 X 实用程序。
  33. xorg-xvinfo:打印与通过 X-Video 扩展访问的显示器相关联的视频适配器的功能。
  34. xorg-xwd:X 窗口系统图像转储实用程序。
  35. xorg-xwininfo:在 X 服务器上打印窗口信息的命令行实用程序。
  36. xorg-xwud:X 窗口系统图像还原实用程序。

这些工具可以帮助你管理和调整 X11 窗口系统的不同方面,特别适用于需要更深入了解和定制 X 窗口系统的用户和管理员。其实他们属于 xorg-apps 分组,如果想要详细了解 ? https://archlinux.org/groups/x86_64/xorg-apps/

配置

Xinitrc

xinitrc 文件(或称为 Xinitrc)是 X Window System(Xorg)启动时的配置文件,用于在启动 X 会话时运行一系列用户定义的命令或脚本。这个文件通常位于用户的主目录下,路径为 ~/.xinitrc

当你使用 startx 命令启动 X 会话时,Xorg 会查找并执行 ~/.xinitrc 文件中的内容。这样,用户可以根据自己的需求,配置和启动特定的应用程序、窗口管理器、桌面环境或其他命令行工具。这使得 Xorg 的启动变得高度可定制,因为用户可以根据自己的喜好和工作流程来决定启动会话时应该加载哪些程序。

编辑 Xinitrc 文件,使得在启动 X 时自动启动 i3-wm,使用以下命令:

echo "exec i3" > ~/.xinitrc

需要注意的是 ~/.xinitrc 文件的权限应该设置为可执行,以确保 Xorg 可以正确地执行其中的命令。如果你遇到启动 X 会话后什么都没有发生或遇到错误,可能是因为 ~/.xinitrc 文件的权限不正确。

实际上 Xinitrc 配置不只是这么简单,根据自己的喜好和需求配置才是 Xinitrc 真正的乐趣所在。如果你想要了解更多,可以查看官方文档 ? https://wiki.archlinux.org/title/Xinitrc

启动 i3-wm

现在你可以通过运行以下命令来进入 i3-wm 环境:

startx

如果一切顺利,i3-wm 就会启动,并展示一个简单的桌面。开始时,你可能会看到一些关于 i3-wm 的提示:

  • 第一个提示:问你是否在家目录创建 ~/.config/i3/config 配置文件,建议直接 Enter 选项。
  • 第二个提示:让你在 WinAlt 键之间选择一个作为 Mod 键,如果你是 Windows 操作系统使用虚拟机的话,建议选择 Alt 键防止 Win 键误触发 Windows 操作系统的快捷键。当然如果你实体安装的 Arch Linux,那么 Win 键就是最佳选择,因为不是 Windows 操作系统的话 Win 键就是一个没有用的键了。

重点:怎么退出 i3-wm 环境,使用 Mod + Shift + e 快捷键即可退出 i3-wm 环境。关于 Mod 键就看你上面选择的是哪个键了。完成以上所有步骤就已经完成 i3-wm 的安装。此时使用虚拟机的小伙伴,请拍一个快照 ✨

结束

关于后续配置,可根据个人喜欢自行配置,这里不再赘述。如果你想要了解更多可以查看下面链接:

当然因为每个人风格不同,配置选择也不尽相同,目前对于其它部件我个人还在挑选中。后续会分享一些自己的配置,如果你有好的配置也可以分享给我,我会在这里更新 ?