在这份超详细的指南中了解如何通过 i3 窗口管理器来自定义系统的外观和体验。你可能在网上（尤其是通过 r/unixporn 子区）看到过很多炫酷的截图，用户可以根据个人喜好自定义他们的桌面并与大家分享。这是因为 Linux 允许你自定义桌面体验的方方面面。而结果？就是比任何 Mac 或 Windows 系统更具视觉和感知效果。来看一下这个 ?看起来像一个 Linux Mint 系统吗？ ?但是你怎样才能做到这样呢？自定义你的 Linux 桌面外观是很困难的。答案就在于 窗口管理器。如果你能配置好窗口管理器，你就能自定义外观。在本指南中，我将引导你完成使用 i3 窗口管理器 进行基本配置。它是 Linux 上最好的窗口管理器之一。? “ 加料 Rice ” 是一个常用的词汇，用来指代在桌面上进行视觉改进和自定义。引用自 /r/unixporn （LCTT 译注：“加料”一词来自于购买便宜的亚洲汽车，并给它们安装售后零件，以让它更好地类似于赛车。）在遵循本指南之前，你需要了解以下内容：在本指南中，我将使用 Arch Linux 来演示步骤，但你可以使用你喜欢的任何发行版，结果也是一样的。请记住，本指南是 对 i3 进行“加料”定制的基础。在按照本指南进行操作后，你应该得到以下预期结果：? 为了节省你的时间，我已经在 GitHub 上上传了与本文相关的所有 i3 配置文件，你可以通过这些文件实现我们在本文中所期望的最终外观。下载 i3 配置文件首先，让我们开始安装 i3 窗口管理器。在 Linux 上安装 i3 窗口管理器基于 Ubuntu/Debian：sudo apt install xorg lightdm lightdm-gtk-greeter i3-wm i3lock i3status i3blocks dmenu terminator Arch Linux：sudo pacman -S xorg lightdm lightdm-gtk-greeter i3-wm i3lock i3status i3blocks dmenu terminator 当你完成安装后，使用以下命令启用 lightdm 服务：sudo systemctl enable lightdm.service 然后启动 lightdm 服务：sudo systemctl start lightdm.service 这将启动 lightdm 登录界面，并要求你输入用户名密码。如果你安装了多个桌面环境，你可以从选择菜单中选择 i3：当首次登录 i3 时，它会询问你是否要创建一个 i3 配置文件。按下回车键创建一个新的 i3 配置文件：接下来，它会询问你选择 Win 或 Alt 键哪个作为修饰键（mod）。我建议你选择 Win（或者 Super 键），因为大多数用户已经习惯将其用作快捷键：现在你可以开始使用 i3 窗口管理器了。但在我们开始定制之前，让我先介绍一下你如何使用 i3。i3 窗口管理器的按键绑定让我们从基础知识开始。窗口管理器的基本功能是将多个窗口水平和垂直地组合在一起，这样你就可以同时监视多个进程。结果是这样的：你可以使用以下按键绑定执行更多操作：按键绑定描述Mod + Enter打开终端。Mod + ←切换到左侧窗口。Mod + →切换到右侧窗口。Mod + ↑切换到上方窗口。Mod + ↓切换到下方窗口。Mod + Shift + ←将窗口移动到左侧。Mod + Shift + →将窗口移动到右侧。Mod + Shift + ↑将窗口移动到上方。Mod + Shift + ↓将窗口移动到下方。Mod + f将焦点窗口切换到全屏模式。Mod + v下一个窗口将垂直放置。Mod + h下一个窗口将水平放置。Mod + s启用堆叠式窗口布局。Mod + w启用选项卡式窗口布局。Mod + Shift + Space启用浮动窗口（针对焦点窗口）。Mod + 鼠标左键单击使用鼠标拖动整个窗口。Mod + 0-9切换到另一个工作区。Mod + Shift + 0-9将窗口移动到另一个工作区。Mod + d打开应用程序启动器（D 菜单）。Mod + Shift + q关闭焦点窗口。Mod + Shift + c重新加载 i3 配置文件。Mod + Shift + r重启 i3 窗口管理器。Mod + Shift + e退出 i3 窗口管理器。我知道按键绑定很多，但如果你每天练习它们，你很快就会习惯。如果你想知道，你可以根据需要更改按键绑定，后面的指南中我会分享如何做到这一点。现在，让我们来看看配置部分。在 Arch Linux 中启用 AUR如果你刚刚安装了 Arch Linux，可能还没有启用 AUR。这意味着你错过了 Arch Linux 最重要的特性。要 启用 AUR，你需要使用 AUR 包管理器。在这里，我将使用 yay。首先，安装 git：sudo pacman -S git 现在，克隆 yay 存储库并切换到 yay 目录：git clone https://aur.archlinux.org/yay-git.git && cd yay 最后，构建包：makepkg -si 还有其他一些 AUR 包管理器，比如 Paru，如果你想使用除 yay 之外的其他工具，你可以继续或者探索其他选项。更改 i3 窗口管理器的分辨率如果你使用虚拟机运行窗口管理器，可能会遇到问题，尤其是显示分辨率可能被锁定在 1024x768 上，就像我一样。因此，你需要执行以下命令，指定所需的显示分辨率：xrandr --output [显示名称] --mode [分辨率] 要找到已连接显示器的名称，你需要使用以下形式的 xrandr 命令：xrandr | grep -w 'connected' 在我的情况下，显示名称是 Virtual-1。因此，如果我想将分辨率更改为 1920*1080，我需要执行以下命令：xrandr --output Virtual-1 --mode 1920x1080 但这只是暂时生效。要使其永久生效，你需要在 i3 配置文件中进行更改。首先，打开配置文件：nano ~/.config/i3/config 通过按下 Alt + / 来在 nano 中 跳到文件末尾，并使用以下语法来永久更改显示分辨率：# 显示分辨率 exec_always xrandr --output [显示名称] --mode [分辨率] 结果应该是这样的：完成后，保存更改并退出 nano 文本编辑器。现在，使用 Mod + Shift + r 重新启动 i3 窗口管理器，以使你对配置文件所做的更改生效！在 i3 窗口管理器中更改壁纸默认情况下，i3 的外观比较陈旧，你可能想切换回之前的桌面环境。但是通过更改壁纸，你可以改变整个系统的氛围。在 i3 中有多种方式可以更改壁纸，但在这里，我将向你展示如何使用 feh 实用工具。首先，让我们从安装开始：对于基于 Arch 的发行版：sudo pacman -S feh 对于 Ubuntu/Debian 系的发行版：sudo apt install feh 安装完成后，你可以从互联网上下载你喜欢的壁纸。接下来，打开 i3 配置文件：nano ~/.config/i3/config 跳到文件的末尾，使用如下所示的 feh 命令：# 显示壁纸 exec_always feh --bg-fill /path/to/wallpaper 在我的情况下，壁纸位于 Downloads 目录中，所以我的命令如下：保存更改并退出 nano 文本编辑器。为了使配置文件的更改生效，使用 Mod + Shift + r 重新启动 i3 窗口管理器。我的效果如下：自定义 i3 锁屏界面默认情况下，如果你想锁定系统，你需要执行以下命令：i3lock 锁屏界面如下所示：下面，我将向你展示：如何创建自定义快捷方式以锁定 i3 会话如何更改锁屏界面的壁纸为了使锁屏界面更加美观，你需要使用 i3lock-color 包。但首先，你需要移除现有的 i3lock，因为它会与 i3lock-color 冲突：在 Arch Linux 上移除它：sudo pacman -R i3lock 对于 Ubuntu/Debian 用户：sudo apt remove i3lock 完成后，你可以使用 AUR 包管理器安装 i3lock-color：yay i3lock-color 如果你使用的是基于 Ubuntu 的系统，你需要从头编译它。你可以在他们的 GitHub 页面上找到 详细的说明。安装完成后，让我们创建一个新目录并创建一个新文件来存储锁屏界面的配置：安装好 i3lock-color 后，你可以创建一个新目录并创建一个新文件来存储锁屏界面的配置：mkdir ~/.config/scripts && nano ~/.config/scripts/lock 将以下文件内容粘贴到文件中，定义锁屏界面的样式：#!/bin/sh BLANK='#00000000' CLEAR='#ffffff22' DEFAULT='#00897bE6' TEXT='#00897bE6' WRONG='#880000bb' VERIFYING='#00564dE6' i3lock \ --insidever-color=$CLEAR \ --ringver-color=$VERIFYING \ \ --insidewrong-color=$CLEAR \ --ringwrong-color=$WRONG \ \ --inside-color=$BLANK \ --ring-color=$DEFAULT \ --line-color=$BLANK \ --separator-color=$DEFAULT \ \ --verif-color=$TEXT \ --wrong-color=$TEXT \ --time-color=$TEXT \ --date-color=$TEXT \ --layout-color=$TEXT \ --keyhl-color=$WRONG \ --bshl-color=$WRONG \ \ --screen 1 \ --blur 9 \ --clock \ --indicator \ --time-str="%H:%M:%S" \ --date-str="%A, %Y-%m-%d" \ --keylayout 1 \ 保存更改并退出文本编辑器。? 在网上可以找到各种不同的 i3 锁屏样式的 bash 脚本。这只是一个示例，对于大多数情况来说是一个较为简单的选项。现在，使用 chmod 命令 将该文件设置为可执行文件：sudo chmod +x .config/scripts/lock 接下来，你需要对配置文件进行一些更改，以添加该配置文件的路径以使其生效。此外，我将向你展示如何使用自定义键盘快捷键锁定屏幕。首先，打开配置文件：nano ~/.config/i3/config 使用 Alt + / 跳至行尾并粘贴以下内容：# 锁屏快捷键 bindsym $mod+x exec /home/$USER/.config/scripts/lock 在上面的示例中，我将 mod + x 作为锁定屏幕的快捷键，你可以选择任何你喜欢的快捷键。最后的配置文件将如下所示：相当不错，不是吗？在 i3 窗口管理器中更改主题和图标我知道你可能会想到这个问题。你为什么需要图标呢？你并不仅仅使用窗口管理器来使用命令行工具。有时候，使用图形界面更加方便，比如使用文件管理器。所以，在处理这些工具时，你希望界面看起来更好看？因此，在本部分中，我将向你展示：如何在 i3 中更改主题如何在 i3 中更改图标让我们从安装主题开始。在这里，我将使用 materia-gtk-theme 和 papirus 图标，但你可以使用任何你喜欢的主题和图标。在 Arch 中安装主题，使用以下命令：sudo pacman -S materia-gtk-theme papirus-icon-theme 在 Ubuntu/Debian 系统中：sudo apt install materia-gtk-theme papirus-icon-theme 但仅仅安装还不能完成任务。你需要像使用 GNOME “ 调整 Tweaks ” 应用更改主题一样来应用主题。在 i3 中，你可以使用 lxappearance 工具 来更改主题和图标。在 Arch 中安装 lxappearance，使用以下命令：sudo pacman -S lxappearance 在 Ubuntu/Debian 系统中：sudo apt install lxappearance 安装完成后，使用 Mod + d 启动 D 菜单，然后输入 lxappearance，并在第一个结果上按回车键。在这里，选择你喜欢的主题。我这里选择 Materia-dark。选择主题后，点击应用按钮以应用更改：同样地，要更改图标，选择 “ 图标主题 Icon Theme ”，选择图标主题，然后点击应用按钮：应用主题和图标后，我的文件管理器如下所示：在 i3 窗口管理器中为工作区设置图标默认情况下，工作区仅由数字表示，这并不是你想要使用工作区的最理想方式。因此，在本部分中，我将引导你如何使用合适的图标更改工作区的名称。为了在配置文件中使用图标，首先你需要安装名为 Awesome 的新字体：对于基于 Arch 的发行版：sudo pacman -S ttf-font-awesome 对于 Ubuntu/Debian 系统：sudo apt install fonts-font-awesome 安装完成后，打开 i3 配置文件：nano ~/.config/i3/config 在这个配置文件中，找到工作区的部分，你将会看到为每个工作区给出的变量：在这个部分，你需要用你想要的名称替换给出的工作区数字。我将把第一个工作区命名为 “programs”，因为在本教程的后面部分，我将展示如何将特定的应用程序分配到特定的工作区。我主要使用前 5 个工作区，所以我会相应地命名它们：# 定义默认工作区的名称，稍后我们将在其中配置键绑定。 # 我们使用变量来避免在多个地方重复使用名称。 set $ws1 "1: Terminal" set $ws2 "2: Firefox" set $ws3 "3: VMWare" set $ws4 "4: Spotify" set $ws5 "5: Shutter" set $ws6 "6" set $ws7 "7" set $ws8 "8" set $ws9 "9" set $ws10 "10" 现在让我们为配置文件中提到的每个应用程序添加图标。你可以 参考 awesome 字体的备忘单 来找到合适的图标。将图标复制粘贴到名称前面：# 定义默认工作区的名称，稍后我们将在其中配置键绑定。 # 我们使用变量来避免在多个地方重复使用名称。 set $ws1 "1:  Terminal" set $ws2 "2:  Firefox" set $ws3 "3:  VMWare" set $ws4 "4:  Spotify" set $ws5 "5:  Shutter" set $ws6 "6" set $ws7 "7" set $ws8 "8" set $ws9 "9" set $ws10 "10" 不要担心它看起来可怕！完成后，使用 Mod + e 退出 i3，然后再次登录以应用你刚刚所做的更改。我的效果如下图所示：字体看起来太小？是时候解决这个问题了！在 i3 中更改标题窗口和状态栏的字体首先，让我们安装新的字体（我将在这里使用 Ubuntu 字体）。要在 Arch 上安装 Ubuntu 字体，请执行以下操作：sudo pacman -S ttf-ubuntu-font-family 如果你使用的是 Ubuntu，你已经安装了这些字体！安装完成后，打开配置文件：nano ~/.config/i3/config 在配置文件中，找到 font pango:monospace 8 这一行，这是默认字体。找到那行后，添加字体名称和大小，如下所示：font pango:Ubuntu Regular 14 然后，使用 Mod + Shift + r 重新启动窗口管理器，这样就完成了工作：在 i3 窗口管理器中分配应用程序到工作区在给工作区命名之后，你会想要将特定的软件分配到相应的工作区中。例如，如果我将第二个工作区命名为 “Firefox”，那么我只想在该工作区中使用 Firefox。那么要如何实现呢？为了做到这一点，你需要找到每个要分配的应用程序的类名。听起来复杂？ 让我告诉你如何做。首先，将应用程序和终端并排打开。例如，在这个例子中，我将 Firefox 和终端并排打开：现在，在终端中执行 xprop 命令，它会改变鼠标指针的形状：xprop 接下来，将鼠标悬停在应用程序上，并在应用程序窗口内的任何位置单击，如图所示：类名将在以下行的最后一个字符串中找到：WM_CLASS(STRING) = "Navigator", "firefox" 在我的情况下，Firefox 浏览器的类名将是 firefox。对所有你想要分配到工作区的应用程序重复这个过程。一旦你知道每个你想要分配到工作区的应用程序的类名，打开配置文件：nano ~/.config/i3/config 使用 Alt + / 将 nano 定位到文件末尾，并使用以下语法将应用程序分配到工作区：# 分配应用到工作区 for_window [class="类名"] move to workspace $[工作区变量] 作为参考，下面是我为不同应用程序分配了 4 个工作区后的配置文件示例：现在，无论在哪个工作区打开任何应用程序，它都会自动放置在配置的工作区中。非常方便！ ?在 i3 窗口管理器中让终端变透明要启用透明效果，你需要安装 picom 合成器并对配置文件进行一些更改。让我们从安装开始。对于基于 Arch 的发行版：sudo pacman -S picom 对于基于 Ubuntu/Debian 的发行版：sudo apt install picom 安装完成后，你需要告诉系统使用 picom。首先打开配置文件：nano ~/.config/i3/config 在配置文件的末尾插入以下行：# 使用 picom 合成器实现透明效果 exec_always picom -f 这里，我使用 -f 标志来在切换工作区、打开新应用程序等时启用淡入淡出效果。保存并退出文本编辑器。现在，使用 Mod + Shift + r 重新启动 i3。接下来，打开终端，打开 “ 首选项 Preference ”，然后选择“ 配置文件 Profiles ”，选择“ 背景 Background ”，然后选择“ 透明背景 Transparent background ”选项。从这里，你可以调整透明度：在 i3 窗口管理器中自定义状态栏默认情况下，状态栏显示各种信息，但没有图标。因此，在这个部分，我将展示如何从状态栏中删除一些元素以及如何为它们添加图标。但是，在这里，我将在 /etc/i3status.conf 中创建一个原始状态栏的副本，以便如果出现任何错误，你可以随时恢复到默认配置。首先，在 .config 目录下创建一个新的目录：mkdir .config/i3status 在以下命令中，我使用了 cp 命令来复制文件：sudo cp /etc/i3status.conf ~/.config/i3status/i3status.conf 接下来，使用 chown 命令更改所有者，以便你可以进行所需的更改：sudo chown $USER:$USER ~/.config/i3status/i3status.conf 现在，你需要通过修改 i3 配置文件来指示窗口管理器使用新的 i3status 配置文件。首先打开配置文件：nano ~/.config/i3/config 在该配置文件中查找 status_command i3status 这一行。这是你将提供新状态配置文件路径的行。找到该行后，进行以下更改：bar { status_command i3status -c /home/$USER/.config/i3status/i3status.conf } 最终的结果应该如下所示：保存更改并退出文本编辑器。现在，让我们从状态栏中删除不必要的指示器。首先，打开 i3status 配置文件：nano .config/i3status/i3status.conf 在这里，你可以将以 order 开头的行注释掉，这些行实际上是指示器的变量。例如，在这里，我禁用了 ipv6、wireless _first_、battery all 和 load 这些对我来说不必要的指示器：#order += "ipv6" #order += "wireless _first_" order += "ethernet _first_" #order += "battery all" order += "disk /" #order += "load" order += "memory" order += "tztime local" 然后，在浏览器中打开 awesome font 列表，找到与状态栏中列出的项目相关的适当图标。在我的设置中，我删除了以下内容：删除了显示可用内存的行删除了显示以太网连接速度的行最终，我的状态栏如下所示：在 i3 窗口管理器中改变颜色方案更改 i3 窗口管理器中的颜色方案是这个指南中最重要的部分，因为窗口管理器最吸引人的地方就是你选择的窗口装饰颜色。? 我将为每个颜色声明变量，这样你只需更改变量本身的值，就可以轻松地获得新的颜色方案。首先，打开 i3 配置文件：nano ~/.config/i3/config 使用 Alt + / 快捷键到达文件末尾，并使用以下语法添加变量来存储颜色：# 窗口的色彩方案 set $bgcolor #523d64 set $in-bgcolor #363636 set $text #ffffff set $u-bgcolor #ff0000 set $indicator #a8a3c1 set $in-text #969696 # 边框 背景 文本 指示器（显示下一个窗口位置的线条） client.focused $bgcolor $bgcolor $text $indicator client.unfocused $in-bgcolor $in-bgcolor $in-text $in-bgcolor client.focused_inactive $in-bgcolor $in-bgcolor $in-text $in-bgcolor client.urgent $u-bgcolor $u-bgcolor $text $u-bgcolor 在这里：bgcolor 表示背景色。in-bgcolor 表示非活动窗口的背景色。text 是文本颜色。u-bgcolor 表示紧急操作的背景色。indicator 是标示下一个窗口位置的线条的颜色。in-text 是非活动窗口的文本颜色。对于本指南，我仅使用了四个基本类别：client.focused 定义了焦点窗口的颜色。client.unfocused 定义了失去焦点时窗口的装饰。client.focused_inactive 当其中一个容器处于焦点但当前没有焦点时，显示的颜色。client.urgent 定义了紧急操作时的颜色。? 除了这四个类别，还有更多类别，请参考 官方 i3 配置手册 以了解更多信息。一旦你对配置文件进行了更改，请使用 Mod + Shift + r 重新启动 i3。如果你按照我的颜色方案，设置应该如下所示：那么，状态栏的颜色怎么办？当然可以改！更改 i3 窗口管理器中状态栏的颜色方案在本节中，你将意识到为什么我使用变量来存储颜色，因为我将使用相同的变量来为我的状态栏上色！要在状态栏中使用颜色，你需要在 i3 配置文件的 bar {...} 部分进行更改。首先，打开配置文件：nano ~/.config/i3/config 在配置文件中查找 bar {...} 部分。找到该部分后，创建一个颜色部分，并为状态栏定义颜色和类别，与你为窗口所做的相同：bar { status_command i3status -c /home/$USER/.config/i3status/i3status.conf colors { background $bgcolor separator #191919 # border background text focused_workspace $bgcolor $bgcolor $text inactive_workspace $in-bgcolor $in-bgcolor $text urgent_workspace $u-bgcolor $u-bgcolor $text } } 在这里，我使用了 focused_workspace、inactive_workspace 和 urgent_workspace 这三个类别，根据需要定义了相应的颜色。保存更改后，重新启动 i3，状态栏也会显示颜色。设置 i3 状态栏的透明度本节将向你展示如何使 i3 状态栏透明。在此之前，让我们先更改 i3 状态栏的字体。这里，我将使用 Droid 字体，使其看起来干净而带有一种极客风格。要在 Arch Linux 上安装 Droid 字体，请使用以下命令：sudo pacman -S ttf-droid 对于 Ubuntu/Debian 系统，请使用以下命令：sudo apt install fonts-droid-fallback 安装完成后，打开配置文件：nano ~/.config/i3/config 进入 bar {...} 部分，并按下面的示例输入字体名称和大小：font pango: Droid Sans Mono 11 完成后，请重新启动 i3，字体将会被更改！要使状态栏透明，你可以使用现有十六进制代码中的额外两个数字来定义透明度。如果你想要控制透明度，我建议你查看 此指南，其中提供了从 0 到 100% 透明度的代码范围。为此，我将在配置文件中使用两个新变量。首先，打开配置文件：nano ~/.config/i3/config 在这里，我为背景颜色添加了 60% 的透明度，并为非活跃背景颜色添加了 30% 的透明度：set $bgcolor #523d6499 set $in-bgcolor #3636364D 如果你仔细观察，我在现有的十六进制颜色代码中添加了两位数字来定义透明度。例如，使用 99 来表示 60% 的透明度，而使用 4D 来表示 30% 的透明度。此外，我添加了两个新变量，透明度不同但颜色相同，作为背景使用，使其看起来更好：set $focused-ws #523d6480 set $bar-color #523d640D 完成后，让我们修改 bar {...} 部分来应用透明度。在 bar {...} 中添加两行代码：i3bar_command i3bar --transparency tray_output none 请注意，使用 tray_output none，它将不会在托盘中显示任何图标。如果你不希望出现这种行为，则可以跳过此行，只添加第一行以实现透明度。一旦完成，修改状态栏的颜色方案，例如更改背景颜色、边框和活动工作区的背景。修改后，配置文件应如下所示：为了使你所做的更改生效，请重新启动 i3，你将得到透明的窗口和状态栏：在窗口管理器中使用 i3blocks默认的 i3 状态栏在我看来毫无用处；怎么样让它变得有用起来呢？在本部分，我将解释如何添加以下功能：软件包更新内存使用情况磁盘使用情况音量指示器Spotify 指示器? 要实现这些功能，你需要使用一些脚本，这些脚本将允许你向状态栏添加所需的操作。不用担心，我不会让你手动输入脚本；GitHub 上有各种脚本可供选择，几乎涵盖了你所需的所有方面。但在此之前，你需要进行一些配置，以存储脚本并指示 i3 使用 i3block 的配置，而不是使用 i3bar。如果你在本指南的开头按照给定的说明进行操作，那么 i3blocks 已经安装好了，并且配置文件位于 /etc/i3blocks.conf。如果你希望快速下载块配置文件以进行设置而不阅读其他内容，请点击以下链接：i3 配置文件在本教程中，我将创建一个副本，使用它代替原始的配置文件，因此首先我们要创建一个目录来存储配置文件的副本：mkdir ~/.config/i3blocks 现在，创建一个原始配置文件的副本：sudo cp /etc/i3blocks.conf ~/.config/i3blocks/ 最后，使用 chown 命令更改文件的所有者，以便你进行所需的更改：sudo chown $USER:$USER ~/.config/i3blocks/i3blocks.conf 要启用 i3blocks，在 i3 配置文件中进行一些更改：nano ~/.config/i3/config 进入 bar {...} 部分，在这里，你需要将 status_command 更改为 i3blocks 并添加 i3blocks 配置文件的路径，如下所示：完成后，使用 Mod + Shift + r 重新启动 i3 窗口管理器，整个状态栏都会被更改，并显示如下：不要担心，你将很快使状态栏比以前的 i3bar 更有价值和好看。添加磁盘块如果你想要显示磁盘剩余空间，可以添加此块。在这里，我将使用 nano 创建并打开用于磁盘块的配置文件。nano ~/.config/scripts/disk 然后粘贴以下行：#!/usr/bin/env sh DIR="${DIR:-$BLOCK_INSTANCE}" DIR="${DIR:-$HOME}" ALERT_LOW="${ALERT_LOW:-$1}" ALERT_LOW="${ALERT_LOW:-10}" # color will turn red under this value (default: 10%) LOCAL_FLAG="-l" if [ "$1" = "-n" ] || [ "$2" = "-n" ]; then LOCAL_FLAG="" fi df -h -P $LOCAL_FLAG "$DIR" | awk -v label="$LABEL" -v alert_low=$ALERT_LOW ' /\/.*/ { # full text print label $4 # short text print label $4 use=$5 # no need to continue parsing exit 0 } END { gsub(/%$/,"",use) if (100 - use < alert_low) { # color print "#FF0000" } } ' 保存更改并从文本编辑器中退出。现在，将此文件设置为可执行：sudo chmod +x ~/.config/scripts/disk 接下来，打开 I3blocks 配置文件：nano ~/.config/i3blocks/i3blocks.conf 根据你想要放置磁盘块的位置，粘贴以下行：[disk] command=/home/$USER/.config/scripts/disk LABEL= #DIR=$HOME #ALERT_LOW=10 interval=30 完成后，保存更改并使用 Mod + Shift + r 重新启动 i3，状态栏中将显示带有磁盘图标的可用磁盘空间。添加内存块这将是状态栏中指示系统中已使用内存的块。首先，创建并打开一个新文件用于新的块：nano ~/.config/scripts/memory 然后在新文件中粘贴以下行：#!/usr/bin/env sh TYPE="${BLOCK_INSTANCE:-mem}" PERCENT="${PERCENT:-true}" awk -v type=$TYPE -v percent=$PERCENT ' /^MemTotal:/ { mem_total=$2 } /^MemFree:/ { mem_free=$2 } /^Buffers:/ { mem_free+=$2 } /^Cached:/ { mem_free+=$2 } /^SwapTotal:/ { swap_total=$2 } /^SwapFree:/ { swap_free=$2 } END { if (type == "swap") { free=swap_free/1024/1024 used=(swap_total-swap_free)/1024/1024 total=swap_total/1024/1024 } else { free=mem_free/1024/1024 used=(mem_total-mem_free)/1024/1024 total=mem_total/1024/1024 } pct=0 if (total > 0) { pct=used/total*100 } # full text if (percent == "true" ) { printf("%.1fG/%.1fG (%.f%%)\n", used, total, pct) } else { printf("%.1fG/%.1fG\n", used, total) } # short text printf("%.f%%\n", pct) # color if (pct > 90) { print("#FF0000") } else if (pct > 80) { print("#FFAE00") } else if (pct > 70) { print("#FFF600") } } ' /proc/meminfo 保存更改并从文本编辑器中退出。现在，要使其生效，你需要使用以下命令将此文件设置为可执行：sudo chmod +x ~/.config/scripts/memory 接下来，打开 i3blocks 配置文件：nano ~/.config/i3blocks/i3blocks.conf 并将以下内容粘贴到你希望在状态栏中显示内存使用情况的位置：[memory] command=/home/$USER/.config/scripts/memory label= interval=30 保存更改并从文本编辑器中退出。重新启动 i3 以使更改生效！添加更新指示块这是最有帮助的指示器，它显示需要更新的旧软件包数量。首先，使用以下命令安装依赖项以使其正常工作：sudo pacman -S pacman-contrib 现在，创建一个新文件来存储脚本：nano ~/.config/scripts/arch-update 然后粘贴以下内容：#!/usr/bin/env python3 import subprocess from subprocess import check_output import argparse import os import re def create_argparse(): def _default(name, default='', arg_type=str): val = default if name in os.environ: val = os.environ[name] return arg_type(val) strbool = lambda s: s.lower() in ['t', 'true', '1'] strlist = lambda s: s.split() parser = argparse.ArgumentParser(description='Check for pacman updates') parser.add_argument( '-b', '--base_color', default = _default('BASE_COLOR', 'green'), help='base color of the output(default=green)' ) parser.add_argument( '-u', '--updates_available_color', default = _default('UPDATE_COLOR', 'yellow'), help='color of the output, when updates are available(default=yellow)' ) parser.add_argument( '-a', '--aur', action = 'store_const', const = True, default = _default('AUR', 'False', strbool), help='Include AUR packages. Attn: Yaourt must be installed' ) parser.add_argument( '-y', '--aur_yay', action = 'store_const', const = True, default = _default('AUR_YAY', 'False', strbool), help='Include AUR packages. Attn: Yay must be installed' ) parser.add_argument( '-q', '--quiet', action = 'store_const', const = True, default = _default('QUIET', 'False', strbool), help = 'Do not produce output when system is up to date' ) parser.add_argument( '-w', '--watch', nargs='*', default = _default('WATCH', arg_type=strlist), help='Explicitly watch for specified packages. ' 'Listed elements are treated as regular expressions for matching.' ) return parser.parse_args() def get_updates(): output = '' try: output = check_output(['checkupdates']).decode('utf-8') except subprocess.CalledProcessError as exc: # checkupdates exits with 2 and no output if no updates are available. # we ignore this case and go on if not (exc.returncode == 2 and not exc.output): raise exc if not output: return [] updates = [line.split(' ')[0] for line in output.split('\n') if line] return updates def get_aur_yaourt_updates(): output = '' try: output = check_output(['yaourt', '-Qua']).decode('utf-8') except subprocess.CalledProcessError as exc: # yaourt exits with 1 and no output if no updates are available. # we ignore this case and go on if not (exc.returncode == 1 and not exc.output): raise exc if not output: return [] aur_updates = [line.split(' ')[0] for line in output.split('\n') if line.startswith('aur/')] return aur_updates def get_aur_yay_updates(): output = check_output(['yay', '-Qua']).decode('utf-8') if not output: return [] aur_updates = [line.split(' ')[0] for line in output.split('\n') if line] return aur_updates def matching_updates(updates, watch_list): matches = set() for u in updates: for w in watch_list: if re.match(w, u): matches.add(u) return matches label = os.environ.get("LABEL","") message = "{0}{2}" args = create_argparse() updates = get_updates() if args.aur: updates += get_aur_yaourt_updates() elif args.aur_yay: updates += get_aur_yay_updates() update_count = len(updates) if update_count > 0: if update_count == 1: info = str(update_count) + ' update available' short_info = str(update_count) + ' update' else: info = str(update_count) + ' updates available' short_info = str(update_count) + ' updates' matches = matching_updates(updates, args.watch) if matches: info += ' [{0}]'.format(', '.join(matches)) short_info += '*' print(message.format(label, args.updates_available_color, info)) print(message.format(label, args.updates_available_color, short_info)) elif not args.quiet: print(message.format(label, args.base_color, 'system up to date')) 保存更改并从文本编辑器中退出。现在，使用以下命令将此文件设置为可执行：sudo chmod +x ~/.config/scripts/arch-update 接下来，打开 i3blocks 配置文件：nano ~/.config/i3blocks/i3blocks.conf 并将以下内容粘贴到所需的位置：[arch-update] command=/home/$USER/.config/scripts/arch-update interval=3600 markup=pango LABEL= 保存更改并重新加载 i3 窗口管理器，它将显示需要更新的软件包数量。如果你正在使用 Ubuntu，你可以 按照 GitHub 页面上的说明 进行操作。添加音量指示块添加音量指示块需要一些努力，因为你希望它的行为符合预期。你需要实现以下功能：使用媒体控制键管理音量的键绑定添加一个指示音量的音量块但要做到这一点，首先你需要安装一些依赖项。如果你使用的是 Arch Linux，请使用以下命令：sudo pacman -S pulseaudio-alsa pulseaudio-bluetooth pulseaudio-equalizer pulseaudio-jack alsa-utils playerctl 如果你使用的是 Ubuntu/Debian 系统，请使用以下命令：sudo apt install pulseaudio-module-bluetooth pulseaudio-equalizer pulseaudio-module-jack alsa-utils playerctl 接下来，让我们看看如何在 i3 窗口管理器中启用媒体控制键。首先，打开 i3 配置文件：nano ~/.config/i3/config 转到文件的末尾，并粘贴以下内容：# Key bindings for Media control keys bindsym XF86AudioPlay exec playerctl play bindsym XF86AudioPause exec playerctl pause bindsym XF86AudioNext exec playerctl next bindsym XF86AudioPrev exec playerctl previous 现在，让我们为此块创建一个新文件：nano ~/.config/scripts/volume 然后粘贴以下内容：#!/usr/bin/env bash if -z "$MIXER" ; then MIXER="default" if command -v pulseaudio >/dev/null 2>&1 && pulseaudio --check ; then # pulseaudio is running, but not all installations use "pulse" if amixer -D pulse info >/dev/null 2>&1 ; then MIXER="pulse" fi fi [ -n "$(lsmod | grep jack)" ] && MIXER="jackplug" MIXER="${2:-$MIXER}" fi if -z "$SCONTROL" ; then SCONTROL="${BLOCK_INSTANCE:-$(amixer -D $MIXER scontrols | sed -n "s/Simple mixer control '\([^']*\)',0/\1/p" | head -n1 )}" fi # The first parameter sets the step to change the volume by (and units to display) # This may be in in % or dB (eg. 5% or 3dB) if -z "$STEP" ; then STEP="${1:-5%}" fi NATURAL_MAPPING=${NATURAL_MAPPING:-0} if "$NATURAL_MAPPING" != "0" ; then AMIXER_PARAMS="-M" fi #------------------------------------------------------------------------ capability() { # Return "Capture" if the device is a capture device amixer $AMIXER_PARAMS -D $MIXER get $SCONTROL | sed -n "s/ Capabilities:.*cvolume.*/Capture/p" } volume() { amixer $AMIXER_PARAMS -D $MIXER get $SCONTROL $(capability) } 保存更改并退出配置文件。接下来，打开 I3blocks 配置文件：nano ~/.config/i3blocks/i3blocks.conf 然后粘贴以下内容：[volume] command=/home/$USER/.config/scripts/volume LABEL=♪ #LABEL=VOL interval=1 signal=10 #STEP=5% MIXER=default #SCONTROL=[determined automatically] #NATURAL_MAPPING=0 保存更改并重新加载 i3，从现在开始，音量快捷键将起作用，并且指示器将按预期工作！? 如果遇到音频/视频不工作等问题，请使用此命令，它应该解决该问题：systemctl --user disable --now pipewire.{socket,service} && systemctl --user mask pipewire.socket 添加 Spotify 块我将使用 firatakandere 的脚本来添加此功能。在继续之前，你可以先查看一下该脚本。首先，创建并打开一个用于 Spotify 块的新文件：nano ~/.config/scripts/spotify.py 然后粘贴以下内容：#!/usr/bin/python import dbus import os import sys try: bus = dbus.SessionBus() spotify = bus.get_object("org.mpris.MediaPlayer2.spotify", "/org/mpris/MediaPlayer2") if os.environ.get('BLOCK_BUTTON'): control_iface = dbus.Interface(spotify, 'org.mpris.MediaPlayer2.Player') if (os.environ['BLOCK_BUTTON'] == '1'): control_iface.Previous() elif (os.environ['BLOCK_BUTTON'] == '2'): control_iface.PlayPause() elif (os.environ['BLOCK_BUTTON'] == '3'): control_iface.Next() spotify_iface = dbus.Interface(spotify, 'org.freedesktop.DBus.Properties') props = spotify_iface.Get('org.mpris.MediaPlayer2.Player', 'Metadata') if (sys.version_info > (3, 0)): print(str(props['xesam:artist'][0]) + " - " + str(props['xesam:title'])) else: print(props['xesam:artist'][0] + " - " + props['xesam:title']).encode('utf-8') exit except dbus.exceptions.DBusException: exit 完成后，使用以下命令使其可执行：sudo chmod +x ~/.config/scripts/spotify.py 现在，打开 I3blocks 配置文件：nano ~/.config/i3blocks/i3blocks.conf 然后粘贴以下内容（建议将其粘贴到块的开头）：[spotify] label= command=/home/$USER/.config/scripts/spotify.py color=#81b71a interval=5 保存更改，退出配置文件，并重新启动 i3。添加了我提到的块后，状态栏将如下所示：你可以查看我的主屏幕，其中包含这些块（点击下方的图片查看）。? 如果你对那些默认块（文档和问候语）的位置感到困惑，我用了几个注释将它们禁用以实现所示的外观！在 Linux 中使用 i3gaps如果你想在窗口之间添加间隙，可以使用 i3gaps。在颜色方案之后，i3gaps 是这个指南中最关键的元素。要使用间隙，你必须对 i3 配置文件进行一些更改。打开 i3 配置文件：nano ~/.config/i3/config 转到文件的末尾，并粘贴以下内容：# default gaps gaps inner 15 gaps outer 5 # gaps set $mode_gaps Gaps: (o)uter, (i)nner, (h)orizontal, (v)ertical, (t)op, (r)ight, (b)ottom, (l)eft set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global) set $mode_gaps_horiz Horizontal Gaps: +|-|0 (local), Shift + +|-|0 (global) set $mode_gaps_verti Vertical Gaps: +|-|0 (local), Shift + +|-|0 (global) set $mode_gaps_top Top Gaps: +|-|0 (local), Shift + +|-|0 (global) set $mode_gaps_right Right Gaps: +|-|0 (local), Shift + +|-|0 (global) set $mode_gaps_bottom Bottom Gaps: +|-|0 (local), Shift + +|-|0 (global) set $mode_gaps_left Left Gaps: +|-|0 (local), Shift + +|-|0 (global) bindsym $mod+Shift+g mode "$mode_gaps" mode "$mode_gaps" { bindsym o mode "$mode_gaps_outer" bindsym i mode "$mode_gaps_inner" bindsym h mode "$mode_gaps_horiz" bindsym v mode "$mode_gaps_verti" bindsym t mode "$mode_gaps_top" bindsym r mode "$mode_gaps_right" bindsym b mode "$mode_gaps_bottom" bindsym l mode "$mode_gaps_left" bindsym Return mode "$mode_gaps" bindsym Escape mode "default" } mode "$mode_gaps_outer" { bindsym plus gaps outer current plus 5 bindsym minus gaps outer current minus 5 bindsym 0 gaps outer current set 0 bindsym Shift+plus gaps outer all plus 5 bindsym Shift+minus gaps outer all minus 5 bindsym Shift+0 gaps outer all set 0 bindsym Return mode "$mode_gaps" bindsym Escape mode "default" } mode "$mode_gaps_inner" { bindsym plus gaps inner current plus 5 bindsym minus gaps inner current minus 5 bindsym 0 gaps inner current set 0 bindsym Shift+plus gaps inner all plus 5 bindsym Shift+minus gaps inner all minus 5 bindsym Shift+0 gaps inner all set 0 bindsym Return mode "$mode_gaps" bindsym Escape mode "default" } mode "$mode_gaps_horiz" { bindsym plus gaps horizontal current plus 5 bindsym minus gaps horizontal current minus 5 bindsym 0 gaps horizontal current set 0 bindsym Shift+plus gaps horizontal all plus 5 bindsym Shift+minus gaps horizontal all minus 5 bindsym Shift+0 gaps horizontal all set 0 bindsym Return mode "$mode_gaps" bindsym Escape mode "default" } mode "$mode_gaps_verti" { bindsym plus gaps vertical current plus 5 bindsym minus gaps vertical current minus 5 bindsym 0 gaps vertical current set 0 bindsym Shift+plus gaps vertical all plus 5 bindsym Shift+minus gaps vertical all minus 5 bindsym Shift+0 gaps vertical all set 0 bindsym Return mode "$mode_gaps" bindsym Escape mode "default" } mode "$mode_gaps_top" { bindsym plus gaps top current plus 5 bindsym minus gaps top current minus 5 bindsym 0 gaps top current set 0 bindsym Shift+plus gaps top all plus 5 bindsym Shift+minus gaps top all minus 5 bindsym Shift+0 gaps top all set 0 bindsym Return mode "$mode_gaps" bindsym Escape mode "default" } mode "$mode_gaps_right" { bindsym plus gaps right current plus 5 bindsym minus gaps right current minus 5 bindsym 0 gaps right current set 0 bindsym Shift+plus gaps right all plus 5 bindsym Shift+minus gaps right all minus 5 bindsym Shift+0 gaps right all set 0 bindsym Return mode "$mode_gaps" bindsym Escape mode "default" } mode "$mode_gaps_bottom" { bindsym plus gaps bottom current plus 5 bindsym minus gaps bottom current minus 5 bindsym 0 gaps bottom current set 0 bindsym Shift+plus gaps bottom all plus 5 bindsym Shift+minus gaps bottom all minus 5 bindsym Shift+0 gaps bottom all set 0 bindsym Return mode "$mode_gaps" bindsym Escape mode "default" } mode "$mode_gaps_left" { bindsym plus gaps left current plus 5 bindsym minus gaps left current minus 5 bindsym 0 gaps left current set 0 bindsym Shift+plus gaps left all plus 5 bindsym Shift+minus gaps left all minus 5 bindsym Shift+0 gaps left all set 0 bindsym Return mode "$mode_gaps" bindsym Escape mode "default" } 保存更改并退出配置文件。使用 Mod + Shift + r 重新加载 i3，并会看到窗口之间的间隙：但是，如果你想调整间隙的大小怎么办？这非常简单，只需要简单的步骤即可完成：按下 Mod + Shift + g 进入间隙模式使用给定的选项选择要更改的内容使用 + 或 - 增加/减小间隙完成后，按 Esc 键退出间隙模式就是这样！我们忘记自定义终端了吗？不用担心；你可以 切换到 Zsh，这是一个不同的 shell，使终端看起来与众不同，或者探索一些鲜为人知的 Linux Shell。无论如何，你都可以 自定义现有终端，或选择不同的 终端模拟器。我希望你不再畏难如何美化系统！ ?如果你有任何建议或想展示你的配置，请在评论部分留言。（题图：MJ/2874542d-6a8f-4b27-8e65-477389a0dcca）via: https://itsfoss.com/i3-customization/作者：Sagar Sharma 选题：lkxed 译者：ChatGPT 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
ReactOS 项目冒泡表示还活着ReactOS 是一个开源的操作系统，旨在复制微软的 Windows，可以不加修改地运行许多 Windows 应用程序。ReactOS 的上一次更新是在 2021 年 12 月。此前它的发布计划是每三个月释出一个新版本，但自从 0.4.14 之后就再无动静。面对用户的疑问，该项目发文称其还活着，只是之后的版本发布会根据质量而不是数量。新的发布规则是“一个新版本要达到 `发布’ 状态，需要有合理的低回归量（不超过 20个）”。但他们并没有给出下一个版本预计发布的时间，不过你可以随时尝试其每夜构建版本。消息来源：ReactOS老王点评：其实，没事发个新版本表示活着，至少是给社区一些信心的做法。WhatsApp 关闭了基于 Electron 的桌面应用当 WhatsApp 处于早期开发阶段时，开发者创建了一个基于 Electron JavaScript 框架的桌面应用程序，它在 Windows 和 macOS 上都能使用。大约四周前，这个桌面应用程序的主屏幕上出现了一个倒计时器，宣布其即将关闭。WhatsApp 让用户切换到其原生应用程序上，新的原生应用程序已经稳定运行了一年左右。消息来源：Android Police老王点评：有了原生应用，谁还用 Electron 的呀。GitHub DDoS 攻击了一个重要的开源项目小网站一个 GCC 核心的开源算术库 GMP 项目所使用的服务器遭受到了大量的来自 GitHub 的 IP 的连接。无奈之下，该项目只能封禁了数百个微软的 IP 地址。微软发现这是一个被复刻了 700 多次的存储库上的 Actions 工作流导致的。一位 GitHub 用户更新了 FFmpeg-Builds 项目中的一个脚本，该脚本从 gmplib.org 提取内容。这种活动应该不是恶意的，但 GMP 有限的基础设施无法应对这个量级的并发请求。这并不是第一次有软件项目因为繁重的流量需求而喊出被 DDoS。消息来源：The Register老王点评：这个事情里面没有主动的恶意行为者，但是 GitHub 这么大体量，稍有不慎对其它微小的基础设施都是毁灭性打击，所以，微软应该对其基础设施和应用更加慎重一些。
一款出色的 Flatpak 应用，可从 Linux 桌面访问 WhatsApp。WhatsApp 是流行的手机通讯平台，在许多国家都很受欢迎。用户通常通过 Play 商店或 App Store 中的移动应用访问它。然而，WhatsApp 从未推出任何适用于 Linux 的官方桌面客户端。尽管你可以使用浏览器访问 WhatsApp，这是从任何桌面（包括 Linux）访问消息的官方方式。一个新的非官方 WhatsApp Flatpak 桌面应用出现了，你可以无缝地使用它进行通信。那么，这个 GTK 应用有哪些功能？“Linux 版 WhatsApp” 的功能借助这款新的桌面应用，Linux 桌面用户可以在他们最喜欢的桌面环境中享受 WhatsApp 的所有熟悉功能。现在，你可以在 Linux 发行版上轻松访问所有功能，例如发送消息、共享媒体文件以及进行语音和视频通话。“Linux 版 WhatsApp” 应用还提供键盘快捷键，确保应用内的无缝导航和交互。使用此应用，你可以放大和缩小以仔细查看图像和文本，或切换到全屏模式以获得无干扰的聊天体验。该应用还包括一个系统托盘图标，即使在应用最小化时也可以快速访问和通知。此外，你可以自定义应用以满足你的喜好。通过按 Alt+H，你可以轻松显示或隐藏标题栏，从而更好地控制工作区。该应用还支持系统语言的本地化，确保你可以轻松地与世界各地的朋友和家人进行交流。Linux 版 WhatsApp 应用的一项值得注意的功能是支持系统语言的拼写检查。要启用此功能，你必须安装相应的词典，例如美国英语的 hunspell-en\_us 包。技术细节如果你想知道，它不是一个 Electron 应用。它是使用原生 C++ 编写的，确保了最佳的性能和安全性。它依赖于各种免费和开源库，例如 intltool、gtkmm-3.0、webkit2gtk-4.0、ayatana-appindicator3-0.1、libcanberra 以及用于拼写检查的 libhunspell（可选）。你可以从 GitHub 上的源码了解有关此应用的更多信息。安装首先，你必须为你的 Linux 发行版设置 Flatpak 和 Flathub。使用 本指南 来设置。安装后，运行以下命令进行安装。flatpak install com.github.eneshecan.WhatsAppForLinux 你可以在应用列表中找到该应用。运行应用打开应用后，设置与 WhatsApp 网页类似。打开手机的 WhatsApp 应用并扫描应用中的二维码。这样就完成了。请注意，这是一个非官方的应用。因此，请谨慎使用。你还可以查看 GitHub 以获取有关此应用的更多详细信息。（题图：MJ/de9d18fe-fb3f-4d88-8723-761ebbee5f38）via: https://www.debugpoint.com/whatsapp-for-linux/作者：Arindam 选题：lkxed 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
cowsay 是一个有趣的小型 Linux 命令行实用程序，它有各种使用方式。以下是几个示例。如果你想的话，Linux 终端可以是一个有趣的地方。当然，终端一般用在严肃的场合，但你可以使用 有趣的 Linux 命令 来娱乐自己。cowsay 就是其中之一。它可以在终端上显示一头牛。cowsay 的一个特点是，如果与其他命令组合使用，它可以用于一些 “严肃的场合”。比如，在共享的 Linux 服务器上使用它来显示 “每日消息”，以供多个用户查看。听起来有趣吗？是时候喂养安装一个了。安装 Cowsaycowsay 是一个受欢迎的工具，它可以在大多数 Linux 发行版的软件仓库中找到。要在 Debian 和 Ubuntu 系统上安装 cowsay，请打开终端并运行：sudo apt install cowsay 对于 Fedora，请使用：sudo dnf install cowsay 在基于 Arch Linux 的发行版中，请使用：sudo pacman -S cowsay 使用 Cowsay顾名思义，这是一头以 ASCII 艺术展示的牛，能输出输入的文本。默认情况下，cowsay 提供了几个选项来调整这头 ASCII 牛的外观和样式。普通的 cowsaycowsay <文本> 这将在牛讲话的气泡中打印你提供的任何文本。或者，你可以使用管道重定向，将另一个命令（比如 echo）的输出作为 cowsay 的输入。echo "Hello" | cowsay 贪婪的牛这里，牛的眼睛看起来有点贪婪，它是美元符号。cowsay -g <消息> 使用特殊字符作为眼睛你可以使用 -e 选项，然后提供你希望作为眼睛的两个字符。默认是 OO。cowsay -e hh Hello 在上面的截图中，两个 h 将出现在眼睛的位置。? 如果你输入的字符已被任何默认选项使用，比如 $$，那么它将被覆盖。使用其他字符代替牛cowsay 还提供了许多其他 ASCII 图像，你可以通过 -f 选项使用它们。使用 -l 选项列出它们：cowsay -l 现在，要打印上述图像之一，请使用：cowsay -f <牛文件名称> <消息> 类似地，在更新的版本中，你可以使用 -r 选项随机打印上述图像之一。cowsay -r Hello 其他选项选项用途-b启用博格模式-d看起来死了的牛-p陷入偏执状态的牛-s看起来迷迷糊糊的牛-t一只疲倦的牛-y让牛年轻一些使用 Cowthinkcowthink 是与 cowsay 一起提供的辅助程序。它显示的是思维泡泡而不是说话泡泡。如果你熟悉漫画书的标注，这将更有意义。cowthink Hello 所有在 cowsay 中提到的选项在这里同样适用。使用 Cowsay 和 Fortune通过管道重定向，你可以将 cowsay 与另一个流行的有趣的 Linux 命令 fortune 结合使用。? 在 Ubuntu 中可以使用 sudo apt install fortune lolcat 命令安装 fortune 和 lolcat。对于那些不知道 fortune 是什么的人来说，它是一个小程序，在终端上打印名人名言。你可以像这样作为独立命令来运行它：fortune 要使用 cowsay 打印 fortune 的内容，运行：fortune | cowsay 你还可以添加 cowsay 的选项来使输出更好：fortune | cowsay -f dragon 用 lolcat 把牛变成彩色的许多人都熟悉 lolcat 给文本添加的彩虹效果。那么为什么不将其与上述程序一起使用呢？你只需要将 cowsay 命令连接到 lolcat 命令上即可。cowsay Hello | lolcat 现在，如果你想同时添加 fortune 和各种 cowsay 选项，请使用所有这些选项，并将整个命令的输出都连接到 lolcat，就像这样：fortune | cowsay -f tux | lolcat fortune | cowthink -f tux | lolcat 第三方牛文件（适用于高级用户）对默认的 cowsay 牛文件不感兴趣吗？别担心，有许多不同的牛文件可供选择，由热心的开发者创建。我在这里介绍两个：https://github.com/bkendzior/cowfiles和https://github.com/paulkaefer/cowsay-files。你可以按照它们的 README 所述从这些存储库安装牛文件，或者只需从存储库中下载所需的牛文件（.cow）并将它们粘贴到 /usr/share/cowsay/site-cows/ 下。现在，你可以通过文件名访问该牛文件：cowsay -f <新文件名> Hello 在屏幕截图中，你可以看到我使用了一个下载下来的牛文件，名为 C3PO.cow。对于那些想要创建自己的图像的人，可以访问 Charc0al 的 cowsay 文件。在这里，你可以下载现有的文件，或者转换一些图像（建议不大于 50×50）以满足需求。其他有趣的用法使用 cowsay 提示输入 sudo 命令的密码sudo -p "$(cowsay '如果你知道密码，请在此输入。否则请离开：')" <command> 将 cowsay 作为 bash 配置的一部分，以便在每次打开终端时看到欢迎对于像 Fedora 中的较新版本的 cowsay，可以将 fortune | cowsay -r | lolcat 添加到你的 ~/.bashrc 中。现在，每次打开终端时，都会打印一个带有不同名言的新牛文件。对于没有随机选项（-r）的较旧版本的 cowsay，你可以手动获取不同的文件，并使用 fortune | cowsay -f <要使用的特定牛文件的名称> | lolcat。使用 cowsay 显示其他命令的输出你可以让 lsblk 等命令使用 cowsay 打印输出。只需将这些命令连接起来。lsblk | cowsay 在 Fedora 中使用 cowsay-beefymiraclebeefymiracle 是 Fedora 中提供的一个 cowsay 包。这里的牛变成了牛肉（我这颗素食主义者的心在哭泣 ?）。使用下面的命令来安装它：sudo dnf install cowsay-beefymiracle 现在，运行：cowsay -f beefymiracle <消息> 更多：XCowsayxcowsay 是普通的 cowsay 的图形替代品。这里，牛不再是 ASCII 图形，而是一个真实的图像。你可以通过以下方式进行安装：sudo apt install xcowsay 现在运行：xcowsay <消息> 这将根据文本的长度，在一段特定的时间内显示图形化的牛，然后消失，但你可以点击它立即隐藏。更有趣的是，牛可以“梦见”图像而不是文本。甚至牛的图像可以更改为随机图像。使用以下命令之一：xcowsay --dream=file 或者xcowsay --image=file --dream=file 你可以查看 xcowsay 的手册页面以了解更多选项。更多终端中的 ASCII 乐趣喜欢 ASCII 艺术吗？可以尝试用 Neofetch 以 ASCII 格式显示你所使用的发行版的徽标。为什么只限于徽标呢？Linux 终端上还有很多 ASCII 工具。不要停止在终端中寻找乐趣。希望你喜欢这篇关于以各种格式使用 cowsay 的教程。惊人的是，这个小工具提供了如此多的选项，有这么多的使用方式。你最喜欢哪个 cowsay 的例子？不要说牛肉的那个 ?（题图：MJ/bd304f28-2476-4496-93d2-50fdae0a8831）via: https://itsfoss.com/cowsay/作者：Sreenath 选题：lkxed 译者：ChatGPT 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
硬核观察 #1046 红帽认为 RHEL 克隆品是对开源公司的“真正威胁”
红帽认为 RHEL 克隆品是对开源公司的“真正威胁”前两天，红帽 宣布 其企业发行版 RHEL 的源代码将只公开发布在 CentOS Stream 上，其直接后果是社区将无法直接获得 RHEL 的精确源代码。这显然给 1:1 复制 RHEL 的下游发行版，如 AlmaLinux、Rocky Linux 等造成了 阻碍。面对社区批评，红帽高管最近撰文反驳，指出对他们愤怒的人“要么来自于那些不愿为生产 RHEL 需要付出的时间、精力和资源付费的人，要么来自那些因为自己的利益而想要重新打包它的人”。他认为 AlmaLinux 等“下游重新构建者没有价值”，“简单地重新打包，并进行原样转售，没有增加任何的价值，还让开源软件的生产变得不可持续”，并且表示，他们“没有义务让重新构建者的工作更加容易”。更严重的是，他还指控这是一种对开源的“威胁”，“如果是仅仅重新构建代码，而不对现有代码增加价值或进行任何修改，对于所有开源公司来说，这才是真正的威胁。这对开源来说是一个真正的威胁，有可能将开源重新变回到只适用于业余爱好者和黑客的活动。”消息来源：红帽老王点评：一方面受限于 GPL 而不得不公开源代码，另外一方面又千方百计提高获得源代码的麻烦程度，并反过来指责那些依据 GPL 而获得源代码的人是“威胁” —— 说实话，“威胁”这个词我记得当年微软也这样说过。曾经红帽砍掉 CentOS 项目，而用滚动变化的 CentOS Stream 替代时，我认为这对 RHEL 的发展是有益的，面对很多“误解”，也曾出面帮他们做过一些澄清。但是现在红帽终于图穷匕见，认为从 RHEL 源代码构建的“克隆品”是一个“威胁”。我想说，你利用开源代码构建的 RHEL，没有资格说同样根据许可证获得源代码构建发行版的人是“威胁”！另外，卫 Sir 今天的 撰文 对此做了更深入的剖析，值得一看。微软考虑将 Windows 转移到云端在 FTC 诉微软收购动视暴雪听证会上，一份被公开的微软 2022 年 6 月的内部演示文稿中，微软讨论了在 Windows 365 的基础上实现从云端到任何设备的完整 Windows 操作系统串流。Windows 365 是一项将完整版本的 Windows 串流到设备的服务，目前仅提供给商业客户，但微软已经将其深度整合到 Windows 11 中。未来的更新将包括 Windows 365 Boot，它将使 Windows 11 设备在启动时直接登录到云 PC 实例，而不是本地版本的 Windows。消息来源：The Verge老王点评：如果 Windows 都变成云端的了，那么是不是 Linux 桌面就有希望变成“第二大”桌面系统了？ ?手机跟踪软件 LetMeSpy 称其被黑客窃取了大量信息LetMeSpy 是一款手机监控应用程序，被用于家长控制或员工监控。这类手机监控应用程序也被称为跟踪软件或配偶软件，通常在未经本人同意或不知情的情况下对某人的手机进行物理访问而植入。一旦被植入，LetMeSpy 就会默默地将手机的短信、通话记录和精确的位置数据上传到其服务器，让植入该应用程序的人能够实时跟踪该人。该公司称，一名黑客窃取了 LetMeSpy 从电子邮件、电话号码和账户上截获的信息。入侵的黑客表示已经夺取了该公司域名的广泛访问权，并暗示他们删除了 LetMeSpy 存储在服务器上的数据库。同一天晚些时候，一份被黑的数据库的副本也出现在网上。消息来源：Tech Crunch老王点评：这算不算黑吃黑？
本快速教程解释了安装和使用 GNOME Boxes 以及创建虚拟机的步骤，以及一些提示和故障排除。虚拟化是使用抽象硬件层运行虚拟实例（而不是实际实例）的过程。通俗地说，它允许你同时安装和运行多个操作系统（Linux、Windows）。虚拟机 是一个模拟操作系统，它运行在另一个操作系统之上，并使用与主机相同的硬件和存储空间。虽然，你可以控制可以分配给虚拟机的共享内存或空间量。有多种软件可用于创建虚拟机，例如 Virtual Box、KVM、Hyper-V、VMWare player 和 GNOME Boxes。但老实说，它们中的大多数使用起来都很复杂，有时还不够稳定。GNOME Boxes 是另一个自由开源的软件，它非常易于使用，通过抽象出大量选项让你可以轻松创建和管理虚拟机。安装 GNOME Boxes如果你正在运行 Fedora 的 GNOME 定制版，你应该已经安装了它。但是，对于 Ubuntu、Linux Mint、Kubuntu 和其他发行版，你只需运行以下命令即可将其安装到你的系统中。sudo apt install gnome-boxes 通过 Flatpak它也可以通过 Flatpak 包获得。我会推荐你使用这个版本。首先，使用 本指南 在系统中安装 Flatpak，然后从终端运行以下命令进行安装。flatpak install flathub org.gnome.Boxes 使用 GNOME Boxes 创建虚拟机从应用菜单启动 GNOME Boxes。要创建虚拟机，你需要要虚拟化的操作系统的镜像（*.ISO）。你可以从发行版的官方下载页面下载任何操作系统 ISO 镜像。对于本指南，我使用的是 Pop!\_OS，这是一个优秀的 Linux 发行版。启动后，单击顶部的 “+” 图标启动并选择“ 创建虚拟机 Create a virtual machine ”。在下一个窗口中，你可以选择已经可用的下载，或者你可以选择你的 ISO 文件作为操作系统源。单击“ 操作系统镜像文件 Operating system image file ”并选择你的 ISO 文件。分配虚拟机的内存和存储空间。请记住，你的虚拟机将从主机系统获取内存和存储空间。所以尽量不要分配为最大值。例如，在下图中，我从主机系统的 8GB 总内存中为虚拟机（客户机）分配了 2GB 内存。同样，如果你只是想测试操作系统，也请选择最小存储空间。但是，如果你正在为服务器或严肃的工作创建虚拟机，请合理分配你要分配的空间或内存量。另一件需要记住的重要事情是，除非你删除虚拟机，否则你允许的存储磁盘空间将被永久占用。因此，即使你的虚拟机没有使用整个分配的空间，你也不会获得那么多的可用磁盘空间。继续安装。在分区窗口中，你应该看到一个硬盘和一个分区，这就是虚拟机的磁盘空间。通常，它们被命名为 /dev/vda 或者 /dev/sda。不用担心；你可以随意使用此分区，这不会影响你的物理磁盘分区或实际主机系统上的任何数据。安装 Linux 时遵循相同的 /root 分区，然后继续。完成安装后，你应该会在虚拟机中看到新的操作系统。在 GNOME Boxes 中，你应该会看到一个系统条目。你可以单击它启动虚拟机。你可以使用虚拟机操作系统的内部关闭选项关闭虚拟机。如果需要，你还可以通过选择上下文菜单选项来删除虚拟机。你还可以从属性窗口检查你的虚拟机使用了多少内存和 CPU。请注意，你可以使用属性调整现有虚拟机的内存和其他项目。故障排除以下是你在使用 GNOME Boxes 时可能遇到的一些常见错误或问题。1、虚拟机中的分辨率问题如果你的虚拟机分辨率很低，这与你的主机系统不兼容，那么你必须安装以下项目。在客户系统（而不是主机系统）中打开终端并运行以下命令。对于基于 Ubuntu 的发行版：sudo apt install spice-vdagent spice-webdavd 对于 Fedora 系统：sudo dnf install spice-vdagent spice-webdavd 这两个包有助于确定合适的分辨率、在主机和客户之间复制/粘贴、通过公共文件夹共享文件等。安装后，重新启动客户系统；或者你可以在重启后注销并重新登录一次，你应该会看到正确的分辨率。2、在 Ubuntu 18.04 中 GNOME Boxes 不能启动虚拟机如果你在 Boxes 3.34 中创建虚拟机，那么你应该知道有一个错误导致你的虚拟机无法启动。要解决这个问题，你必须执行一些额外的步骤。请记住，最新的 Boxes 3.36 不需要这些。打开终端窗口并运行以下命令来更改 qemu 配置文件：sudo gedit /etc/modprobe.d/qemu-system-x86.conf 在上面的文件中添加以下行并保存：group=kvm 现在，运行以下命令将你的用户名添加到 KVM 组。sudo usermod -a -G kvm <你的帐户名称> 总结在本文中，你了解了如何安装和使用 GNOME Boxes 来利用虚拟化。我希望它能帮助你。?️ 如果你遇到任何错误或对 GNOME Boxes 的虚拟机有任何疑问，请使用下面的评论栏告诉我。（题图：MJ/b4d091cf-9585-468b-9ce6-ba0b0c69cce4）via: https://www.debugpoint.com/install-use-gnome-boxes/作者：Arindam 选题：lkxed 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
你在“发行版快闪”中做错了什么？你能做得更好吗？当然可以。在这里，我们告诉你如何做。“ 发行版快闪 Distro hopping ” 是指经常尝试新的 Linux 发行版，以寻找乐趣或找到适合你的完美发行版的习惯。毕竟，有着 数百种 Linux 发行版，而且时不时就有新的版本出现。你可能会担心错过它们，而去尝试 Linux 社区的最新潮流。无论你为何这样做，不管你喜欢与否，人们会犯下一些错误，这让“发行版快闪”的体验变得糟糕。这些错误是什么？让我带你一一了解：1、不进行备份嗯，你想要更换发行版，由于过于兴奋，你毫不犹豫就切换了。但是，如果你没有备份重要的、经常访问的数据，你可能需要重新配置系统和组织你需要的数据。所以，如果你有备份，无论你做什么，你需要的数据始终可访问，并帮助你在发行版之间快速的跳来跳去。2、不检查显卡的驱动支持用户常常忽略发行版与其系统中的显卡的兼容性，而抱怨发行版有问题。你必须确保你的发行版对你的显卡有开箱即用的支持。如果你像我一样有一块英伟达显卡，你应该只选择提供带有英伟达支持的 ISO，或在启动菜单中内置了该支持的发行版。例如，在 Linux Mint 上你需要 安装英伟达驱动。虽然大部分情况下这是一个简单且没什么麻烦的过程，但并不是每个人都愿意为之付出努力。你也可以选择 Pop!\_OS 或 Ubuntu，它们默认情况下与英伟达显卡兼容良好。3、抱有过高期望没有谁能完美地挑选出你需要和你可能喜欢的东西。所以，不要听从他人的建议。自己进行研究，选择你想尝试的下一个发行版。即使你知道你想要什么，也不要期望新的发行版一定会比你当前的发行版更好。各个发行版在许多方面都有所不同。你的下一个发行版可能解决了你遇到的问题，但也可能会带来你没有预料到的新问题。 最好假设你可能会遇到你没有预料到的困扰。所以，如果你要进行“发行版快闪”，请先系好安全带。4、在物理机上安装发行版不要安装新的发行版来替换你当前的发行版。如果你直接在你的计算机上更换发行版，可能会导致一些问题，你可能需要先花时间修复这些问题，甚至在了解或体验 Linux 发行版的最佳部分之前就要这样做。相反，你应该使用 立付 Live 环境 或 虚拟机 来尝试发行版。通常，你可以从启动菜单或“ 试用 Try ”选项中进入立付环境，以在安装 Linux 发行版之前测试一下。另外，你可以尝试使用 虚拟机来运行 Linux 发行版。通过使用虚拟机，你可以学习该发行版并进行各种测试，而无需麻烦地更改主机系统。通过这个选项，你无需改变你的主机系统。你可以测试所有基本要素，如 网络连接、应用程序可用性、预装工具 等等，而无需放弃当前的发行版。5、忽视你的使用场景发行版太多反而让事情变得混乱。一个发行版的某个部分或特性可能引起了你的注意，这让你认为其他部分也适合你。你接下来想要尝试的任何发行版应该完全符合你的需求才行。如果它提供了更多或不同的功能，对你来说不一定是好处。例如，一个发行版可能提供更多的可定制性，这一般是很好的。但如果你不需要那么多控制权，那些提供的选项可能会让你感到不知所措，或者很快对你来说就会像是无用软件。你可以了解一下有哪些 最佳 Linux 发行版，并根据文章中提到的特点对它们进行分析。一个例子是特定的使用场景，比如寻找一个在旧计算机上运行良好的 轻量级发行版：或者你正在寻找一些安全、可靠和未来可靠的系统？不可变的 Linux 发行版 应该适合你。或者...你想要 玩游戏 吗？也有相应的选择！简而言之，不要选择一个不适合你使用场景的发行版。6、更换日常工具除了发行版，一些用户还更换了他们每天使用的工具。考虑到工具对你的用户体验有重大影响，它最终会改变你的工作流程。你可能这样做是为了尝试新东西，但你应该坚持那些始终适合你的工具。也许你已经用上了 最佳基本应用程序，为什么要改变呢？只有当工具在新的发行版上无法按预期工作时，你才应该寻找替代方案。7、不选择桌面环境有几件事可以帮助你缩小在系统上安装 Linux 发行版的选择。其中之一就是 桌面环境。当然，在选择一个桌面环境之前，你应该了解一下有哪些 最佳桌面环境。一旦选择了一个，与你想要尝试带有任何桌面环境的发行版相比，你就不必频繁切换发行版。你应该停止“发行版快闪”吗？你想要探索不同的发行版，并找到最适合自己的一个，这并没有错。然而，如何从一个发行版“快闪”到另一个发行版可能会让这个过程变得麻烦，并且你可能会抱怨。你应该 遵循本文中提到的上述要点，在想要切换之前使用 虚拟机 尝试新的发行版。现在，你应该能在“发行版快闪”的过程中获得顺滑的体验了。? 请在下方评论中分享你的“发行版快闪”经历。你会这样做吗？（题图：MJ/5bdb860a-0505-476e-bb38-014ee8fe733e）via: https://itsfoss.com/distrohopping-issues/作者：Ankush Das 选题：lkxed 译者：ChatGPT 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
硬核观察 #1045 人工智能正在扼杀旧互联网
人工智能正在扼杀旧互联网互联网总是在消亡；多年来它一直在消亡，被那些从网站上转移流量的应用程序或奖励所谓缩短注意力的算法所杀死。但最近几个月，人工智能正在加速扼杀旧互联网。谷歌正试图改变其几十年一成不变的蓝色链接列表；领英使用人工智能来刺激疲劳的用户；Snapchat 和 Instagram 希望机器人能在你的朋友不在时与你交谈；Reddit 的版主们在抗议天价 API；Stack Overflow 的管理员们则在反对人工智能生成的内容；互联网档案馆正在对抗数据刮削者；维基百科正在被人工智能撕碎；聊天机器人们在反刍自己幻想出来的内容。消息来源：The Verge老王点评：感觉未来来的太快，这一年来因为 AI，发生了太多事情。DeepMind 称其下一个人工智能系统将超过 ChatGPTDeepMind 的 CEO 说，他们正在开发一个被称为 Gemini 的人工智能系统，该系统将比 OpenAI 的 ChatGPT 背后的系统更强大，Gemini 将结合 AlphaGo 中使用的技术，赋予该系统新的能力，如计划或解决问题的能力。AlphaGo 基于 DeepMind 的强化学习技术，通过反复尝试并接受关于其表现的反馈，学会处理需要选择采取何种行动的棘手问题。2016 年，AlphaGo 击败了人类棋手冠军，创造了历史。Gemini 仍在开发中，还将需要数月时间，它可能花费数千万乃至数亿美元。消息来源：Wired老王点评：在这件事上，谷歌暂时还没有说服力的产品。澳大利亚建议居民每晚重启手机澳大利亚政府告诉居民，作为一项网络安全措施，他们应该每天关闭和重新开启他们的智能手机。这个建议并不新鲜。2020 年，美国国家安全局发布了移动设备安全的最佳实践指南，其中包括每周重启一次智能手机以防止黑客攻击。网络安全专家称，定期重启手机可以将风险降到最低，因为它强行关闭了在后台运行的任何可能恶意监控用户或收集数据的应用程序和进程。消息来源：卫报老王点评：我觉得这种做法聊胜于无吧。顺便做个调查，有多少人不是全天都开着手机，一般多久才重启一次手机呢？
以下是在 GNOME 版本的 Fedora 工作站中启用分数缩放的步骤。 分数缩放 Fractional Scaling 是一项方便的功能，可让你最大程度地优化 HiDPI 显示器和高分辨率笔记本电脑。通过微调缩放比例，你可以创建平衡良好、既不太大也不太小且美观的桌面显示。虽然通过分辨率设置也可以，但由于操作系统的限制，它们通常符合你的实际情况。此外，它还允许你增加显示屏上文本和其他 UI 元素的大小，而不会使所有内容显得模糊。如果你有高分辨率显示器并希望使文本更易于阅读，这将很有用。Ubuntu 20.04 LTS 在 2020 年引入了 100%、125%、150%、175% 和 200% 的分数缩放。它可以在“ 显示 Display ”页面下的“ 设置 Settings ”中找到。但在默认 GNOME 桌面的 Fedora 工作站中，只有 100% 和 200% 缩放可用。如何使用 GNOME 在 Fedora 中启用分数缩放打开终端窗口（CTRL+ALT+T）。运行以下命令。此命令在带有 GNOME 的 Fedora 中启用 125%、150% 和 175% 缩放因子。gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']" 重启 Fedora。打开 “设置” 应用，你应该会看到新的缩放因子。但是，重要的是要注意分数缩放并不总是完美的。某些应用程序可能无法正确缩放。例如，如果应用程序设计不当，非 GTK 应用可能看起来很模糊。此外，请务必注意，由于 GPU 的渲染工作量更大，分数缩放可能会增加笔记本电脑的功耗。一些使用说明根据我的测试，上述命令在 Wayland 中应该是有效的。如果你不想使用上述命令，但仍想获得类似的体验，那么你可以按照以下步骤操作：使用 sudo dnf install gnome-tweaks 安装 GNOME “ 调整 Tweaks ” 应用。转到 “ 字体 Fonts ” 设置并更改比例因子。示例：如果你想保持 100% 缩放比例但想要更大的字体，请尝试缩放比例设为 1.1 或 1.2。根据你的需要进行调整。125%：这是分数缩放的典型值。它将文本大小和 UI 元素增加 25% 而不会使所有内容显得模糊。150%：对于想要放大文本和其他 UI 元素但又不想增加显示分辨率的人来说，这是一个很好的值。175%：对于想要使文本和其他 UI 元素变得非常大的人来说，这是一个很好的值。尝试不同的缩放因子对于找到最适合你的缩放因子至关重要。最佳缩放因子将取决于你的显示器尺寸、视力和偏好。我希望本指南有所帮助。（题图：MJ/4346b556-57ed-4c76-b2c9-e651e0d229f5）via: https://www.debugpoint.com/fractional-scaling-fedora/作者：Arindam 选题：lkxed 译者：geekpi 校对：校对者ID本文由 LCTT 原创编译，Linux中国 荣誉推出
通常，我用的是基于 Ubuntu 的发行版进行工作，如 Pop!\_OS、Zorin OS、Linux Mint 或 Ubuntu 本身。它们不会干扰我的工作，同时又提供了顺滑的软件更新。更不用说，它们与我使用的英特尔-英伟达系统相容性良好。所有的一切（可能是主观的）都能开箱即用。然而，最近我决定在实体机上切换到 Arch Linux（我大部分时间都是在虚拟机上使用它）。结果，我最终选择使用了 Manjaro Linux（一款基于 Arch 的发行版）。我选择 Manjaro Linux 的原因令我惊讶的是，即使是使用 Arch Linux 的立付 USB，我甚至无法解决 “nouveau DRM: core notifier timeout” 错误，更别提继续安装了。是的，我知道有向导式的 Arch Linux 安装程序，但是不论怎么样，连接的显示器都会闪烁并突出显示这个错误。解决这个问题的最好办法是不使用我的最近刚刚升级的英伟达显卡。很遗憾，我更喜欢英伟达的显卡……AMD 的 RX 6600 XT 的价格与 RTX 3060 Ti 相当；对于 1440p 来说，购买那款显卡是没有意义的。因此，在我这个情况下，RTX 3060 Ti 可能是问题所在。虽然我找到了一些解决问题的方法，但是我太懒了。我只是想看看能否在不用付出太多努力的情况下体验一下 Arch Linux。所以，我做了以下的事情：下一个最佳选择就是尝试任何一个专门简化了麻烦的 最佳的基于 Arch 的发行版，对吧？这就是 Manjaro Linux 登场的地方。Manjaro Linux 是一款流行的基于 Arch 的发行版，并且我注意到每次更新时都有各种改进（在虚拟机上使用时）。此外，我喜欢 Manjaro 默认主题的强调色，很适合我的桌面体验。所以，我决定试试看……Manjaro Linux: 起步有点困难使用专有的英伟达驱动程序安装 Manjaro 时我没有遇到任何问题。然而，最近的一个小版本更新，Manjaro Linux 21.2.6， 把我的系统弄乱了。我无法访问登录界面和 TTY（我只能看到主板制造商的标志）因此，我只能使用最新的 ISO 重新安装 Manjaro Linux，到目前为止一切都还好（千万别出问题）。在我使用 Manjaro Linux 的过程中，我注意到了一些事情，有好有坏。在这里，我分享一些我的经历。如果你还没有尝试过，这些经验应该对你帮助很大，可以让你更多地了解它。1、简单的安装基于 Arch 的发行版的主要亮点是使安装过程变得简单。对我来说，完全没有遇到任何问题。在我的第二块硬盘上安装 Manjaro Linux 是一件轻而易举的事情。引导加载程序正确配置，显示了 Manjaro 主题的启动菜单，让我可以选择 Windows/Manjaro Linux 进行双启动。2、Manjaro 欢迎页当尝试新东西时，欢迎体验在用户体验中占据了一大部分重要性。在这方面，Manjaro Linux 没有让人失望。如果你仔细关注欢迎屏幕上提供的信息，你可以获得所有必要的信息。GNOME 布局管理器能让你选择一个合适的布局，使你更加舒适。然而，当我尝试在这里启用“窗口平铺”功能时，它却无法正常工作：3、包管理器快速且功能丰富考虑到 GNOME 是我最喜欢的桌面环境，我在软件中心（甚至是像 Pop!\_Shop 这样特定于发行版的商店）上有过糟糕的经历。虽然它们可以完成工作，但有时它们对我的期望反应不及预期。在 Manjaro Linux 中，我发现安装了 Pamac 作为包管理器。这似乎是 在 Manjaro Linux 上安装和卸载软件的最佳方式之一。根据我的经验，它在安装和卸载软件时非常快速。在安装某些软件时，你还会收到关于软件包冲突或是否需要替换/删除某些软件包的提示。当你安装某些东西时，包管理器提供了关于可选/必需依赖项的大量信息。总体来说，体验非常流畅，没有出现任何麻烦。为了提升体验，包管理器还可以通过调整 pamac 的偏好设置，快速启用对 Flatpaks/Snaps/AUR 的支持。所以，你不必使用终端或不同的软件商店。一切都可在一个统一的平台下获得，这大大节省了时间。4、尝试 ZSH Shell我习惯于在基于 Ubuntu 的发行版上使用 Bash shell。然而，Manjaro Linux 默认使用 Zsh shell。我相信 Zsh 比 Bash 更好，不过我很快会在另一篇文章中介绍并深入比较。换句话说，我可以直接尝试不同的东西。令我兴奋的是，终端提示符和遵循 Manjaro 品牌的Shell（或终端）的主题也采用了 Manjaro 的强调色，非常令人印象深刻！因此，我没有必要在此处 自定义终端的外观。要了解更多信息，你可以查看一些关于 Zsh 是什么 以及 如何安装它 的信息。5、缺乏官方软件支持我希望这个情况能够很快改善。但目前来说，许多软件/工具只提供对 Ubuntu 和 Fedora 的官方支持。你可以在各种工具中找到官方的 DEB/RPM 包，但它们都不能直接在 Manjaro Linux 上使用。你得依赖 Arch Linux 仓库或 AUR 中提供的软件包。幸运的是，很有可能在 AUR 或社区或发行版开发者维护的仓库中找到所需的软件。就像我能够在 Manjaro Linux 上运行 Insync，并使用文件管理器的集成扩展。然而，由于缺乏对该平台的官方支持，你可能会错过一些功能或快速更新。当然，如果你依赖于 Flatpak 或 Snap 软件包，这对你来说应该不是个问题。此外，如果你是 Linux 的新手，你可以参考我们的 Flatpak 指南 获取更多信息。6、缺少分数缩放我有一个由 1080p 和 1440p 分辨率组成的双显示器。因此，分数缩放很有帮助，但我可以不用它来操作。要在 Manjaro 上启用分数缩放，你需要安装支持 X11 缩放的 Mutter 和 GNOME 控制中心软件包。这些软件包包括：mutter-x11-scalinggnome-control-center-x11-scaling这将替换你现有的 Mutter 和 GNOME 控制中心软件包。因此，你将失去桌面的默认主题/强调色设置。你可能需要使用 GNOME “ 调整 Tweaks ”应用来将一切调整正确。但是，这可能会令人感觉麻烦。总结总体而言，我喜欢在 Manjaro Linux 上的桌面体验。如果那个更新没有搞坏我的系统，我认为我会继续使用 Manjaro Linux 作为我的新日常操作系统。你认为 Manjaro Linux 的优点和缺点是什么？我在我的新体验中有遗漏了什么吗？作为一个有经验的 Arch Linux 用户，你有任何建议吗？请在下方评论中告诉我你的想法。（题图：MJ/2726c4dd-5611-4ace-8c77-0db894ad6a23）via: https://news.itsfoss.com/manjaro-linux-experience/作者：Ankush Das 选题：lujun9972 译者：ChatGPT 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出