i3 窗口管理器终极定制指南

Summary: 在这份超详细的指南中了解如何通过 i3 窗口管理器来自定义系统的外观和体验。

太硬核了

这么长文不容易，感谢。

相当流畅的网站呀！

在这份超详细的指南中了解如何通过 i3 窗口管理器来自定义系统的外观和体验。

![](/data/attachment/album/202306/30/102801n3z6gasul1lliwz0.jpg)

>
> 在这份超详细的指南中了解如何通过 i3 窗口管理器来自定义系统的外观和体验。
>
>
>

你可能在网上（尤其是通过 `r/unixporn` 子区）看到过很多炫酷的截图，用户可以根据个人喜好自定义他们的桌面并与大家分享。

这是因为 Linux 允许你自定义桌面体验的方方面面。

而结果？就是比任何 Mac 或 Windows 系统**更具视觉和感知效果**。

来看一下这个 ?

![](/data/attachment/album/202306/30/102820uocpcshfuyf888yr.jpg)

**看起来像一个 Linux Mint 系统吗？** ?

但是你怎样才能做到这样呢？**自定义你的 Linux 桌面外观是很困难的**。

答案就在于 **窗口管理器**。如果你能配置好窗口管理器，你就能自定义外观。

在本指南中，我将引导你完成使用 **i3 窗口管理器** 进行基本配置。它是 [Linux 上最好的窗口管理器之一](https://itsfoss.com/best-window-managers/)。

>
> ? “<ruby> 加料 <rt>  Rice </rt></ruby>” 是一个常用的词汇，用来指代在桌面上进行视觉改进和自定义。**引用自** [/r/unixporn](https://www.reddit.com/r/unixporn) （LCTT 译注：“加料”一词来自于购买便宜的亚洲汽车，并给它们安装售后零件，以让它更好地类似于赛车。）
>
>
>

在遵循本指南之前，你需要了解以下内容：

* 在本指南中，**我将使用 Arch Linux** 来演示步骤，但你可以使用你喜欢的任何发行版，结果也是一样的。
* 请记住，本指南是 **对 i3 进行“加料”定制的基础**。

在按照本指南进行操作后，你应该得到以下预期结果：

![如何在 Linux 中配置 i3 窗口管理器、i3blocks 和 i3gaps](/data/attachment/album/202306/30/102821zq7ttqtktfu7pkqb.png)

>
> ? 为了节省你的时间，我已经在 [GitHub](https://github.com/itsfoss/text-files/tree/master/i3_config_files) 上上传了与本文相关的所有 i3 配置文件，你可以通过这些文件实现我们在本文中所期望的最终外观。
>
>
>

>
> **[下载 i3 配置文件](https://github.com/itsfoss/text-files/tree/master/i3_config_files)**
>
>
>

**首先**，让我们开始安装 **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：

![在 Arch Linux 上使用 lightdm 使用 i3 窗口管理器](/data/attachment/album/202306/30/102822t5et88z1k5158u7f.png)

当首次登录 i3 时，它会询问你是否要创建一个 i3 配置文件。

按下回车键创建一个新的 i3 配置文件：

![生成 i3 配置文件](/data/attachment/album/202306/30/102822hnnnomobnrnerwub.png)

接下来，它会询问你选择 `Win` 或 `Alt` 键哪个作为修饰键（`mod`）。

我建议你选择 `Win`（或者 `Super` 键），因为大多数用户已经习惯将其用作快捷键：

![](/data/attachment/album/202306/30/102823rd00ll9fd0sdfnqd.png)

现在你可以开始使用 i3 窗口管理器了。

但在我们开始定制之前，让我先介绍一下你如何使用 i3。

### i3 窗口管理器的按键绑定

让我们从基础知识开始。

窗口管理器的基本功能是将多个窗口水平和垂直地组合在一起，这样你就可以同时监视多个进程。

结果是这样的：

![在 Arch Linux 上使用 i3](/data/attachment/album/202306/30/102823pdthka1ttmbmyw9h.png)

你可以使用以下按键绑定执行更多操作：

| 按键绑定 | 描述 |
| --- | --- |
| `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](https://itsfoss.com/aur-arch-linux/)，你需要使用 AUR 包管理器。在这里，我将使用 `yay`。

首先，安装 `git`：

```
sudo pacman -S git

```

现在，克隆 `yay` 存储库并切换到 `yay` 目录：

```
git clone https://aur.archlinux.org/yay-git.git && cd yay

```

最后，构建包：

```
makepkg -si

```

还有其他一些 [AUR 包管理器](https://itsfoss.com/best-aur-helpers/)，比如 Paru，如果你想使用除 `yay` 之外的其他工具，你可以继续或者探索其他选项。

### 更改 i3 窗口管理器的分辨率

如果你使用虚拟机运行窗口管理器，可能会遇到问题，尤其是显示分辨率可能被锁定在 `1024x768` 上，就像我一样。

因此，你需要执行以下命令，指定所需的显示分辨率：

```
xrandr --output [显示名称] --mode [分辨率]

```

要找到已连接显示器的名称，你需要使用以下形式的 `xrandr` 命令：

```
xrandr | grep -w 'connected'

```

![在 i3 中查找已连接显示器](/data/attachment/album/202306/30/102857zxxtczz82tbzipnd.png)

在我的情况下，显示名称是 `Virtual-1`。

因此，如果我想将分辨率更改为 `1920*1080`，我需要执行以下命令：

```
xrandr --output Virtual-1 --mode 1920x1080

```

**但这只是暂时生效**。要使其永久生效，你需要在 i3 配置文件中进行更改。

首先，打开配置文件：

```
nano ~/.config/i3/config

```

通过按下 `Alt + /` 来在 `nano` 中 [跳到文件末尾](https://linuxhandbook.com/beginning-end-file-nano/)，并使用以下语法来永久更改显示分辨率：

```
# 显示分辨率
exec_always xrandr --output [显示名称] --mode [分辨率]

```

结果应该是这样的：

![在 i3 中永久更改显示分辨率](/data/attachment/album/202306/30/102857ezeazoaha70u423l.png)

完成后，[保存更改并退出 nano](https://linuxhandbook.com/nano-save-exit/) 文本编辑器。

现在，使用 `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` 目录中，所以我的命令如下：

![使用 feh 实用工具在 I3 窗口管理器中更改背景](/data/attachment/album/202306/30/102857dstn6m5zz7a34rrn.png)

保存更改并退出 `nano` 文本编辑器。

为了使配置文件的更改生效，使用 `Mod + Shift + r` 重新启动 i3 窗口管理器。

我的效果如下：

![在 i3 窗口管理器中更改壁纸](/data/attachment/album/202306/30/102857x7quo1u1juj7jyyo.png)

### 自定义 i3 锁屏界面

默认情况下，如果你想锁定系统，你需要执行以下命令：

```
i3lock

```

锁屏界面如下所示：

![锁定 i3 窗口管理器](/data/attachment/album/202306/30/102858men99bu3enni9q54.gif)

下面，我将向你展示：

* 如何创建自定义快捷方式以锁定 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 页面上找到 [详细的说明](https://github.com/Raymo111/i3lock-color)。

安装完成后，让我们创建一个新目录并创建一个新文件来存储锁屏界面的配置：

安装好 `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 命令](https://linuxhandbook.com/chmod-command/) 将该文件设置为可执行文件：

```
sudo chmod +x .config/scripts/lock

```

接下来，你需要对配置文件进行一些更改，以添加该配置文件的路径以使其生效。

此外，我将向你展示如何使用自定义键盘快捷键锁定屏幕。

首先，打开配置文件：

```
nano ~/.config/i3/config

```

使用 `Alt + /` 跳至行尾并粘贴以下内容：

```
# 锁屏快捷键
bindsym $mod+x exec /home/$USER/.config/scripts/lock

```

在上面的示例中，我将 `mod + x` 作为锁定屏幕的快捷键，你可以选择任何你喜欢的快捷键。

最后的配置文件将如下所示：

![如何在 Arch Linux 中使用 i3lock-color](/data/attachment/album/202306/30/102858rkjukk79wzkwy865.png)

相当不错，不是吗？

### 在 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 “<ruby> 调整 <rt>  Tweaks </rt></ruby>” 应用更改主题一样来应用主题。**

**在 i3 中，你可以使用 `lxappearance` 工具** 来更改主题和图标。

在 Arch 中安装 `lxappearance`，使用以下命令：

```
sudo pacman -S lxappearance

```

在 Ubuntu/Debian 系统中：

```
sudo apt install lxappearance

```

安装完成后，使用 `Mod + d` 启动 D 菜单，然后输入 `lxappearance`，并在第一个结果上按回车键。

在这里，选择你喜欢的主题。我这里选择 `Materia-dark`。

选择主题后，点击应用按钮以应用更改：

![](/data/attachment/album/202306/30/102858o9c9o59k9zk7c9ia.png)

同样地，要更改图标，选择 “<ruby> 图标主题 <rt>  Icon Theme </rt></ruby>”，选择图标主题，然后点击应用按钮：

![使用 lxappearance 更改 i3 窗口管理器中的图标](/data/attachment/album/202306/30/102859pfgywww1a6yfswg9.png)

应用主题和图标后，我的文件管理器如下所示：

![在 i3 窗口管理器中更改主题和图标](/data/attachment/album/202306/30/102859dsg97i9ngxxgza5o.png)

### 在 i3 窗口管理器中为工作区设置图标

默认情况下，工作区仅由数字表示，这并不是你想要使用工作区的最理想方式。

因此，在本部分中，我将引导你如何使用合适的图标更改工作区的名称。

为了在配置文件中使用图标，首先你需要安装名为 `Awesome` 的新字体：

对于基于 Arch 的发行版：

```
sudo pacman -S ttf-font-awesome

```

对于 Ubuntu/Debian 系统：

```
sudo apt install fonts-font-awesome

```

安装完成后，打开 i3 配置文件：

```
nano ~/.config/i3/config

```

在这个配置文件中，找到工作区的部分，你将会看到为每个工作区给出的变量：

![在 i3 配置文件中的工作区变量](/data/attachment/album/202306/30/102931n80bo8eowvszz040.png)

在这个部分，你需要用你想要的名称替换给出的工作区数字。

我将把第一个工作区命名为 “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 字体的备忘单](https://fontawesome.com/v5/cheatsheet) 来找到合适的图标。

将图标复制粘贴到名称前面：

```
# 定义默认工作区的名称，稍后我们将在其中配置键绑定。
# 我们使用变量来避免在多个地方重复使用名称。
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，然后再次登录以应用你刚刚所做的更改。

我的效果如下图所示：

![](/data/attachment/album/202306/30/102931wsbrrwobbm2s5i2t.png)

字体看起来太小？是时候解决这个问题了！

### 在 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` 重新启动窗口管理器，这样就完成了工作：

![](/data/attachment/album/202306/30/102931i7k5o1z5ovxfrx5n.png)

### 在 i3 窗口管理器中分配应用程序到工作区

在给工作区命名之后，你会想要将特定的软件分配到相应的工作区中。

例如，如果我将第二个工作区命名为 “Firefox”，那么我只想在该工作区中使用 Firefox。

那么要如何实现呢？

为了做到这一点，你需要找到每个要分配的应用程序的类名。

**听起来复杂？** 让我告诉你如何做。

首先，将应用程序和终端并排打开。例如，在这个例子中，我将 Firefox 和终端并排打开：

![并排打开应用程序和终端](/data/attachment/album/202306/30/102932vow0ggvqzfqtvdzt.png)

现在，在终端中执行 `xprop` 命令，它会改变鼠标指针的形状：

```
xprop

```

接下来，将鼠标悬停在应用程序上，并在应用程序窗口内的任何位置单击，如图所示：

![在 i3 窗口管理器中查找类名](/data/attachment/album/202306/30/102933fupn6zuuu5skil5n.gif)

类名将在以下行的最后一个字符串中找到：

```
WM_CLASS(STRING) = "Navigator", "firefox"

```

在我的情况下，Firefox 浏览器的类名将是 `firefox`。

对所有你想要分配到工作区的应用程序重复这个过程。

**一旦你知道每个你想要分配到工作区的应用程序的类名，打开配置文件：**

```
nano ~/.config/i3/config

```

使用 `Alt + /` 将 `nano` 定位到文件末尾，并使用以下语法将应用程序分配到工作区：

```
# 分配应用到工作区
for_window [class="类名"] move to workspace $[工作区变量]

```

作为参考，下面是我为不同应用程序分配了 4 个工作区后的配置文件示例：

![将应用分配到工作区](/data/attachment/album/202306/30/102933xs34z04so04ec9im.png)

现在，无论在哪个工作区打开任何应用程序，它都会自动放置在配置的工作区中。非常方便！ ?

### 在 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。

接下来，打开终端，打开 “<ruby> 首选项 <rt>  Preference </rt></ruby>”，然后选择“<ruby> 配置文件 <rt>  Profiles </rt></ruby>”，选择“<ruby> 背景 <rt>  Background </rt></ruby>”，然后选择“<ruby> 透明背景 <rt>  Transparent background </rt></ruby>”选项。

从这里，你可以调整透明度：

![在 i3 窗口管理器中更改终端背景透明度](/data/attachment/album/202306/30/102933luamt555uzrltu7g.png)

### 在 i3 窗口管理器中自定义状态栏

默认情况下，状态栏显示各种信息，但没有图标。

因此，在这个部分，我将展示如何从状态栏中删除一些元素以及如何为它们添加图标。

但是，在这里，我将在 `/etc/i3status.conf` 中创建一个原始状态栏的副本，以便如果出现任何错误，你可以随时恢复到默认配置。

首先，在 `.config` 目录下创建一个新的目录：

```
mkdir .config/i3status

```

在以下命令中，我使用了 [cp 命令来复制文件](https://linuxhandbook.com/cp-command/)：

```
sudo cp /etc/i3status.conf ~/.config/i3status/i3status.conf

```

接下来，使用 [chown 命令更改所有者](https://linuxhandbook.com/chown-command/)，以便你可以进行所需的更改：

```
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
}

```

最终的结果应该如下所示：

![在 i3 窗口管理器中更改 i3 状态配置路径](/data/attachment/album/202306/30/102935ri04p7zm411zyjvm.png)

保存更改并退出文本编辑器。

现在，让我们从状态栏中删除不必要的指示器。

首先，打开 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 列表](https://fontawesome.com/v5/cheatsheet)，找到与状态栏中列出的项目相关的适当图标。

在我的设置中，我删除了以下内容：

* 删除了显示可用内存的行
* 删除了显示以太网连接速度的行

最终，我的状态栏如下所示：

![自定义 i3 窗口管理器中的状态栏](/data/attachment/album/202306/30/102935jencumgmru7zg2xu.png)

### 在 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 配置手册](https://i3wm.org/docs/userguide.html#client_colors) 以了解更多信息。
>
>
>

一旦你对配置文件进行了更改，请使用 `Mod + Shift + r` 重新启动 i3。

如果你按照我的颜色方案，设置应该如下所示：

![更改 I3 窗口管理器中的窗口颜色](/data/attachment/album/202306/30/103014uo5uca5ujzqcnq1a.png)

那么，状态栏的颜色怎么办？当然可以改！

#### 更改 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 状态栏中更改字体](/data/attachment/album/202306/30/103016y9ieq631zqxdipoo.png)

完成后，请重新启动 i3，字体将会被更改！

要使状态栏透明，你可以使用现有十六进制代码中的额外两个数字来定义透明度。

如果你想要控制透明度，我建议你查看 [此指南，其中提供了从 0 到 100% 透明度的代码范围](https://gist.github.com/lopspower/03fb1cc0ac9f32ef38f4)。

为此，我将在配置文件中使用两个新变量。首先，打开配置文件：

```
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 状态栏透明的配置文件（i3 窗口管理器）](/data/attachment/album/202306/30/103016a62ffo7pg1l0z2qf.png)

为了使你所做的更改生效，请重新启动 i3，你将得到透明的窗口和状态栏：

![在 i3 窗口管理器中使状态栏和窗口透明](/data/attachment/album/202306/30/103017nc3ztxjpupuukthc.png)

### 在窗口管理器中使用 i3blocks

默认的 i3 状态栏在我看来毫无用处；怎么样让它变得有用起来呢？

在本部分，我将解释如何添加以下功能：

* 软件包更新
* 内存使用情况
* 磁盘使用情况
* 音量指示器
* Spotify 指示器

>
> ? 要实现这些功能，你需要使用一些脚本，这些脚本将允许你向状态栏添加所需的操作。不用担心，我不会让你手动输入脚本；GitHub 上有各种脚本可供选择，几乎涵盖了你所需的所有方面。
>
>
>

但在此之前，你需要进行一些配置，以存储脚本并指示 i3 使用 i3block 的配置，而不是使用 i3bar。

如果你在本指南的开头按照给定的说明进行操作，那么 i3blocks 已经安装好了，并且配置文件位于 `/etc/i3blocks.conf`。

*如果你希望快速下载块配置文件以进行设置而不阅读其他内容，请点击以下链接：*

>
> **[i3 配置文件](https://github.com/itsfoss/text-files/tree/master/i3_config_files)**
>
>
>

在本教程中，我将创建一个副本，使用它代替原始的配置文件，因此首先我们要创建一个目录来存储配置文件的副本：

```
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 配置文件的路径，如下所示：

![在 i3 窗口管理器中启用 i3blocks](/data/attachment/album/202306/30/103019tz822cr0znt03zcr.png)

完成后，使用 `Mod + Shift + r` 重新启动 i3 窗口管理器，整个状态栏都会被更改，并显示如下：

![i3 窗口管理器中 i3blocks 的默认外观](/data/attachment/album/202306/30/103020ulb4p4tco5cplcce.png)

不要担心，你将很快使状态栏比以前的 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}<span color='{1}'>{2}</span>"
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 页面上的说明](https://github.com/vivien/i3blocks-contrib/tree/master/apt-upgrades) 进行操作。

#### 添加音量指示块

添加音量指示块需要一些努力，因为你希望它的行为符合预期。你需要实现以下功能：

* 使用媒体控制键管理音量的键绑定
* 添加一个指示音量的音量块

但要做到这一点，首先你需要安装一些依赖项。

如果你使用的是 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](https://github.com/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。

添加了我提到的块后，状态栏将如下所示：

![在 i3 窗口管理器中定制 i3blocks ](/data/attachment/album/202306/30/103114h87ph979097p705c.jpg)

你可以查看我的主屏幕，其中包含这些块（点击下方的图片查看）。

![在 i3 窗口管理器中定制 i3blocks ](/data/attachment/album/202306/30/103115a7v0jci0zc70woew.png)

>
> ? 如果你对那些默认块（文档和问候语）的位置感到困惑，我用了几个注释将它们禁用以实现所示的外观！
>
>
>

### 在 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，并会看到窗口之间的间隙：

![在 i3 窗口管理器中使用 i3gaps](/data/attachment/album/202306/30/103149s6kreu8rcuqswwle.png)

但是，如果你想调整间隙的大小怎么办？这非常简单，只需要简单的步骤即可完成：

* 按下 `Mod + Shift + g` 进入间隙模式
* 使用给定的选项选择要更改的内容
* 使用 `+` 或 `-` 增加/减小间隙
* 完成后，按 `Esc` 键退出间隙模式

就是这样！

### 我们忘记自定义终端了吗？

不用担心；你可以 [切换到 Zsh](https://itsfoss.com/zsh-ubuntu/)，这是一个不同的 shell，使终端看起来与众不同，或者探索一些鲜为人知的 [Linux Shell](https://itsfoss.com/shells-linux/)。

无论如何，你都可以 [自定义现有终端](https://itsfoss.com/customize-linux-terminal/)，或选择不同的 [终端模拟器](https://itsfoss.com/linux-terminal-emulators/)。

**我希望你不再畏难如何美化系统！** ?

*如果你有任何建议或想展示你的配置，请在评论部分留言。*

*（题图：MJ/2874542d-6a8f-4b27-8e65-477389a0dcca）*

---

via: <https://itsfoss.com/i3-customization/>

作者：[Sagar Sharma](https://itsfoss.com/author/sagar/) 选题：[lkxed](https://github.com/lkxed/) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1048 Linus 的放松方式是写内联汇编

Summary:
? Linus 的放松方式是写内联汇编
? Rocky Linux 反对红帽的决定，并找出了合法获得 RHEL 源代码的方法
? 微软公开预览 Windows 11 Copilot
»
»

如果没有Rocky之流，红帽大概率会变成另一个微软。。。

![](/data/attachment/album/202306/30/164151e7pddt76ug6979q8.jpg)

![](/data/attachment/album/202306/30/164202f9zjp08o3cr0um92.jpg)

### Linus 的放松方式是写内联汇编

Linus Torvalds 在改进一个性能优化补丁后说，“有些人通过在泳池边喝杯好酒来放松，我通过玩内联汇编来放松”。这个补丁是为正在进行的 Linux 6.5 合并窗口提出的，它大幅提升了吞吐量，并降低了用于校验的 csum\_partial 函数调用的延迟。在某些情况下，可能会有 8~9% 的延迟改善，以及大约 30% 的吞吐量改善。另外一个内核工程师调侃道，“还有第三种人，他们在游泳池边喝着好酒，*同时*玩着内联汇编”。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Linus-Torvalds-Relax-Inline-ASM)**
>
>
>

>
> 老王点评：好吧，真是独特的放松方式。我的放松方式之一就是写写代码，前提是这些代码不让我暴跳如雷。?
>
>
>

![](/data/attachment/album/202306/30/164218dtizn966f55iohfh.jpg)

### Rocky Linux 反对红帽的决定，并找出了合法获得 RHEL 源代码的方法

在红帽公司决定 [限制](/article-15933-1.html) 对 RHEL 源代码的访问后，并通过服务条款（TOS）和最终用户许可协议（EULA）施加了一些条件，试图阻碍合法客户行使 GPL 所保证的权利。Rocky Linux 认为“这种协议违反了开源的精神和目的”，并已经找出了其它获得 RHEL 源代码的方法：一个选择是通过使用 UBI 容器镜像，它是基于 RHEL 的，可以从多个在线来源获得；另一个方法是通过按使用量付费的公共云实例，从而获得所有软件包和勘误表的源代码，并且可以通过 CI 管道自动完成所有这些工作。Rocky Linux 强调，“这些方法之所以可能是因为 GPL 的力量。没有人可以阻止 GPL 软件的再分发。重申一下，这两种方法使我们能够合法地获得 RHEL 二进制文件和源码包，而不影响我们对开源软件的承诺，也不会受到妨碍我们权利的 TOS 或 EULA 限制。”

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Rocky-Linux-RHEL-Source-Access)**
>
>
>

>
> 老王点评：我觉得这件事上红帽是自取其辱。一方面用着 GPL 软件赚钱，另外一方面又试图无视 GPL 许可证赋予的权利。没错，红帽是“没有义务让重新构建者的工作更加容易”，但是从根本上它不能违反 GPL 协议而限制源代码的可得性。最终结果是，RHEL 下游发行版依然存在，红帽却显得吃相难看。
>
>
>

![](/data/attachment/album/202306/30/164232r0gactdddzccas94.jpg)

### 微软公开预览 Windows 11 Copilot

几个月前，微软在 Edge 和必应支持的任务栏搜索栏中加入了生成性人工智能。本周，微软在 Windows Insider 中为公共测试者提供了 Copilot 预览。用户可以按快捷键在屏幕右侧打开 Copilot 栏。除了聊天功能，Copilot 还将支持使用 OpenAI 的 DALL-E 2 模型创建图像。此外，Copilot 还将在一开始就推出必应广告，微软将为你提供该公司 “认为相关” 的广告。

>
> **[消息来源：Ars Technica](https://arstechnica.com/gadgets/2023/06/windows-11s-copilot-brings-ai-chat-to-desktops-in-first-public-preview/)**
>
>
>

>
> 老王点评：说实话我觉得现在的 AI 和操作系统的结合还属于生搬硬套，什么时候操作系统不需要人类“操作”了，才真正的变成了 AI 的“系统”。
>
>
>


真正轻量级的 Linux 记事本

一个真正轻量级的文本编辑器还需要一个简短的名字，以便从命令行运行它。

shell 中有个叫别名的东西。没必要使用过于简短的命名。

来自宁夏银川的 Chrome Mobile 113.0|Android 10 用户

我很好奇为什么要追求一味的轻量级。这不是好事情。<br />
优秀的编辑器 应该是具备基本的功能和完备的扩展性。

medit 也很小

还是latex好用

还是latex好用

对于大多数人，win上面的记事本已经够用了。。。

软件的复杂度与硬件需求是指数关系。。。

现在Gnome桌面的系统，开机以后内存占用与Win相差无几了。。。

>
> 轻量级、资源友好的基于 GUI 的基本记事本列表，适用于 Ubuntu 和其他 Linux。
>
>
>

![](/data/attachment/album/202307/01/111834q3fbuio45xq34l3p.jpg)

Linux 是一个因其速度、稳定性和灵活性而广受欢迎的操作系统。Linux 的一个关键特点是能够根据你的需求自定义和配置系统。这包括选择适合你系统的正确应用程序和工具。本教程将介绍一些适用于 Linux 的最佳轻量级记事本。我们将查看它们的特点、优缺点，并提供选择适合你需求的正确记事本的建议。无论你是学生、程序员，还是喜欢做笔记的普通用户，一款优秀的记事本对于任何 Linux 用户来说都是必不可少的工具。

### Ubuntu 和其他发行版的最佳轻量级记事本

#### 1、Mousepad

该列表中的第一个是流行的文本编辑器 - Mousepad。它是 Xfce 桌面环境的默认文本编辑器，使用 GTK 开发。它简单轻便，但与本列表中的 Leafpad 相比，它具有更多的设置和功能。

你可以将其视为具有一些额外功能的 Leafpad。

其关键特点包括深浅色主题、标签式编辑、字体和插件功能。你可以在安装后和使用过程中发现更多类似的设置。

下面是其外观示例：

![在 Ubuntu 上运行的 mousepad](/data/attachment/album/202307/01/111843gwequw5gqwjwqk7w.jpg)

由于 Mousepad 在所有主要的 Linux 发行版仓库中都可用，所以安装非常简单。

对于 Ubuntu、Linux Mint 和相关发行版，使用以下命令进行安装。

```
sudo apt install mousepad

```

对于 Fedora Linux，请使用以下命令：

```
sudo dnf install mousepad

```

而 Arch Linux 用户可以使用以下命令进行安装：

```
sudo pacman -S mousepad

```

#### 2、Featherpad

[FeatherPad](https://github.com/tsujan/FeatherPad) 是一个独立于桌面环境的基于 Qt 的轻量级文本编辑器，适用于 Ubuntu 和其他 Linux 发行版。它的一些关键特性包括拖放支持、分离和附加标签、虚拟桌面感知，以及一个可选的固定搜索栏，并有每个标签的入口。

此外，它可以在搜索时立即突出显示找到的匹配项，提供了一个停靠窗口用于文本替换，并支持显示行号和跳转到特定行。

此外，Featherpad 可以检测文本编码，为常见的编程语言提供语法高亮，并支持会话管理。它还具有拼写检查（使用 Hunspell）、文本缩放、打印和自动保存等功能。

![在 Ubuntu 上运行的 Featherpad](/data/attachment/album/202307/01/111852yg0ngs1e4wgfesgz.jpg)

安装 Featherpad 很简单。

对于 Ubuntu 和相关的发行版，你可以使用终端中的以下命令进行安装：

```
sudo apt install featherpad

```

对于 Fedora Linux，请使用以下命令进行安装：

```
sudo dnf install featherpad

```

Arch Linux 用户可以使用以下命令进行安装：

```
sudo pacman -S featherpad

```

#### 3、Leafpad

[Leafpad](http://tarot.freeshell.org/leafpad/v) 是一个基于 GTK 的简单的轻量级 Linux 文本编辑器。它旨在快速、易于使用，并且需要最少的资源。Leafpad 具有干净直观的用户界面，提供了你所需的所有基本文本编辑工具，如剪切、复制和粘贴，并支持撤消和重做。此外，它还支持多种编程语言的语法高亮，使其成为程序员的有用工具。

由于其简单和高效性，Leafpad 是 Linux 用户的热门选择。它可能是 Windows 记事本应用程序的完美替代品。它具有所有基本功能，包括自动换行、行号、字体选择和自动缩进。

下面是它的外观示例。这是列表中最简单和轻量级的记事本。

![leafpad - 在 Ubuntu 上运行的简易记事本](/data/attachment/album/202307/01/111900lq0v9l0c2in2zcv0.jpg)

但是，在 Ubuntu 上安装 Leafpad 有些棘手。不幸的是，它在 Universe 仓库中不可用，只能作为 Snap 软件包而不是 Flatpak 软件包使用。

但是，你可以从 Debian 仓库中获取并在 Ubuntu 中安装它。

从 Debian 仓库下载 deb 文件，并使用以下命令进行安装。

```
wget http://ftp.us.debian.org/debian/pool/main/l/leafpad/leafpad_0.8.18.1-5_amd64.deb

```

```
sudo dpkg -i leafpad_0.8.18.1-5_amd64.deb

```

Fedora 用户可以使用以下命令进行安装：

```
sudo dnf install leafpad

```

Arch Linux 用户可以使用以下命令进行安装：

```
sudo pacman -S leafpad

```

#### 4、Beaver 编辑器

[Beaver](https://sourceforge.net/projects/beaver-editor/) 编辑器是一个轻量级、启动快速的文本编辑器，具有极少的依赖性。它是基于 GTK+2 库构建的，不需要额外安装的库，非常适合在较旧的计算机和小型 Linux 发行版上使用。Beaver 的核心功能包括基本功能和语法高亮，还可以通过插件添加额外功能。其界面简洁高效，并包含高质量的 Tango 美术作品。

![Beaver 编辑器在 Ubuntu 上运行](/data/attachment/album/202307/01/111910ilzj9ew1b321jfbz.jpg)

这是一个有些老旧的应用程序，但它仍然正常工作。目前，它仅适用于 Ubuntu 和相关的发行版。你可以下载预编译的 deb 文件，并使用以下命令进行安装：

```
wget https://www.bristolwatch.com/debian/packages/beaver_amd64.deb

```

```
sudo dpkg -i beaver_amd64.deb

```

#### 5、Gedit

[Gedit 文本编辑器](https://wiki.gnome.org/Apps/Gedit) 是 GNOME 桌面环境的默认文本编辑器，被数百万用户在诸如 Ubuntu 和 Fedora 等各种 Linux 发行版上使用。它是核心 GNOME 应用程序的一部分，旨在成为一个轻量级的通用文本编辑器。然而，通过其设置和已安装的插件，Gedit 也包含许多增强生产力的功能，使得它能够与其他流行的文本编辑器竞争。

尽管如此，它最近已经从 GNOME 桌面的默认编辑器标签中“降级”。基于现代 GTK4 的 [GNOME 文本编辑器](https://www.debugpoint.com/gnome-text-editor/) 已取而代之。

但它仍然是最好的编辑器之一，你可以通过插件和 [各种技巧](https://www.debugpoint.com/gedit-features/) 将其从简单的编辑器扩展为更高级的编辑器。

![Gedit 文本编辑器](/data/attachment/album/202307/01/111917xnnxax04fwoffnxw.jpg)

要安装它，请使用以下命令（针对 Ubuntu 和相关发行版）：

```
sudo apt install gedit

```

对于 Fedora Linux 用户，请使用以下命令进行安装。

```
sudo dnf install gedit

```

最后，Arch Linux 用户可以使用以下命令进行安装：

```
sudo pacman -S gedit

```

#### 6. Xed

如果你使用 Linux Mint，那么你可能听说过 Xed。Xed 是 Linux Mint 的默认文本编辑器，它非常轻量级。作为一个 “Xapp” 应用程序，它遵循 Linux Mint 的设计和功能指南，提供简单的用户界面、强大的菜单、工具栏和功能。

Xed 的一些主要特点包括：

* 传统的用户界面，保持简洁易用
* 强大的工具栏和上下文菜单选项，增强功能的能力
* 语法高亮显示
* 配置选项，如标签、编码等
* 支持 UTF-8 文本
* 编辑远程服务器文件
* 广泛的插件支持，可根据需要添加更多高级功能
* 支持概览地图
* 可缩放的编辑窗口

Xed 是最好的编辑器之一，可作为 Linux 系统上轻量级记事本的替代品。

![Xed 编辑器来自 Linux Mint 团队](/data/attachment/album/202307/01/111924h4pnd7pyxkt7zxz7.jpg)

如果你使用的是 Linux Mint，它应该是默认安装的。然而，在 Ubuntu 中安装它需要运行一系列命令。打开终端并运行以下命令来在 Ubuntu 中安装 Xed。

```
wget http://packages.linuxmint.com/pool/import/i/inxi/inxi_3.0.32-1-1_all.deb
wget http://packages.linuxmint.com/pool/backport/x/xapp/xapps-common_2.4.2+vera_all.deb
wget http://packages.linuxmint.com/pool/backport/x/xapp/libxapp1_2.4.2+vera_amd64.deb
wget http://packages.linuxmint.com/pool/backport/x/xed/xed-common_3.2.8+vera_all.deb
wget http://packages.linuxmint.com/pool/backport/x/xed/xed_3.2.8+vera_amd64.deb

```

```
sudo dpkg -i inxi_3.0.32-1-1_all.deb
sudo dpkg -i xapps-common_2.4.2+vera_all.deb
sudo dpkg -i libxapp1_2.4.2+vera_amd64.deb
sudo dpkg -i xed-common_3.2.8+vera_all.deb
sudo dpkg -i xed_3.2.8+vera_amd64.deb

```

有关更多详情，请访问 [Xed 的 GitHub 存储库](https://github.com/linuxmint/xed)。

### 内存和资源比较

由于我们在讨论性能，这是比较的关键，我们列出了上述所有应用程序在最新的 Ubuntu 安装中消耗的内存。

正如你所看到的，Xfce 的 Mousepad 最轻量级，而 Gedit 最占资源。

| 应用程序名称 | Ubuntu 闲置时消耗的内存 |
| --- | --- |
| Mousepad | 303 KB |
| Featherpad | 1.7 MB |
| Leafpad | 7.7 MB |
| Beaver pad | 11.1 MB |
| Gedit | 30.2 MB |
| Xed | 32.1 MB |

### 总结

总之，在 Linux 上选择一个轻量级的记事本对于各种用途至关重要。无论你是需要记笔记、编写代码还是编辑文本，轻量级记事本可以让你的工作更快、更轻松、更高效。Linux 操作系统提供了各种记事本应用程序，每个应用程序都具有其独特的功能和能力。

这份轻量级 Linux 记事本的前几名（应用程序）列表探讨了一些应用程序，包括 Leafpad、Gedit、Mousepad 和其他应用程序。

无论你选择哪个记事本，你可以确信它将提供你在 Linux 系统上完成工作所需的功能。

你最喜欢哪个？在评论框里告诉我吧。

---

via: <https://www.debugpoint.com/lightweight-notepad-linux/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lkxed](https://github.com/lkxed) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


在 Debian 中将用户添加到 SUDOERS 组的 2 种方法

Debian和ubuntu下，是没有usermod命令的

sudo少用为好。

对对对，是这样的，我都直接用 root 用户。

你用的系统是假的，passwd包里就有

![](/data/attachment/album/202307/01/174031t6p74rx6ixlmyjr7.jpg)

>
> 以下是如何将用户添加到 Debian Linux 中的 SUDOERS 组的方法。
>
>
>

在 Debian Linux 中，SUDOERS 组在向用户授予管理权限方面发挥着至关重要的作用。将用户添加到 SUDOERS 组使他们能够以 root 权限执行命令，从而为他们提供必要的管理访问权限以在 Debian 系统上执行各种任务。

在安装 Debian Linux 的过程中，如果你将 `root` 帐户的密码保留为空，那么系统中的 [创建的第一个用户](https://www.debian.org/releases/stable/amd64/ch06s03.en.html#user-setup-root) 将拥有管理权限。但是，如果你设置了 `root` 密码，那么用户名将不具有 sudo 权限。因此，在使用用户帐户执行管理任务时，你可能会遇到以下类似的错误。

```
<username> is not in the sudoers file. This incident will be reported.

```

![将用户添加到 SUDOERS 组之前](/data/attachment/album/202307/01/174125x1cir2oxs8s89oqo.jpg)

本文旨在提供有关在 Debian 中向 SUDOERS 组添加用户的分步指南，确保你可以有效地管理用户权限和系统安全。

### 如何将用户添加到 Debian 中的 SUDOERS 组

要将用户添加到 Debian 中的 SUDOERS 组，请按照以下简单步骤操作：

* 单击“终端”图标或使用快捷键 `Ctrl+Alt+T`，打开 Debian 系统上的终端。
* 使用以下命令切换到 root 用户：

```
su -

```

系统将提示你提供 root 密码。输入 root 密码并按回车键。

以 root 用户身份登录后，输入以下命令。确保根据你的用户名进行更改。在此示例中，将 `arindam` 替换为你的用户名。

```
/sbin/addgroup arindam sudo

```

如果上面的命令无效，还可以使用下面的命令：

```
usermod -aG sudo arindam

```

按退出离开 root 提示符。注销并重新登录。现在你可以使用你的用户名执行任何管理操作。

### 另一种方法

你可以使用与下面相同的命令进入 root 帐户。使用 root 账号登录：

```
su -

```

然后使用 `nano` 或 `visudo` 或任何编辑器打开 `/etc/sudoers` 文件。

```
nano /etc/sudoers

```

添加以下行和用户名。根据你的用户名替换 `arindam`。

```
arindam    ALL=(ALL)    ALL

```

保存并关闭文件。然后，注销并重新登录。这应该会给用户名 root 权限。

### 验证 SUDOERS 组成员

要验证用户是否已成功添加到 SUDOERS 组，你可以打开一个新的终端窗口并输入以下命令。将 `arindam` 替换为你添加到 SUDOERS 组的用户的实际用户名。

```
sudo -l -U arindam

```

如果用户是 SUDOERS 组的成员，你将看到他们拥有的权限列表。这是一个示例，你可以看到我的用户名具有所有访问权限。

![授予权限后](/data/attachment/album/202307/01/174135oiwjinigvw5iilwb.jpg)

### 结束语

将用户添加到 SUDOERS 组将授予他们重要的管理权限。在授予用户此类访问权限之前，仔细考虑用户的可信度和责任非常重要。sudo 使用不当可能会导致系统意外损坏或受损。

请记住在委派管理权限时要小心谨慎，并定期检查用户权限以维护安全的 Debian 系统。

*（题图：MJ/c71c2f28-51c7-44c7-87be-af88088bf459）*

---

via: <https://www.debugpoint.com/add-users-sudoers/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lkxed](https://github.com/lkxed/) 译者：[geekpi](https://github.com/geekpi) 校对：[校对者ID](https://github.com/%E6%A0%A1%E5%AF%B9%E8%80%85ID)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1049 中国用人工智能在 5 小时内设计出 RISC-V CPU

Summary:
? 中国用人工智能在 5 小时内设计出 RISC-V CPU
? 为什么 Mastodon 无法取代 Twitter
? 谷歌决定不支付加拿大的“链接税”
»
»

![](/data/attachment/album/202307/01/210302d0qbhzziqgy0i4ba.jpg)

![](/data/attachment/album/202307/01/210316wnggtggtfg88bqgd.jpg)

### 中国用人工智能在 5 小时内设计出 RISC-V CPU

在一篇由中科院、中科大的研究人员发表的论文中，详细介绍了他们在 5 小时内设计出一个新的工业规模的 RISC-V CPU 的工作。据称，这要比人类团队完成类似的 CPU 设计快 1000 倍左右。该 CPU 的设计是 “仅从外部输入-输出观察中形成的，而不是正式的程序代码”。它还拥有令人印象深刻的 11 个 9 的的准确性。该 CPU 采用 65 纳米制造，可以以高达 300MHz 的速度运行。他们在该 CPU 上运行了 Linux 内核 5.15 的操作系统，基准测试显示该 CPU 性能大约与 i486 相当。研究人员认为，他们“从头发现了冯-诺伊曼架构”。

>
> **[消息来源：Tom's Hardware](https://www.tomshardware.com/news/chinese-researchers-usedai-to-design-industrial-scale-risc-v-cpu-in-under-5-hours)**
>
>
>

>
> 老王点评：重要的不是设计出来的芯片有多强，而是 AI 可以这么快就完成了芯片设计，而且走了一条不同的设计道路。更好的是，这是国内的团队完成的研究。
>
>
>

![](/data/attachment/album/202307/01/210329onqp6vhv8vpgcv2l.jpg)

### 为什么 Mastodon 无法取代 Twitter

即使 Twitter 用户体验多么糟糕，它的老板多么令人讨厌，它的用户仍然留在那里，去中心化微博客替代 Mastodon 未能吸引到更多 Twitter 用户。一位前 Mastodon 实例管理员解释了其中的原因：对于绝大多数用户而言 Mastodon 没有独特的卖点，从功能上讲它本质上是 2008 年的 Twitter，而从功能角度看 2023 年的 Twitter 能让绝大多数用户满意；对 99% 的用户来说去中心化不是卖点，就像绝大多数用户不在意开源或自由软件，在意识形态上也不反对私有软件；去中心化让用户体验糟糕；管理 Mastodon 的人对现状感到满意，他们认为其他人只需要接受就行，新用户无法将他们的体验反馈给管理者，他们会选择离开；Mastodon 扩展性不行，其用户群只接受慈善不接受其它任何资助模式；在很大程度上，Mastodon 的文化是排外的。

>
> **[消息来源：Solidot](https://www.solidot.org/story?sid=75385)**
>
>
>

>
> 老王点评：去中心化并不是灵丹妙药，甚至我觉得它可能会一直处于非主流，虽然它的存在是非常必要的。
>
>
>

![](/data/attachment/album/202307/01/210346m608baned8yw6a7g.jpg)

### 谷歌决定不支付加拿大的“链接税”

加拿大通过了《在线新闻法》，要求谷歌和 Facebook 为简单地显示新闻链接付费，而其他人都是免费的。谷歌和 Facebook 都拒绝了加拿大的要求，它们都决定从其平台上删除加拿大的新闻内容。谷歌称，“对链接进行定价（所谓的‘链接税’）的史无前例的决定，为我们的产品带来了不确定性，并使我们仅仅因为方便加拿大人获取加拿大出版商的新闻而面临不设上限的财务责任。”谷歌在 2021 年 1 月对澳大利亚的 “链接税” 法律采取了类似的立场，但谷歌在几周后就同意为澳大利亚的新闻付费。此外，谷歌还同意向法国新闻网站支付费用。而美国也正在制定类似的法律。

>
> **[消息来源：Ars Technica](https://arstechnica.com/tech-policy/2023/06/google-tells-canada-it-wont-pay-link-tax-will-pull-news-links-from-search/)**
>
>
>

>
> 老王点评：看来“吃大户”的想法哪里都有，就像还有些人准备让大型 IT 公司额外负担光缆的费用一样。但是从另外一个方面看，似乎这些具有垄断性质的 IT 巨头，应该承担更多的责任和付出。你怎么看呢？
>
>
>


观点：红帽公司的自杀企图

某些所谓开源操作系统，都拿不到完整源码。。。

打着安全的名义，行封闭的事实。。。

爱用不用，又不是只有它一个

当你一直对某人好，当有一天你停止对他好的时候，他非但不会感谢你，反而会恨你。

当然，现在Linux是商业化越来越重了，失去原来的味道了。我早就说资本化的开源靠不住，有人还骂我不识时务。

Linux不行了，还有freebsd，还有haiku

来自海南海口的 Chrome Mobile 99.0|Android 12 用户

Linux不行了，还有freebsd，还有haiku

redhat不行，不代表其他linux版本不行

haiku还是半成品，玩玩可以，生产环境没法用

以前听说IBM是开源杀手，看来要应验了

BSD家族适合服务器和嵌入式，桌面生态没Linux丰富。Haiku不够完善，支持硬件偏少，生态也还不繁盛

>
> 红帽公司将其源代码放在付费墙后面的最新决定，今天可能会对其直接竞争对手造成一定伤害，但对红帽公司自身而言，这将对之后产生负面影响。
>
>
>

![红帽关闭源代码](/data/attachment/album/202307/02/172030v8jt2jwobtq2ojjv.png)

基于我对 RHEL 和其他红帽产品的热爱，我不得不现在表达一些严厉的看法。**我**之所以这样做，是因为我希望 RHEL [及/或其克隆版] 对每个人都是 *可获得的*。

请原谅这次我用词有些激烈，因为我从内心不希望 RHEL 成为 **对业余爱好者不可及** 的产品。免费的 RHEL 开发者许可证只是转移话题而已，相比于 **真正的 RHEL 克隆版存在的时候**，它削弱了 **广大动手爱好者社区** 的热情。

>
> ? 对于我的使用场景来说，使用免费订阅的 RHEL 使我感到满意。实际上，我正在使用的就是免费订阅。本文是关于如果保持这种状态会对 RHEL 产生怎样的影响。
>
>
>

### 快速回顾：事情是如何走到这一步的

我相信你现在都已经知道为什么红帽公司最近频频出现在新闻中：

但是，如果你对正在发生的事情一无所知，让我给你一个快速时间线的指引，帮助你理解：

1. 红帽公司拥有一个**出色**的 Linux 发行版，名为 <ruby> 红帽企业 Linux <rt>  Red Hat Enterprise Linux </rt></ruby>（RHEL），支持周期长达 **10** 年。
2. 与其他任何 Linux 发行版一样，用于构建 RHEL（或 RHEL 的 **克隆版**）的源代码是公开可用的。
3. CentOS 利用上述源代码，去除商标，并创建了一个几乎 1 比 1 的 RHEL 拷贝。（我说“几乎”是因为 RHEL 的商标 **必须** 被删除。）
4. 那些不愿意支付费用只是为了第一次尝试 RHEL 的爱好者社区，现在可以使用 CentOS 来看看是否喜欢它。
5. 这个人中的一部分人随后向他们的高层管理人员介绍了 RHEL 及其 **通过 CentOS 初步体验** 到的卓越表现，他们很可能转向在 RHEL 上支持他们的产品或在部署中使用 RHEL。
6. 由于 CentOS 是免费的，爱好者社区得以扩大。像 [Jeff Geerling](https://www.jeffgeerling.com:443/) 这样的人使用 CentOS 来教授对 **扮演系统管理员感兴趣** 的新一代爱好者，让他们了解他的 [开源存储库](https://github.com:443/geerlingguy?tab=repositories&q=ansible&type=&language=&sort=) 中诸如 Ansible 之类的很棒的内容。
7. CentOS 的二进制文件在 RHEL 更新后几周才发布。因此，[红帽收购了 CentOS](https://www.redhat.com:443/en/about/press-releases/red-hat-and-centos-join-forces)，以确保 CentOS 不会落后于 RHEL 的更新。
8. 几年后，[CentOS Stream](https://itsfoss.com:443/centos-stream-faq/) 的惨淡出场，导致了 CentOS 的消亡。
9. [Rocky Linux](https://rockylinux.org:443/about) 和 [Alma Linux](https://almalinux.org:443/blog/introducing-almalinux-beta-a-community-driven-replacement-for-centos/) 出现填补了 CentOS 留下的空白。它们使用的是公开可用的 RHEL 源代码。
10. 红帽公司开始限制源代码的访问，只允许其付费客户以及任何拥有免费的开发者订阅的人访问。

>
> ? 我特意没有提到 IBM 收购红帽的事情，因为如果红帽的某个人有勇气在 [官方场合](https://www.redhat.com:443/en/blog/red-hats-commitment-open-source-response-gitcentosorg-changes) 公开说，“**只是简单地重建代码，没有增加价值或以任何方式改变代码，对开源公司来说都是真正的威胁。**”，他们肯定也可以直承 IBM 参与了这些决定。但几乎每个红帽员工都公开否认了这种指责。所以我也不相信 IBM 自己搬起石头砸自己的脚。但你可以根据自己的心来决定是否相信。
>
>
>

>
> 不，当我说 IBM 可能没有参与这个决定时，我并不是在讽刺。他们 **有可能参与**，但我不这么认为。
>
>
>

### 亲爱的红帽公司，你刚刚做了什么？

你向社区提供一款免费的产品（CentOS）。然后你在提供这个免费产品的过程中（CentOS）改变它的的支持周期，并将其“替代品”（CentOS Stream）用作你闪亮的企业产品（RHEL）的“测试场”。

然后那些水蛭们拿起你闪亮产品的源代码，创建了一个 CentOS 的接替者（Rocky Linux 和 Alma Linux）。你不喜欢这样，所以对它们进行了 “软付费墙” 的限制。

现在，虽然 **你有权利这样做**（因为你从为 RHEL 提供支持而不是 RHEL 本身赚钱），但我会解释为什么这对 **你自己来说** 是一个糟糕的举动。

* **问题：** RHEL 在企业环境中为什么如此受欢迎？
* **答案：** CentOS ~~Stream~~。
* **问题：** 在线教程用什么来教授 RHEL？
* **答案：** CentOS ~~Stream~~。
* **问题：** 那些跟随上述在线教程的学习者用什么来学习 RHEL？
* **答案：** CentOS ~~Stream~~。
* **问题：** 当这些学生成为老师时，他们会向询问如何入门 Linux 系统管理员的人推荐什么？
* **答案：** CentOS ~~Stream~~。
* **问题：** 如果有人愿意购买 RHEL 的许可证，但因为没有公开的软件仓库而犹豫不决，他们会用什么？
* **答案：** CentOS ~~Stream~~。

简而言之，如果红帽公司继续对 RHEL 的克隆产品制造麻烦，以下是可能出现的情况：

* 许多参与企业部署的客户和专业人士将考虑放弃 RHEL，并且不再对其提供支持。
* 新用户将开始考虑使用 **Ubuntu、Debian、openSUSE** 或其他长期存在的替代产品。
* 大学和 IT 培训也将转向替代方案，例如 Ubuntu 或 openSUSE，而不再纠结于 RHEL 克隆、CentOS Stream 和 Fedora 之间。

此外，根据他们的 [FAQ](https://developers.redhat.com:443/articles/faqs-no-cost-red-hat-enterprise-linux)，小型企业和大学无法使用免费的红帽开发者订阅：

>
> 无费用的、无支持的红帽开发者订阅是为个人和个人帐户设计的。
>
>
>

**除非红帽公司友好对待 RHEL 克隆产品，否则我无法再看到这个生态系统中会有任何新的参与者了。** 这实在令人沮丧，因为 RHEL 是一款出色的产品。是的，它可能不像 Fedora 那样前沿，但是使用起来仍然很有乐趣！

我会引用 Brian Stevens 的 [一句话](https://www.redhat.com:443/en/about/press-releases/red-hat-and-centos-join-forces) 来阐述观点：

>
> 我们的信仰核心是，当有共同目标或问题的人们可以自由地联结和合作时，他们汇集起来的创新可以改变世界。我们相信开源的开发过程能够产生更好的代码，而用户社区会创造出一个让代码具有影响力的受众。
>
>
>

RHEL 是一款企业级发行版，因此红帽公司几乎不会致力于为在树莓派上运行 RHEL 提供支持。猜猜是哪些发行版为树莓派提供了企业级 Linux 镜像。提示一下，它们是 [Rocky Linux](https://rockylinux.org:443/alternative-images/) 和 [Alma Linux](https://almalinux.org:443/blog/almalinux-for-raspberry-pi-updates-october-2021/)。我敢打赌，红帽公司并没有统计出有多少人使用 RHEL 是因为他们先在树莓派上尝试使用 Rocky/Alma Linux，然后转而使用 RHEL。**我就是其中之一**（使用免费的 RHEL 许可证，也就那点价值）。

那么对于 RHEL 来说，这意味着什么？我不是 **先知**（此处双关 “Oracle”，哈哈！），所以无法预测 RHEL 的未来。

我远不是一个“引领潮流者”，也不知道有多少人受到我 [关于 Podman 的报道](https://linuxhandbook.com:443/tag/podman/) 的积极影响。尝试使用 Podman 并非没有原因。我先在 Fedora 上试用，然后通过使用 Rocky Linux 在一个“生产级”环境中进行 **大量实验**，最后在 RHEL 上部署了一些我自己的服务。这并不是说“如果我没有这么做，其他人就不会这样做”，但你不能否认，从我和 **许多其他人** 这样的多方共同努力中产生的内容所带来的 **影响**。顺便说一下，是我促使 [Abhishek](https://itsfoss.com:443/team/) 去报道 Podman，而不是相反。

当然，上述提到的“贡献”有些可能对红帽公司没有帮助，但它们对于 **红帽公司的客户群体** 来说是有帮助的。

### 所以，我们应该感到担忧吗？也是，也不是。

红帽公司做出的决定，从商业角度来看是有道理的。但也不完全是。从短期目标来看是有道理的，但从长期来看则不然。

红帽公司作为一家自豪地向上游贡献的公司，他们不会停止继续贡献。即使通过“软付费墙”来限制 RHEL 的代码，**红帽公司仍将继续向上游贡献**。红帽公司将继续在 [新的](https://fedoramagazine.org:443/announcing-the-display-hdr-hackfest/) [发展](https://news.itsfoss.com/red-hat-accessibility-gnome/) 上 [进行](https://developer.nvidia.com:443/blog/nvidia-releases-open-source-gpu-kernel-modules/) [创新](https://lists.fedoraproject.org:443/archives/list/devel@lists.fedoraproject.org/thread/IXNTPGKHWTW7H7XVMZICSJRUDOHO2KJC/)。

他们只是不再像以前那样将 RHEL 的“秘密配方”（在你期望的意义上）开放了。这个秘密的配方本身并不是“专有的”。红帽在 RHEL 中提供的几乎所有东西都是开源的。

他们的秘密在于 **将补丁向后移植到 RHEL 稳定包** 中。将这些补丁仅提供给 RHEL 的客户，这是一个非常公平的 **商业决策**。这些补丁也可以公开用于同一软件包的 **不同版本**。将补丁应用于使“旧版本”软件包保持最新状态的任务非常困难。

**所以，我理解他们为什么做出这个决定。**

**红帽并没有将 RHEL 变为闭源**（至少从技术上来说）。

红帽依然是一家出色的公司，其拥有经过验证的开源产品组合。我每天都在使用其中一些产品，比如：**在树莓派 4 上运行 RHEL（[是的，这是可能的！](https://nitter.net:443/thefossguy/status/1527935333899583488)）、（无需 root 的）Podman、Cockpit、Ansible、systemd 等等！**

### 以下你应该感到担忧的原因

如果 RHEL 不是自由提供的 —— 不是指免费，而是像 Debian、Ubuntu 甚至 Fedora 那样无需账户即可下载 —— 那么对于想要进入企业 Linux 生态系统的新人来说，他们的数量将继续减少。我认为是这样……

如果这个数量减少了，实际上推荐企业使用和支付 RHEL 的人数也会减少。你知道这会引发什么样的循环。

* 对 RHEL 感兴趣的新人变少 → 购买的 RHEL 订阅变少
* 红帽的收入减少 → 对上游项目的贡献减少（如 systemd、Podman、Linux 内核、GNOME、Wayland、英伟达合作等）
* 最终 → Linux 生态系统的总体改进变少

当然，红帽并不是唯一向 Linux 生态系统做出贡献的公司，但你不能否认它对推动生态系统全面向前 **流动** 所产生的巨大影响！

### 我对红帽声明的回应

>
> ✋ 我并不是在攻击 Mike McGrath。这只是对他的陈述的直接回应。我相信作为一个 RHEL 用户，我有权利表达自己的观点，因为我非常喜欢它，以至于通过树莓派 4B 上的 RHEL 部署了个人博客。
>
>
>

除非另有说明，以下所有引文均摘自 [这篇博文](https://www.redhat.com:443/en/blog/red-hats-commitment-open-source-response-gitcentosorg-changes)。

#### 引文 1

>
> 我感觉大部分对我们近期对下游源代码的决策所引发的愤怒，大部分来自 **那些不愿意为 RHEL 所付出时间、精力和资源买单的人**，或者那些想要将其重新打包以谋取自己利益的人。
>
>
>

是的，这完全公平，但我要一直强调这一点，直到你意识到，如果没有广大社区在 CentOS 及其后续产品上的培训，RHEL 就什么都不是。

**现在的 IT 专业人员中包括曾经在这个群体中的人，而你现在给他们打上了 “那些不愿意为所付出时间...”的标签。** ?

通过展示这样的立场，你会让更少的人接触企业级 Linux，并且之后使用 RHEL 的人数显著减少。

#### 引文 2

>
> 我们必须为从事这项工作的人支付报酬 —— 那些在漫长的工作时间和夜晚中辛勤工作、相信开源价值观的热情贡献者。简单地将这些个人产生的代码重新打包并原样转售，而没有增加任何价值，会导致这个开源软件的生产不可持续。这包括关键的向后移植工作和 [上游正在开发的未来功能和技术](https://www.redhat.com:443/en/about/our-community-contributions)。如果这项工作变得不可持续，它将停止，这对任何人来说都不好。
>
>
>

这不仅是一个完全合理的观点，而且也是残酷的现实。开源软件的资金不足。当任何人都可以无需付出实际回报就使用你的产品时，为开源软件筹集资金也变得非常困难。

但是，如果社区没有免费获得 RHEL（在限制源代码之前），那么它可能不会像今天这样取得巨大的成功。社区通过自由探索 RHEL，并使其成为更为壮大。

我不是让红帽公司做慈善事业，只是白白地免费提供。我希望红帽公司有足够的资金来改进上游。但是应该在 **某个地方** 找到一种折中方案。

再次强调，免费订阅并不等同于 RHEL 的克隆。当然，我写过关于如何 [免费获取红帽企业版 Linux](https://linuxhandbook.com:443/get-red-hat-linux-free/) 的文章。然而，这并不是相同的精神。我在这里 [引用 Jeff Geerling 的话](https://www.jeffgeerling.com:443/blog/2023/dear-red-hat-are-you-dumb):

>
> “不，请不要说‘但你可以使用你的红帽开发者订阅！’我在 Debian、Ubuntu、Arch 等系统上可以不使用它。你明白我的意思。”
>
>
>

#### 引文 3

>
> 最近，我们已经确定，拥有一个下游的重构者没有价值。
>
>
>

绝对是有价值的！我不会在这里重复我是如何通过 RHEL 的重构版本进入 RHEL 的这一点。

Windows 之所以受欢迎，只是因为微软允许盗版存在（和更便宜的许可证密钥）。

如果他们加强了控制，没有一个家庭会在 Vista 的继任者上花一分钱。我并不是要将 Vista（一款灾难性的操作系统）与 RHEL 进行比较，但这个类比大多数人应该有共鸣，你可以想想没有得到 Windows 许可证退款时的那种不甘。

#### 引文 4

>
> 通常公认的观点是，这些免费重构就是产生 RHEL 专家并转化为销售的渠道，这并不是现实情况。我希望我们生活在那样的世界，但实际情况并非如此。相反，我们发现了一群用户，其中许多用户属于大型或非常大型的 IT 组织，他们希望获得 RHEL 的稳定性、周期和硬件生态系统，而无需实际支持维护者、工程师、编写人员和许多其他角色。
>
>
>

**...你确定吗？** ?

当然，从免费用户转化为 RHEL 客户的转化率可能不是很高，但我敢打赌，这个比例不会低于 30%。如果你坚持这样做，新客户的数量将不到当前新“注册”用户的 10%。

**对于利用免费的 RHEL 开发者许可证也可以提出同样的论点。**对于那些不愿意支付 RHEL 费用的人来说，使用临时电子邮件 ID 创建新的红帽账户以便利用免费的开发者订阅是一项不容忽视的任务。

当我们谈论转化率时，有多少专业人士正是使用 RHEL 的克隆版本进行内部产品开发（以便与 RHEL 进行适配），但实际上为使用 RHEL 的客户提供支持呢？

**你如何衡量由第三方支持提供给客户的价值？** **你不能**，它不是一种可以衡量的有形物质。

我想扯远了，但这确实是真实发生的事件。我目前所使用的 [小镇当地的] ISP 使用 RHEL 对用户进行身份验证，因为他从一个向他出租互联网线路的公司获得了一个可以在 ~~CentOS 和~~ RHEL 上部署的身份验证产品。

猜猜他们在内部是用什么开发来与 RHEL 对接？ ?

#### 引文 5

>
> 仅仅是重建代码，不添加价值，也不以任何方式进行更改，对开源公司来说是一个真正的威胁。这是对开源的真正威胁，这可能将开源重新变成只有业余爱好者和黑客参与的活动。
>
>
>

那么像 Rocky Linux 和 Alma Linux 这样的 RHEL 克隆做的工作还不够重要，不足以与“仅仅重建代码，**不添加价值，也不以任何方式进行更改**”相区分吗？

>
> ? 我不知道如何更礼貌地重新表述这句话，所以请不要往心里去。这来自于对 RHEL 的热爱，而不是对红帽（管理层）的误导性愤怒。
>
>
>

* [Rocky Linux](https://rockylinux.org:443/alternative-images/) 和 [Alma Linux](https://almalinux.org:443/blog/almalinux-for-raspberry-pi-updates-october-2021/) 都为树莓派提供镜像，这使得在沉浸于企业级 Linux 这个隐喻的幸福海洋之前，可以更容易、更便宜地试水。
* Alma Linux 有一个名为 [Elevate](https://almalinux.org:443/elevate/) 的工具，允许 **所有用户**（这显然包括 RHEL，甚至是 Alma 的“竞争对手” Rocky Linux）升级到主要版本（例如从 7.x 到 8.x，等等）。我相信红帽公司的客户会喜欢这样的工具。
* Rocky Linux 有一个名为 [Peridot](https://github.com:443/rocky-linux/peridot) 的构建工具。它使任何人都可以拥有一个**自定义构建的 RHEL**。这个构建可以基于 Rocky Linux，或者甚至可以是公司的内部 RHEL 克隆，以防止供应链攻击。

这个回答也涉及到前面引用中的以下子引用：

>
> 仅仅将这些个人创造的代码重新打包，并原样转售，而不添加任何价值，会导致这个开源软件的生产无法持续下去。
>
>
>

它们正在为企业 Linux 生态系统增加价值，*而不是直接为 RHEL* 增加价值。

### 关于 CentOS Stream……

CentOS Stream 是一个奇怪的产品。在任何意义都不算糟糕（至少我个人是这么认为的），但是很奇怪。它与 RHEL 在以下关键方面存在差异，其中之一肯定会成为某些人的绝对禁忌：

* 它是 RHEL 的测试组，这使得对于 RHEL 和特别兴趣小组（SIG）来说更加便利，但是对于你的使用情况而言，可能会有帮助，也可能没有。
* CentOS Stream 不使用数字版本号的命名方案。这样一个微小的变化，在 CentOS Stream 上的测试时，可能会破坏为 RHEL 设计的脚本。同样的情况也可能出现在安全更新方面，正如 [一位 Twitter 用户所描述的](https://nitter.net:443/opdroid1234/status/1672067314789888000)。
* 正如我之前提到的，安全修复在 CentOS Stream 上发布较晚。虽然这可能有一些原因，但对于依靠 RHEL 克隆版本的小企业来说，并没有帮助，因为它们仍然容易受到威胁。

### 结论

现在 CentOS Stream 已经存在，RHEL 的 **开发** 比以往更加开放。但巧合的是，**RHEL 的源代码** 却被置于一个软性付费墙之后，受制于 [Red Hat 的最终用户许可协议（EULA）](https://www.jeffgeerling.com:443/blog/2023/gplv2-red-hat-and-you)。

目前这可能对红帽有所帮助。但如果保持这种立场，甚至不需要采取其他措施打击 RHEL 克隆产品，我相信围绕企业级 Linux 的用户、开发者和支持社区将会逐渐衰落...

我认为从长远来看，这将会伤害到红帽，因为随着周围的社区消亡，只有疲惫不堪的 IT 专业人员（意思是：**被迫使用它的人，就像使用 Oracle 产品一样**）才会继续使用 RHEL，甚至更糟糕的是，使用 Oracle Linux。

我在这里并不是在抨击红帽的员工。而是希望让你知道，如果继续这样发展下去，热爱 RHEL 的社区将会消亡。

我不愿意看到那种局面 ?

我真心地祝愿红帽在推动 Linux 生态系统前进方面一切顺利！真心的 ❤

>
> ✍ 此观点来自 Pratham Patel，一位热爱红帽的开源爱好者和探索者。
>
>
>

---

via: <https://news.itsfoss.com/red-hat-fiasco/>

作者：[Pratham Patel](https://news.itsfoss.com/author/team/) 选题：[lkxed](https://github.com/lkxed/) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1050 Twitter 限流，新注册用户每天只能阅读 300 条推文

Summary:
? Twitter 限流，新注册用户每天只能阅读 300 条推文
? GIMP 3.0 今年有望发表候选版本
? 远程工作使美国人的生产力下降
»
»

老王，国内论坛一直是新注册用户访问权限很低，发帖限制很多。这些措施主要是防水军和搬贴。另外也是想逼着用户氪金。某藤表示这些我熟。

还是不太一样的  这是不让看 看够了不让刷新了 防止爬虫抓取。 微博这种很多就一句话。一天300条。半小时就刷完了。

来自河南驻马店的 Chrome Mobile 103.0|Android 13 用户

自从4月下旬twitter限制未登录用户搜索，我的twitter爬虫就废了

不单单是你的爬虫。还有很多官网放推特动态的，也废了

![](/data/attachment/album/202307/02/190301xvvv0envnyzaedus.jpg)

![](/data/attachment/album/202307/02/190311md4s4rrxbjjwramb.jpg)

### Twitter 限流，新注册用户每天只能阅读 300 条推文

在限制未登录用户访问 Twitter 后，它又遭遇了严重技术故障，Elon Musk 以有人在大规模抓取推文为由宣布了限流措施：普通用户每天只能阅读 600 则推文，认证用户 6000，新注册用户 300（之后又宣布略微放宽限制）。但有开发者认为不是有人在抓取推文，而是它自己的问题导致了它自己对自己发动 DDoS 攻击。

>
> **[消息来源：Solidot](https://www.solidot.org/story?sid=75396)**
>
>
>

>
> 老王点评：没见过这么糟糕的服务，居然还怕人看多了。看来 Twitter 快被马斯克玩死了。
>
>
>

![](/data/attachment/album/202307/02/190325jj6d7m768soj88p8.jpg)

### GIMP 3.0 今年有望发表候选版本

最近，GIMP 的主要开发者们召开了自 2019 年来的首次开发者会议，“Wilber Week”。这是一个为期一周的会议，在阿姆斯特丹的 Blender 基金会总部举行。根据会议发布的信息，看起来他们可能会在今年至少开始 GIMP 3.0 的候选版本阶段。目前正在开发的是 GIMP 2.99.16 版本。作为备受期待的对 GTK3 的移植，以及作为 Photoshop 的开源替代品的一系列其他改进，GIMP 3.0 已经酝酿了十年。会议还讨论了可能成立 GIMP 基金会的计划。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/GIMP-3.0-RCs-In-2023)**
>
>
>

>
> 老王点评：说实话，已经对等待 GIMP 3.0 没有激情了。或许，抛下沉重的历史包袱的办法就是破而后立。
>
>
>

![](/data/attachment/album/202307/02/190343uj5uh5m9rtkak6u5.jpg)

### 远程工作使美国人的生产力下降

美国劳工统计局的新数据发现，2022 年有三分之一的美国人在家工作，高于 2019 年的四分之一。调查还发现，在家全职工作的美国人比在办公室的美国人每天少工作 2.5 小时。如果人们回到办公室，像 2019 年一样每天工作 8.2 小时，而不是每天在家的 5.7 小时，那么美国经济就会增加了大约 8 亿周的工作量，即提升 8%。

>
> **[消息来源：Slashdot](https://news.slashdot.org/story/23/06/30/2256229/remote-work-is-making-americans-less-productive-official-data-shows)**
>
>
>

>
> 老王点评：没错，我在家也不想干活~ ?
>
>
>


Fedora 工作站 39 可能会默认使用 Anaconda Web UI 安装程序

>
> 新的 Anaconda Web UI 安装程序可能会随 Fedora 工作站 39 一同推出。
>
>
>

![fedora 39 anaconda](/data/attachment/album/202307/03/135511gru934odzf4da9tt.png)

长期以来，Fedora 的安装体验一直未曾改变。

然而，这个新的 Web UI 安装程序已经开发了一年多的时间，现在离正式实现的目标更近了。

**为什么现在是时候了？**

在我们上次 [了解](https://news.itsfoss.com/fedora-new-web-ui-install-dev/) 即将到来的 **Anaconda WebUI 安装程序**时，它的进展相当不错。

而现在，它已经提交了一份 **变更提案**，旨在将这个安装程序添加到 Fedora 工作站中，以提供现代化的用户体验。该提案正等待 Fedora 工程和指导委员会（FESCo）的审查。

让我们再次来看看即将到来的安装程序和提案，以及可以期待在 Fedora 发布中看到它的时间。

### Anaconda WebUI：概述 ⭐

![anaconda webui 安装程序的预发布屏幕截图](/data/attachment/album/202307/03/135511bfrhhohr0umzermc.jpg)

**目前 Fedora 使用的旧的安装程序是基于 GTK3 的**，在许多情况下已被证明效率低下和不安全。新的 Anaconda WebUI 安装程序旨在解决这个问题。

它使用了一个由 Anaconda 团队开发的 **基于 PatternFly 的现代后端和用户界面**。

后端由 [Python](https://www.python.org:443/)、[DBus](https://www.freedesktop.org:443/wiki/Software/dbus/)、[Cockpit](https://cockpit-project.org:443/)、[React](https://reactjs.org:443/) 和 [PatternFly](https://www.patternfly.org:443/) 组成，旨在从一开始解决许多已知的用户体验问题，并为一致的安装体验铺平了道路。

变更提案还提到了新 UI 的一些关键亮点，包括：

* 向导式解决方案而非中心轮毂式。
* 新的欢迎屏幕用于选择语言（将从系统中配置的语言预先选择）。
* 时区和日期配置。
* 磁盘选择。
* 引导式分区。
* 配置审核。
* 安装进度。
* 内置帮助。

主要关注的重点是向用户提供类似向导的体验，提供更多信息，并帮助他们更好地完成安装过程。

这个新安装程序添加了很多功能，听起来是一个很好的用户体验改变！ ?

**那么，我们可以期待什么时候呢？**

由于这个变更需要经过 FESCo 的批准，一切取决于投票过程的进行。

但是，我相当有信心这个变更会得到批准，因为 [变更提案](https://fedoraproject.org:443/wiki/Changes/AnacondaWebUIforFedoraWorkstation) 已经设定了 **在 Fedora 39 中发布新的 Anaconda WebUI 安装程序** 的目标。

? 这个变更批准只是时间问题；您对此有什么看法？

---

via: <https://news.itsfoss.com/fedora-workstation-39-webui/>

作者：[Sourav Rudra](https://news.itsfoss.com/author/sourav/) 选题：[lkxed](https://github.com/lkxed/) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


Clipboard：一款旨在提高你的工作效率的开源应用

Summary: Clipboard 是一个有用的开源工具，具有许多可提高你的工作效率的功能。

Clipboard 是一个有用的开源工具，具有许多可提高你的工作效率的功能。

>
> Clipboard 是一个有用的开源工具，具有许多可提高你的工作效率的功能。
>
>
>

![clipboard app](/data/attachment/album/202307/03/153059djgnaajlms3nz7n3.jpg)

想要一个新的智能剪贴板管理器吗？ ?

这就是 **Clipboard 项目** 背后的人们对其剪贴板管理器的看法。他们称之为“第二大脑”，可以随时随地记住任何事情。

你认为呢？ 让我们看一下：

### Clipboard：概述 ⭐

![a screenshot of clipboard's about info](/data/attachment/album/202307/03/153101rzdw0ierwv91rcd4.png)

[Clipboard](https://getclipboard.app/) 主要用古老的 **C++ 编程语言**编写，提供了许多功能，例如复制/粘贴文本、文件、目录、二进制数据、无限剪贴板等等！

此外，它 **与主要的 GUI 剪贴板系统无缝集成** 并支持西班牙语、葡萄牙语和土耳其语等语言。

让我向你展示它是如何工作的。

>
> ? 由于这是一个基于终端的应用，因此你必须使用各种命令来操作 Clipboard。
>
>
>

因此，你要做的第一件事是使用以下命令复制文件的内容：

```
cb copy 'filename'

```

![a screenshot of the cb copy command on clipboard](/data/attachment/album/202307/03/153102j55595z5a25720vb.png)

然后进行粘贴，你可以使用以下命令：

```
cb paste

```

![a screenshot of the cb paste command on clipboard](/data/attachment/album/202307/03/153102wr6zi68g7dgcgfa6.png)

要加载所有剪贴板，你可以使用以下命令：

```
cb show

```

![a screenshot of the cb show command on clipboard](/data/attachment/album/202307/03/153103b8aft8806p0vba53.png)

最后，最吸引我们注意的功能是最近添加的 **无限剪贴板历史记录** 功能。

你可以使用此命令访问完整的剪贴板历史记录：

```
cb hs

```

![a screenshot of the unlimited clipboard history feature on clipboard](/data/attachment/album/202307/03/153103c9rd0qlk9d062p3p.png)

这个剪贴板应该会 **吸引那些更喜欢使用基于终端的应用** 而不是基于 GUI 的应用的用户。它提供了非常简单的用户体验以及所有合适的工具。

不要忘了，它包含的功能比我讨论的更多，其中包括：

* 制作脚本来自动化你的工作流程
* 能够粘贴你拥有的每种类型的数据，包括二进制数据

那些喜欢图形界面的应用的人可以选择 [Pano 剪贴板管理器](https://news.itsfoss.com/pano-clipboard-manager/)。它是一个轻量级的剪贴板管理器，与 GNOME 集成得很好。

### ? 获取 Clipboard

你可以通过从 [GitHub](https://github.com/Slackadays/Clipboard) 获取或浏览其 [官方网站](https://getclipboard.app/) 开始你的剪贴板之旅。它还包含所有必要的安装指南和文档。

>
> **[Clipboard (GitHub)](https://github.com/Slackadays/Clipboard)**
>
>
>

? 你对 Clipboard 有何看法？ 你会尝试一下吗？ 你还有其他值得推荐的吗？ 在下面的评论中分享你的想法。

*（题图：MJ/fc3f6192-b073-49e4-8ba5-d72d820ff8a7）*

---

via: <https://news.itsfoss.com/clipboard/>

作者：[Sourav Rudra](https://news.itsfoss.com/author/sourav/) 选题：[lkxed](https://github.com/lkxed/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1051 Snap 设计者开发用 Flatpak 替换 Snap 的脚本

Summary:
? Snap 设计者开发用 Flatpak 替换 Snap 的脚本
? 红帽为 RHEL 7 再增加四年的支持
? 首个完全由人工智能生成的药物进入临床试验
»
»

开发者使用SNAP是要强制开源的。。。

![](/data/attachment/album/202307/03/185214r2ls5p44q5xpmp04.jpg)

![](/data/attachment/album/202307/03/185227wiffdhfk2kn52ehf.jpg)

### Snap 设计者开发用 Flatpak 替换 Snap 的脚本

已经离开 Canonical 公司的 Alan Pope 是 Snap 软件包格式的共同开发者。Flatpak 和 Snap 都是一种沙盒容器式的软件包格式，旨在提供一种独立于发行版的打包格式，解决包依赖问题，能在不导致依赖地狱的情况下在同一个系统上安装同一个程序的多个版本。Flatpak 是由红帽主导推出的。相比 Snap 只能使用 Canonical 私有的软件包商店，Flatpak 可以支持多个软件仓库。最新的 Ubuntu 23.04 中默认移除了 Flatpak 格式的支持。Alan Pope 开发了一个名为 unsnap 的脚本，如果一个 Snap 软件包存在对应的 Flatpak 包，那么它将会自动用 Flatpak 包替换 Snap 包。

>
> **[消息来源：Linux 杂志](https://www.linux-magazine.com/Issues/2023/268/unsnap)**
>
>
>

>
> 老王点评：这个脚本并不复杂，作者也坦诚并不成熟。有趣是，作为 Snap 包格式的共同作者之一，他推出这样的脚本。
>
>
>

![](/data/attachment/album/202307/03/185243zbzzniw5dge4gwqm.jpg)

### 红帽为 RHEL 7 再增加四年的支持

红帽企业 Linux 7（RHEL 7）发布于 2014 年。所有 RHEL 的大版本都遵循标准的十年生命周期，前五年是全面支持，后五年是维护支持。此后，RHEL 进入延长生命周期阶段，红帽为其提供延长生命周期支持。也就是说，从 2024 年 7 月 1 日开始，红帽将为有需要的客户提供 4 年的 RHEL 7 延长支持服务。顺便提一句，RHEL 7 的下一个版本，RHEL 8 及其下游的 CentOS 8 已经在 2021 年 [结束支持](/article-12902-1.html)，原因大家都知道，是为了给 CentOS Stream 让路。

>
> **[消息来源：红帽](https://mp.weixin.qq.com/s/QM_fTZar_4B76rcrtECeNQ)**
>
>
>

>
> 老王点评：看来当时没有及时迁移到 RHEL 8/CentOS 8 的很多人仍然坚守在 7 上。
>
>
>

![](/data/attachment/album/202307/03/185313co1wy6gzrga5r5fc.jpg)

### 首个完全由人工智能生成的药物进入临床试验

一家总部位于香港的生物技术初创公司利用人工智能创造了一种治疗特发性肺纤维化的药物。这种导致肺部结疤的慢性疾病，如果不加以治疗，可在 2 至 5 年内导致死亡。该公司称，“这是第一个进入人体临床试验的完全生成型人工智能药物，特别是与病人进行的第二阶段试验。……该药物是第一个既有人工智能发现的新目标，又有人工智能生成的新设计的药物”。该药物目前已经在中国开展为期 12 周的随机、双盲、安慰剂对照试验。

>
> **[消息来源：CNBC](https://www.cnbc.com/2023/06/29/ai-generated-drug-begins-clinical-trials-in-human-patients.html)**
>
>
>

>
> 老王点评：昨天我们报道了由人工智能设计的芯片，今天看到了设计的药物。以后，我们会看到越来越多由人工智能发现、设计和制造的制品。
>
>
>


为什么黑客更喜欢使用 Kali Linux？

![](/data/attachment/album/202307/04/151945ol68v2ez28e6exzq.jpg)

>
> 以下是为什么大多数黑客和渗透测试人员喜欢使用 Kali Linux 的几个原因。
>
>
>

Kali Linux 是一个基于 Debian “测试版” 的 Linux 操作系统，创建于近十年前。在过去几年里，它在黑客和网络安全专业人员中非常流行。随着对数字基础设施的越来越多的依赖和网络威胁的不断增长，网络安全对于普通用户和企业来说变得更加重要。

道德黑客和渗透测试人员在识别漏洞和加强系统安全方面发挥着重要作用。由于 Kali Linux 具备为安全测试和分析而量身定制的全面工具和功能，因此成为他们的首选操作系统。

![带有 Xfce 桌面环境的 Kali Linux](/data/attachment/album/202307/04/152058ntqaq3e9inixc9ix.jpg)

### 概述

[Kali Linux](https://www.kali.org/) 由 Offensive Security（一家美国信息安全公司）维护，并得到社区中数千名贡献者的支持。它跟随 Debian 的 “测试版” 分支的发展，保持与最新软件包的同步，为黑客们提供了最新模块来进行工作。

此外，Kali Linux 支持多种架构，例如 x86、x86-64、armel 和 armhf，这有助于黑客在广泛的硬件范围内使用。

使用此发行版的最大优势之一是它适用于多个技术平台，你可以下载和使用。以下是其中一些平台：

* 32 位和 64 位的安装镜像（ISO）
* 预构建的虚拟机镜像
* ARM 架构镜像
* 用于移动设备的安卓镜像
* Docker 和 LXD 镜像
* 可在各个厂商提供的云中使用
* 只读的 LIVE ISO 镜像
* 可在 Windows 的 Linux 子系统（WSL）上使用

### 为何它备受青睐

#### 强大的渗透测试工具

Kali Linux 提供了丰富的渗透测试工具，使黑客能够识别并利用漏洞。这些工具包括网络扫描器、密码破解器、无线攻击框架和 Web 应用程序评估工具。这个操作系统内置了如此之多的工具，极大地简化了黑客的工作流程，使他们能够有效专注于目标。

#### 全面的安全评估

使用这个发行版，黑客可以对各种目标进行全面的安全评估。他们可以模拟真实攻击，分析系统弱点，制定有效的安全策略。该操作系统提供了漏洞扫描、网络映射和系统指纹识别等工具，使黑客能够从不同角度评估目标系统的安全状况。

#### 反取证分析和事件响应

Kali Linux 还包括用于数字取证和事件响应的工具。黑客可以利用这些工具来调查安全漏洞，收集证据和分析受损系统。该操作系统支持数据恢复、内存分析和网络取证，有助于进行彻底的调查，并帮助恢复遭受损害的系统。

#### 无线网络审计

由于其固有的弱点，无线网络往往是黑客的主要目标。Kali Linux 提供了全面的用于审计和保护无线网络的工具。黑客可以使用这些工具来识别弱加密协议，发现隐藏网络，并进行数据包分析以检测恶意活动。这使得他们能够评估无线网络的安全性并提出缓解策略。

### 大量的工具

以下是默认情况下（截至最新版本）Kali Linux 提供的一些工具类别的简要列表：

* **信息收集**
	+ DNS 分析
	+ IDS/IPS 识别
	+ 活动主机识别
	+ 网络和端口扫描器
	+ OSINT 分析
	+ 路由分析
	+ SMB 分析
	+ SMTP 分析
	+ SNMP 分析
	+ SSL 分析
* **漏洞分析**
	+ 模糊测试工具
	+ VoIP 工具
* **Web 应用程序分析**
	+ CMS 和框架识别
	+ Web 应用程序代理
	+ Web 爬虫和目录暴力破解
	+ Web 漏洞扫描器
* **数据库评估**
	+ SQLite 数据库浏览器
* **密码攻击**
	+ 离线攻击工具
	+ 在线攻击工具
	+ 哈希传递工具
	+ 密码分析和密码列表
* **无线网络攻击**
	+ 802.11 无线工具
	+ 蓝牙攻击工具
* **逆向工程工具**
	+ Clang
	+ NASM shell
* **利用工具**
	+ Metasploit
	+ Searchsploit
	+ MSF 载荷生成器
	+ 社会工程学工具包
* **嗅探和欺骗**
	+ 网络嗅探器
	+ 欺骗和中间人攻击
	+ 后渗透
* **取证**
	+ 反取证工具
	+ 取证镜像工具
	+ PDF 取证工具
	+ Sleuth Kit 套件
* **报告工具**
	+ Cutycapt
	+ Faraday start
	+ Pipal
* **社会工程学工具**

你可以在详尽的工具门户网站了解更多信息：

>
> **[访问 Kali Linux 工具门户网站](https://www.kali.org/tools/)**
>
>
>

![Kali Linux Tools](/data/attachment/album/202307/04/152109v8gzockzo4ckgjzz.jpg)

### 开源特性

黑客偏爱 Kali Linux 的主要原因之一是它的开源特性。作为一款开源操作系统，Kali Linux 允许黑客访问和修改源代码以满足其需求。这使得他们可以自由定制系统并添加自己的工具或功能。开源社区还积极参与开发和改进 Kali Linux，以确保其与最新的安全技术保持同步。

### 社区支持与合作

Kali Linux 拥有一个庞大的安全专业人员、黑客和爱好者社区。这个社区通过分享知识、开发新工具和为其他用户提供支持来积极合作，以增强操作系统的功能。

可通过论坛、在线教程和社区驱动的文档获取宝贵资源并在需要时寻求帮助，确保使用 Kali Linux 的黑客能够获得支持。

团队还提供了多种培训和学习方式。其中也包括了一个学习路径，供希望在网络安全领域追求职业发展的学生参考，并提供相关认证。

### 定制和灵活性

另一个优点是 Kali Linux 高度的定制和灵活性。黑客可以根据自己的特定需求和喜好来定制操作系统。他们可以按照自己的要求安装和配置工具，创建自定义脚本并构建个性化的工作流程。这种定制水平使得黑客可以优化自己的生产力并简化渗透测试过程。

### 持续更新和改进

Kali Linux 是一个不断更新和改进的操作系统。开发人员和社区成员积极致力于增强现有工具、添加新功能并解决任何安全漏洞。这些更新确保使用 Kali Linux 的黑客可以获得最新的工具和技术，使他们始终处于网络安全进展的前沿。

![Kali Linux 从其自己的源分发软件包](/data/attachment/album/202307/04/152116ygh0g57z0nphfj0p.jpg)

### 道德使用

重要的是要注意，Kali Linux 旨在用于道德黑客和安全测试目的。道德黑客利用他们的技能来发现漏洞并保护系统，而不是从事恶意活动。

Kali Linux 倡导对黑客工具的负责和合法使用，强调获得适当授权和遵守道德准则的重要性。该操作系统是网络安全专业人员增强组织安全性、促进更安全的数字环境的强大工具。

简而言之，**请勿将** Kali Linux 用于非法或未经授权的用途。

### 结论

我希望这份概述介绍了 Kali Linux 及其为全球安全专业人员所偏爱的免费开源操作系统的原因。它以 Debian 为基础，配备了数千种工具和便捷的访问方式，使它成为每个人都值得考虑的选择。

你可以在 [官方网站](https://www.kali.org/get-kali/) 上下载 Kali Linux。

*（题图：MJ/95d89a95-50fe-4fdf-a06a-e4287092cee9）*

---

via: <https://www.debugpoint.com/why-kali-linux/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lkxed](https://github.com/lkxed/) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


在 Linux 中使用 cd 命令

Summary: 了解如何使用用于切换目录的一个基本但必不可少的 Linux 命令。

节标题“切换回上一级目录”，按照段意来说是切换到上次使用的目录，类似于Windows文件管理器的“返回”。这么译有歧义吧

来自四川泸州的 Chrome Mobile 114.0|Android 13 用户

了解如何使用用于切换目录的一个基本但必不可少的 Linux 命令。

![](/data/attachment/album/202307/04/154137kxcv8y8z854555mp.jpg)

>
> 了解如何使用用于切换目录的一个基本但必不可少的 Linux 命令。
>
>
>

Linux 中的 `cd` 命令用于更改目录。`cd` 实际上是“<ruby> 更改目录 <rt>  change directories </rt></ruby>”的缩写。

这是你必须了解的 [基本 Linux 命令](https://itsfoss.com/essential-ubuntu-commands/)之一。

使用 `cd` 命令非常简单：

```
cd path_to_directory

```

不可能比这更简单了，对吧。

然而，你应该理解它的路径部分，以便轻松地浏览 [文件系统](https://linuxhandbook.com:443/linux-directory-structure/) 而不会感到困惑。

这是绝对路径和相对路径的快速回顾：

![Absolute vs relative path in Linux](/data/attachment/album/202307/04/154203jcoaxmn57oncxxjq.png)

如果你需要更多细节，我建议你阅读这篇文章：

>
> **[Linux 上的绝对路径和相对路径有什么不同](https://linuxhandbook.com/absolute-vs-relative-path/?ref=itsfoss.com)**
>
>
>

让我们看一些使用 `cd` 命令的示例。

### 使用绝对路径更改目录

从视觉上看会更容易理解。看下图。

![Absolute path travel to the python directory](/data/attachment/album/202307/04/154203ar8l8xhmje1mt14h.png)

我当前的位置是我的主目录（`/home/abhishek`），我必须进入 `scripts` 目录中的 `python` 目录。

假设我想使用绝对路径。`python` 目录的绝对路径是 `/home/abhishek/scripts/python`。

```
cd /home/abhishek/scripts/python

```

![cd command with absolute path](/data/attachment/album/202307/04/154204jk5iccsqawiat27v.png)

### 使用相对路径更改目录

让我们举同样的例子，但这次我将采用相对路径。

![Relative path example](/data/attachment/album/202307/04/154205gzzv5fjy9jzjyyko.png)

我的主目录到 `python` 目录的相对路径是 `scripts/python`。让我们用这个：

```
cd scripts/python

```

![cd command with relative path](/data/attachment/album/202307/04/154205n9bf0cdfcgzsllgx.png)

### 进入上级目录

到目前为止，你一直在进入下级。如果你必须进入上级目录怎么办？

假设你位于 `/home/abhishek/scripts/python` 中，并且必须将目录添加到 `scripts`？

![](/data/attachment/album/202307/04/154206gvjv6qj2wwwxyzip.png)

使用绝对路径始终是一种选择，但它相当冗长。相反，你可以使用特殊的目录符号 `..`。双点 （`..`）表示父目录或上一级目录。单点（`.`）表示当前目录。

```
cd ..

```

这是一个例子：

![cd up a directory](/data/attachment/album/202307/04/154206qgk02gq3lnyhdlcu.png)

你可以使用 `..` 在 Linux 文件系统层次结构中向上移动路径。

假设我在上图中的 `python` 目录中，想要进入 `code` 目录。这是我能做的：

```
cd ../../code

```

![Go up the directory using cd command](/data/attachment/album/202307/04/154207xiti11gugmgn4g8g.png)

### 进入主目录

如果你在所有这些目录切换中感到迷失并想回到主目录，有很多简单的快捷方式。

事实上，最简单的就是使用不带任何选项的 `cd` 命令。

```
cd

```

这将使你从文件系统上的任何位置返回主目录。

或者，你可以使用 `~` 符号，表示主目录。

```
cd ~

```

![Use cd to go back home](/data/attachment/album/202307/04/154207cjzjnun2my992soj.png)

### 进入根目录

尽管你不会像前一个那样经常使用它，但了解一下仍然有好处。

如果你想返回文件系统开始的根目录，请使用以下命令：

```
cd /

```

这里不涉及“魔法”。当放在路径开头使用时，`/` 表示根。不要将它与路径分隔符混淆。

![Paths in Linux](/data/attachment/album/202307/04/154209baue55gzzttc5g9x.png)

### 切换回上一级目录

这是一个救命稻草，或者我应该说是“省时稻草”。当你深入目录结构，然后转到另一个目录，然后你觉得需要返回到以前的位置时，此快捷方式会有所帮助。

```
cd -

```

还不清楚吗？ 让我举个例子。

我位于 `/etc/apt/sources.list.d`。从这里，进入 `/home/abhishek/scripts/python` 来处理我的代码。然后我意识到我必须再次检查 `/etc/apt/sources.list.d` 目录中的某些内容。

通常的方法是这样做，这让我再次输入所有路径：

![Go back to previous directory](/data/attachment/album/202307/04/154209a2szpzzhc27tu3u3.png)

但聪明的方法是使用这个：

![Use cd - to go back to previous directory](/data/attachment/album/202307/04/154209oolowwulfirtrooo.png)

看吧，无需再次输入冗长的路径。如期工作！

### ? 练习时间

如果你想练习 `cd` 命令，这里有一些练习供你使用。

* 打开终端并进入 `/var/log` 目录。[检查目录内容](https://itsfoss.com/list-directory-content/)。你看到了什么？
* 现在，进入 `/var` 目录。这是一个上级目录。
* 从这里返回你的主目录。

这些内容足以让你熟悉 `cd` 命令。以下是你应该了解的其他一些重要命令。

>
> **[每个 Ubuntu 用户都应该知道的 31 条 Linux 命令](https://itsfoss.com/essential-ubuntu-commands/)**
>
>
>

如果你有疑问或建议，请告诉我。

*（题图：MJ/6fbaa345-651a-4cb9-a752-130eda922790）*

---

via: <https://itsfoss.com/cd-command/>

作者：[Abhishek Prakash](https://itsfoss.com/author/abhishek/) 选题：[lkxed](https://github.com/lkxed/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1052 libjpeg-turbo 3.0 发布，开发者表示无力继续

Summary:
? libjpeg-turbo 3.0 发布，开发者表示无力继续
? Valve 拒绝发布带有人工智能生成内容的游戏
? 谷歌将用网络上公开的所有信息训练人工智能
»
»

![](/data/attachment/album/202307/04/202030ssw13jzaawsz1p77.jpg)

![](/data/attachment/album/202307/04/202049fbd6yfuyupyduyuz.jpg)

### libjpeg-turbo 3.0 发布，开发者表示无力继续

这个开源的 JPEG 图像编解码器每天有数十亿人通过浏览器、操作系统和图像查看器/编辑器使用，并且它是 ISO/ITU-T 的参考实现，经过了严格的审查。它的主要开发者 DRC 在 3.0 发布公告中说，这可能是功能开发的结束，很可能不会有 3.1 版本。DRC 表示，目前该项目只有每月约 8-10 小时的一般资金支持。而完成 3.0 测试版需要借用 2023 年所有预期的一般资金，而修复错误需要借用到 2024 年 9 月的所有资金，也就是说该项目未来 15 个月实际上将处于 “维护模式”。它的开发者 DRC 的大部分收入来自他的另外两个项目 VirtualGL 和 TurboVNC，而从 2010-2018 年，DRC 投入了相当于几十万美元的时间来开发 libjpeg-turbo 2.0，甚至导致负债时，不得不停止在该项目上投入。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/libjpeg-turbo-3.0-Released)**
>
>
>

>
> 老王点评：很多开源开发者花费了自己的时间金钱来贡献给开源，但是他们也需要钱来生活。不知道那些嫌弃别人白嫖他们的开源代码的人，是不是也白嫖过其它的上游项目呢？
>
>
>

![](/data/attachment/album/202307/04/202104olr21dra91d91zls.jpg)

### Valve 拒绝发布带有人工智能生成内容的游戏

一位独立开发者在论坛上发帖说，Valve “不再愿意发布有人工智能生成内容的游戏”。他们提交的游戏有 “一些相当明显的 AI 生成的素材”。Valve 在给开发者回复中称，“我们不能发布开发者没有所有必要权利的游戏。目前，我们拒绝分发你的游戏，因为我们不清楚用于创建素材的底层人工智能技术是否对训练数据有足够的权利。”考虑到大多数人工智能工具不能真正声称对其所有的训练数据有合法权利（即使它们有，也可能不是对该数据的道德使用），这一政策的陈述基本上相当于对游戏中人工智能生成的资产的全面禁止。Valve 表示，他们的政策更多的是 “法律上的要求”，而不是对人工智能的任何特定立场，其审查过程“是对现行版权法和政策的反映，而不是我们意见的附加层。”

>
> **[消息来源：Tech Crunch](https://techcrunch.com/2023/07/03/valve-responds-to-claims-it-has-banned-ai-generated-games-from-steam/)**
>
>
>

>
> 老王点评：这件事凸显了现有的版权法律无法适应人工智能的需要。究竟什么样的内容可以被人工智能刮取并生成内容，然后这些内容的版权归属于谁。如果要归属于原内容提供者，人工智能是否有可能、有意义地明确地指出来源？
>
>
>

![](/data/attachment/album/202307/04/202120px7dzqzy3oydq97y.jpg)

### 谷歌将用网络上公开的所有信息训练人工智能

谷歌上周末更新了其隐私政策，明确表示该公司保留刮取你在网上发布的所有信息以建立其人工智能工具的权利。谷歌举例说，将“使用公开的信息来帮助训练谷歌的人工智能模型，并建立产品和功能，如谷歌翻译、Bard 和云人工智能功能”。以前，谷歌说这些数据将被用于 “语言模型”，而不是 “人工智能模型”，而旧政策只提到谷歌翻译，现在也包括 Bard 和云人工智能。

>
> **[消息来源：Gizmodo](https://gizmodo.com/google-says-itll-scrape-everything-you-post-online-for-1850601486)**
>
>
>

>
> 老王点评：和上一条对应，谷歌利用互联网“公开”的信息训练的人工智能，其输出的内容的版权如何界定？现在大家都黑不提白不提的就这样糊涂着，是想造成既成事实倒逼法律认可，还是需要更多的实践和探讨？
>
>
>


如何在 Ubuntu 22.04 中安装和使用 Wireshark

![](/data/attachment/album/202307/05/154817pj3jx0jl03levzu9.jpg)

>
> 技术兄弟们，大家好，在这篇文章中我们将介绍如何在 Ubuntu 22.04 中安装和使用 Wireshark。
>
>
>

Wireshark 是自由开源的、跨平台的、基于 GUI 的网络数据包分析器，可用于 Linux、Windows、MacOS、Solaris 等。它实时捕获网络数据包并以人类可读的格式呈现它们。它使我们能够监控微观层面的网络数据包。它还有一个名为 `tshark` 的命令行程序，它执行与 Wireshark 相同的功能，但通过终端而不是通过 GUI。

Wireshark 可用于网络故障排除、分析、软件和通信协议开发，也可用于教育目的。Wireshark 使用名为 `pcap` 的库来捕获网络数据包。

### Wireshark 的功能

* 支持检查数百种协议
* 能够实时捕获数据包并保存它们以供以后离线分析
* 一些用于分析数据的过滤器
* 捕获的数据可以动态压缩和解压缩
* 支持多种数据分析文件格式，输出也可以保存为 XML、CSV、纯文本格式
* 可以从以太网、WiFi、蓝牙、USB、帧中继、令牌环等多种接口捕获数据

### 先决条件

* 预装 Ubuntu 22.04
* 具有 sudo 权限的本地用户
* 互联网连接

### Wireshark 安装步骤

#### 从 Ubuntu 仓库安装

Wireshark 包可在默认的 Ubuntu 仓库中找到，并且可以使用以下命令简单地安装。但你可能无法获得最新版本的 wireshark。

```
$ sudo apt update
$ sudo apt install wireshark

```

![Apt-Command-Install-Wireshark-Ubuntu](/data/attachment/album/202307/05/155102f0xsxrrrl0bxu2sz.jpg)

选择 “Yes” 允许非超级用户使用 Wireshark 捕获数据包：

![Allow-Non-SuperUsers-To-Capture-Packets-Wireshark-Ubuntu](/data/attachment/album/202307/05/155110smmb00a5vmaf21ya.jpg)

安装成功后，访问 Wireshare UI。从“<ruby> 活动 <rt>  Activities </rt></ruby>”中搜索 “wireshark”，然后单击其图标。

![Wireshark-UI-Ubuntu-Linux-Desktop](/data/attachment/album/202307/05/155117g4zv5wkck8vjvzer.jpg)

以上确认你的 Wireshark 安装已成功完成。

#### 安装最新的版本

如果要安装最新版本的 Wireshark，我们必须使用以下 `apt` 命令启用官方 Wireshark 仓库：

```
$ sudo add-apt-repository ppa:wireshark-dev/stable
$ sudo apt update

```

现在，安装最新版本的 Wireshark，运行：

```
$ sudo apt install wireshark -y

```

安装 Wireshark 后，验证其版本：

```
$ wireshark --version

```

![Wireshark-Version-Check-Ubuntu-Linux](/data/attachment/album/202307/05/155127etqht5yca4tthtt8.jpg)

要允许普通用户使用 Wireshark 使用和捕获数据包，请运行以下命令：

```
$ sudo dpkg-reconfigure wireshark-common

```

选择 “Yes” 并按回车键。

![Allow-Regular-User-Use-Wireshark-Ubuntu](/data/attachment/album/202307/05/155135vq9d4fzx4v6a4v1f.jpg)

使用 `usermod` 命令将本地用户添加到 `wireshark` 组:

```
$ sudo usermod -aG wireshark $USER
$ newgrp wireshark

```

要使上述更改生效，请重新启动系统。

```
$ sudo reboot

```

### 使用 Wireshark 捕获数据包

启动 Wireshark，从“活动”->搜索 “wireshark”。

![Access-Wireshark-Ubuntu-Desktop](/data/attachment/album/202307/05/155147jcpezsem5zp22e2y.jpg)

单击 Wireshark 图标，

![Choose-Interface-Wireshark-UI-Ubuntu](/data/attachment/album/202307/05/155216waw0q0tnhgg2jazt.jpg)

所有这些都是我们可以捕获网络数据包的接口。根据你系统上的界面，此页面可能会有所不同。

我们选择 “enp0s3” 来捕获该接口的网络流量。选择接口后，我们网络上所有设备的网络数据包开始填充（请参阅下面的截图）：

![Capturing-Packets-WireShark-UI-Ubuntu](/data/attachment/album/202307/05/155510pshznz2uexmlhgml.jpg)

第一次看到此页面时，我们可能会被此屏幕中显示的数据淹没，并且可能会想到如何整理这些数据，但不用担心，Wireshark 的最佳功能之一就是它的过滤器。

我们可以根据 IP 地址、端口号对数据进行排序/过滤，还可以使用源和目标过滤器、数据包大小等，还可以将 2 个或更多过滤器组合在一起以创建更全面的搜索。我们可以在“<ruby> 应用显示过滤器 <rt>  Apply a Display Filter </rt></ruby>”选项卡中编写过滤器，也可以选择已创建的规则之一。要选择预建过滤器，请单击“旗帜”图标，然后点击“应用显示过滤器”选项卡。

![IP-Based-Filtering-WireShark-UI-Ubuntu](/data/attachment/album/202307/05/155350bvo29nkuytntrrki.jpg)

我们还可以根据颜色代码来过滤数据，默认情况下，浅紫色是 TCP 流量，浅蓝色是 UDP 流量，黑色标识有错误的数据包，要查看这些代码的含义，请单击“<ruby> 查看 <rt>  View </rt></ruby>”->“<ruby> 颜色规则 <rt>  Coloring Rules </rt></ruby>”，我们也可以更改这些代码。

![Coloring-Rules-WireShark-Ubuntu](/data/attachment/album/202307/05/155338ehx79q0nx67bpxnr.jpg)

获得所需的结果后，我们可以单击任何捕获的数据包以获取有关该数据包的更多详细信息，这将显示有关该网络数据包的所有数据。

要停止捕获数据包，请单击红色停止按钮，然后将捕获的数据包保存到文件中。

![Save-Captured-Packets-Wireshark-Ubuntu](/data/attachment/album/202307/05/155309hqt8icwz0ww46vro.jpg)

### 总结

Wireshark 是一款非常强大的工具，需要一些时间来适应和掌握它，这篇文章将帮助你开始使用。请随时在下面的评论栏中提出你的疑问或建议。

*（题图：MJ/63c09e75-a3e7-4dbf-ac6f-0233bdd34ad8）*

---

via: <https://www.linuxtechi.com/install-use-wireshark-ubuntu/>

作者：[Pradeep Kumar](https://www.linuxtechi.com/author/pradeep/) 选题：[lkxed](https://github.com/lkxed/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


树莓派的五种最奇特的用途

Summary: 人们使用树莓派做各种各样的事情。有哪些用途让你特别好奇的吗？

人们使用树莓派做各种各样的事情。有哪些用途让你特别好奇的吗？

![](/data/attachment/album/202307/05/165343at95f5gf954lfll6.jpg)

>
> 人们使用树莓派做各种各样的事情。有哪些用途让你特别好奇的吗？
>
>
>

最近，我在一个电话会议上听到有人说开源社区是好奇心和解决问题的文化的结合。好奇心是我们解决问题的基础。在解决各种规模的问题时，我们使用了大量的开源工具，其中包括在功能极为方便的树莓派上运行的 [Linux](https://opensource.com/article/19/3/learn-linux-raspberry-pi)。

我们每个人都有各种不同的生活经历，所以我向我们的作者社区询问了他们所遇到的最奇特的树莓派用途。我有一种预感，这些令人惊奇的构建将会为其他人激发灵感。

### 使用树莓派进行实验

对我来说，树莓派是在家庭网络中增加额外开发资源的绝佳工具。如果我想要创建一个新的网站或者尝试一个新的软件工具，我不必让我的桌面 Linux 机器因为一堆我可能只在实验时使用一次的软件包而变得笨重。相反，我会将它设置在我的树莓派上。

如果我认为我将要做一些冒险的事情，我会使用备份的启动环境。我有两张 microSD 卡，这样我就可以在树莓派上插一张卡，同时设置第二张卡进行任何我想要的实验。额外的 microSD 卡成本并不高，但在我想要在第二个镜像上进行实验的时候，它能节省大量时间。只需关机，换下 microSD 卡，重新启动，立即就可以在专用的测试系统上工作。

当我不进行实验时，我的树莓派充当打印服务器，将我的非 WiFi 打印机连接到家庭网络上。它还是一个方便的 SSH 文件服务器，让我可以快速备份重要文件。

— [Jim Hall](https://opensource.com/users/jim-hall)

### 树莓派的流行

我见过的树莓派最令人惊讶的事情是它使小型单板计算机的概念变得流行和通俗化，并使其真正实用于大众。

在树莓派出现之前，我们有类似的小型单板计算机，但它们往往是小众的、昂贵的，并且从软件角度来看让人拒之千里。树莓派价格便宜，便宜到任何人都可以轻松为一个项目获得一台（不考虑目前难以获得的情况）。一旦它变得便宜，人们就会克服软件挑战，使其足够好以解决许多基本的计算任务，甚至可以将完整的真正的计算机用于特定任务，而不仅仅是微控制器。

我们拥有大量好的、相对廉价的小型单板计算机，这促进了各种调试、玩耍和 [实验](https://opensource.com/article/20/8/kubernetes-raspberry-pi)。人们愿意尝试新的想法，甚至推动了更多业余爱好者的硬件开发来支持这些想法。

老实说，这是我从树莓派看到的最令人惊奇和激进的事情：它根本性地改变了人们对计算的认知，尤其是树莓派擅长的领域，并不仅仅催生了自己的生态系统，现在还催生了无数其他多样化的生态系统。

— [John ‘Warthog9' Hawley](https://opensource.com/users/warthog9)

### 蜜蜂的树莓派

在 2018 年，我和我的弟弟曾经养过几个蜂箱，并使用树莓派和各种传感器来监测蜂箱的温度和湿度。我们还计划在夏天实施蜂箱秤，以观察蜜蜂的产蜜情况，并在冬天测量重量，以查看蜜蜂是否有足够的食物。不过我们最终没有实施这个计划。

我们的小型监测解决方案基于树莓派 2B，运行 Raspbian Stretch（基于 Debian 9），并连接了一个温湿度传感器（DHT11）。在蜂箱内我们有三到四个这样的传感器，用于测量蜂箱入口孔、盖子下方和最低框架的温度。我们直接将传感器连接到树莓派，并使用 Python\_DHT 传感器库读取数据。我们还建立了 [InfluxDB](https://opensource.com/article/17/8/influxdb-time-series-database-stack)、Telegraf，并最终设置了 [Grafana](https://opensource.com/article/21/3/raspberry-pi-grafana-cloud) 来可视化数据。

如果你想了解更多关于我们的设置的信息，我们在 [Linux Magazine](https://www.linux-magazine.com/index.php/layout/set/print/Issues/2018/214/Monitoring-Beehives) 上发表了一篇关于我们小型监测解决方案的文章。

— [Heike Jurzik](https://opensource.com/users/hej)

### 树莓派的复古计算

我希望用树莓派创建一个模拟如何使用“开关和指示灯”将机器语言编程到旧式计算机的项目。使用树莓派的 GPIO 引脚，这看起来相当简单。例如，他们的在线手册上展示了如何使用 GPIO 开关控制 LED 的开关，或者使用按钮进行输入。我认为只需一些 LED 和开关，再加上在树莓派上运行的小程序，就可以模拟旧式计算机。不过，我缺乏空闲时间来从事这样的项目，这就是为什么我编写了 [Toy CPU](https://opensource.com/article/23/1/learn-machine-language-retro-computer) 来模拟它。

— [Jim Hall](https://opensource.com/users/jim-hall)

### 使用树莓派打造玩具

当我女儿四岁的时候，她要求圣诞节时给她买一个“巨齿鲨音乐盒”。她能在脑海中完美地想像出来。它会是粉红色的、闪闪发光的，上面有她的名字。当她打开盒子时，会播放这部热门电影的主题曲。她可以将巨齿鲨和其他宝贝都放在盒子里。在网上和商店里到处搜索后，我发现没有一个能与她的想象相媲美。于是我和丈夫决定，在我们自己的玩具店（也就是他的家庭办公室）自己动手制作一个。而这一切的核心当然是树莓派。他使用光传感器和 Python 脚本，让音乐在恰当的时刻播放。我们将科技设备谨慎地放置在音乐盒的底部，并根据她的审美进行装饰。那一年，开源技术让圣诞魔法成为了可能！

— [Lauren Pritchett](https://opensource.com/users/lauren-pritchett)

*（题图：MJ/aa8f1412-0f1d-4780-99db-22d6522010b7）*

---

via: <https://opensource.com/article/23/3/most-curious-uses-raspberry-pi>

作者：[AmyJune Hineline](https://opensource.com/users/amyjune) 选题：[lkxed](https://github.com/lkxed/) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1053 美国计划限制中国使用美国先进的云计算服务

Summary:
? 美国计划限制中国使用美国先进的云计算服务
? Canonical 收回对 LXD 的控制
? 最后一个支持 Windows 7/8 的 Firefox 版本发布
»
»

![](/data/attachment/album/202307/05/182139y24fir07t4g7ot07.jpg)

![](/data/attachment/album/202307/05/182153arvkrnxl3wkrnll3.jpg)

### 美国计划限制中国使用美国先进的云计算服务

美国国家安全分析人士警告说，中国的人工智能公司可能通过使用云服务绕过了现行的出口管制规则。这些服务允许客户获得强大的计算能力，而不需要购买控制清单上的先进设备 —— 包括芯片，如英伟达的 A100 芯片。美国政府正准备限制中国公司使用美国的云计算服务，要求亚马逊和微软等美国云服务提供商在向中国客户提供使用先进人工智能芯片的云计算服务之前，必须寻求美国政府的许可。

>
> **[消息来源：华尔街日报](https://www.wsj.com/articles/u-s-looks-to-restrict-chinas-access-to-cloud-computing-to-protect-advanced-technology-f771613)**
>
>
>

>
> 老王点评：又是一次重击。不过，没有先进芯片就无法制造 AI 么，未必。
>
>
>

![](/data/attachment/album/202307/05/182211lh53nfzi36ca5jce.jpg)

### Canonical 收回对 LXD 的控制

LXD 作为 Linux 容器（LXC）的开源容器管理扩展，长期以来一直与 Canonical 密切相关，是它的软件产品之一。之前，LXD 一直是 LXC 项目的一部分，但 Canonical 已经决定将其更多地拉入自己的直接控制范围。LXD 的 GitHub 资源库被转移到 Canonical 名下，其官网、YouTube 频道、论坛都也随之转移。LXC 社区对失去 LXD 表示遗憾。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Canonical-Pulls-In-LXD)**
>
>
>

>
> 老王点评：越来越多的看到企业对开源暴露出了狼外婆的笑容。
>
>
>

![](/data/attachment/album/202307/05/182226g1mzjhzrrm3xmtka.jpg)

### 最后一个支持 Windows 7/8 的 Firefox 版本发布

刚刚发布的 Firefox 115 是一个扩展支持版本（ESR），它将一直支持到 2024 年 9 月，之后不再提供安全更新。ESR 为许多下游项目提供了支持，如 Thunderbird、KaiOS。此外，如果你使用过时的操作系统，ESR 也是你唯一能依赖的 Firefox 版本，如微软在 2023 年 1 月终止支持的 Windows 7 和 Windows 8，以及苹果的 MacOS 10.14、10.13 或 10.12 等等。

>
> **[消息来源：Mozilla](https://www.mozilla.org/en-US/firefox/115.0/releasenotes/)**
>
>
>

>
> 老王点评：其实，过期的操作系统和浏览器，也不是不能用，不换有不换的原因。
>
>
>


适用于 Linux 的 5 个最佳 PDF 编辑器

![](/data/attachment/album/202307/06/183239nz7t4ab2zb690a9a.jpg)

>
> 我们列出了适用于 Ubuntu 和其他 Linux 发行版的最佳自由及开源的 PDF 编辑器。并根据它们的 PDF 编辑功能进行比较。
>
>
>

正在寻找适用于 Ubuntu 的自由及开源 PDF 编辑器？继续阅读本文以了解 Ubuntu 的最佳 PDF 编辑器以及如何使用它们编辑 PDF 文件的分步指南。

Ubuntu 是深受开发人员、学生和专业人士欢迎的操作系统。编辑 PDF 文件是许多用户的常见任务，但找到适合该工作的工具可能很困难。在本文中，我们将介绍一些最好的免费和开源的 PDF 编辑器及其功能。

### 适用于 Ubuntu 和其他发行版的最佳免费 PDF 编辑器

#### LibreOffice Draw

LibreOffice 是一款流行的开源办公生产力套件。它的绘图组件名为 “LibreOffice Draw”，能够编辑 PDF。在此列表中的所有应用中，LibreOffice Draw 是在 Linux 中编辑 PDF 文件的最佳选择。

让我们看看如何编辑示例 PDF 和选项。

* 打开 LibreOffice Draw 并单击“<ruby> 文件 <rt>  File </rt></ruby>”>“<ruby> 打开 <rt>  Open </rt></ruby>”
* 选择你要编辑的 PDF 文件
* 根据需要编辑 PDF 文件
* 保存编辑后的 PDF 文件

这是正在编辑文本的示例图片。

![LibreOffice Draw 中的 pdf 编辑示例](/data/attachment/album/202307/06/183516u4ns9s7xk026947t.jpg)

关于 LibreOffice Draw 的一些使用说明：

* LibreOffice Draw 本身将 PDF 组件检测为小的文本或图像块。例如，如果 PDF 文件中有一个段落，它会将其检测为单独的文本块。请参见下图。
* 这可能有点棘手，但你仍然可以仔细编辑它。
* 此外，你还可以在 PDF 文件中添加文本框和其他组件。

![LibreOffice Draw edits PDF texts block wise](/data/attachment/album/202307/06/183538ebls6azbzzaw21t5.jpg)

#### Inkscape

流行的 [Inkscape](https://inkscape.org/) 图形编辑器可以编辑和修改 PDF 文件。它提供的读取单个 PDF 组件的功能是无与伦比的，而且完全被低估了。

Inkscape 允许你通过外部库的 “Popller/Cairo 导入”或内置的内部 PDF 导入工具来导入 PDF 文件。你也可以告诉 Inkscape 将 PDF 字体与你系统中任何最接近的字体相匹配。

![Inkscape PDF 导入选项](/data/attachment/album/202307/06/183548bjpkkttjkxpepjxx.jpg)

打开 PDF 时，你可以单独编辑 PDF 中的章节、单词、线条、段落或绘图。每个组件都会被识别并表示为单独的层，以进行更高级的编辑。

编辑完成后，你可以再次将其导出成 PDF。

![在 Ubuntu 中使用 Inkscape 编辑 PDF](/data/attachment/album/202307/06/183559kldvk0lralddttt7.jpg)

如果你想要高级 PDF 编辑，Inkscape 是最好的选择。步骤概述如下。

* 打开 Inkscape 并单击“<ruby> 文件 <rt>  File </rt></ruby>”>“<ruby> 打开 <rt>  Open </rt></ruby>”
* 选择你要编辑的 PDF 文件
* 根据需要编辑 PDF 文件
* 导出编辑后的 PDF 文件

你可以[在 Linux 系统安装 Flatpak](https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/) 和 Flathub，并使用以下命令安装 Inkscape。

```
flatpak install org.inkscape.Inkscape

```

#### GIMP

许多人不知道流行的光栅图形编辑器 [GIMP](https://www.gimp.org/) 也可以打开并允许你编辑 PDF。在 GIMP 中打开 PDF 文件会提示你将每个 PDF 页面分别作为图像文件的图层打开。你现在可以编辑图像并最终从 GIMP 将它们导出为 PDF。

![File open dialog in GIMP which shows prompts for advanced PDF import settings](/data/attachment/album/202307/06/183623unneakhswt6hhkar.jpg)

但有一个问题。每个 PDF 页面都成为 GIMP 中的静态图像。其中包括文本、图表、图标等。因此，如果你想修改它，你可能需要匹配字体大小、通过 GIMP 选择删除部分等等。

因此，总的来说，你可以进行高级编辑，但无法修改其上的现有文本。

使用方法很简单。

* 打开 GIMP 并单击“<ruby> 文件 <rt>  File </rt></ruby>”>“<ruby> 打开 <rt>  Open </rt></ruby>”
* 选择你要编辑的 PDF 文件
* 根据需要编辑 PDF 文件。
* 另存为编辑后的 PDF 文件

你可以 [在 Linux 系统安装 Flatpak](https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/) 和 Flathub，并使用以下命令安装 GIMP。

```
flatpak install org.gimp.GIMP

```

![使用 GIMP 编辑 PDF](/data/attachment/album/202307/06/183641x510obvdttn8nspc.jpg)

#### Okular

KDE 社区流行的文档查看器应用 [Okular](https://okular.kde.org/) 的 PDF 编辑功能有限。它没有加载一整套 PDF 编辑功能。不过，你可以在 Okular 中执行一些高级注释。

因此，我认为它在这个列表中占有一席之地是当之无愧的。

在 PDF 中使用 Okular 可以执行以下操作：

* 添加文本作为注释
* 使用各种颜色高亮显示 PDF 中的文本
* 添加注释、箭头和手绘图。

**但是，你无法使用 Okular 修改现有 PDF 内容。**

注释完成后，你可以将文件另存为 PDF。

你可以 [在 Linux 系统安装 Flatpak](https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/) 和 Flathub，并使用以下命令安装 Okular。

```
flatpak install org.kde.okular

```

![使用 Okular 进行基本 PDF 注释](/data/attachment/album/202307/06/183652v9u7i61x391mkiak.jpg)

#### Scribus

[Scribus](http://www.scribus.net/) 是最古老的开源桌面出版程序之一，它以 PDF 和 Postscript 格式生成商业级输出，主要（但不限于）用于 Linux。

虽然主要用于设计，但它可以打开 PDF 文件并提供有限的编辑选项。

导入选项允许你选择将 PDF 文本导入为矢量图像还是文本。此外，你还可以调整 PDF 组件的大小、将其分组/取消分组、更改文本等。

完成后，你可以将其保存回 PDF 文件。它是被低估的程序之一，你可以尝试使用它在 Ubuntu 和其他发行版中编辑 PDF。

你可以 [在 Linux 系统安装 Flatpak](https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/) 和 Flathub，并使用以下命令安装 Scribus。

```
flatpak install net.scribus.Scribus

```

![用于导入 PDF 文件的 Scribus 选项](/data/attachment/album/202307/06/183700fq6pnx58nn9ifm48.jpg)

![在 Ubuntu 中编辑 pdf 的 Scribus 选项](/data/attachment/album/202307/06/183708s01yukllzcommzll.jpg)

### 其他商业和非自由及开源替代品

你可能想尝试一些商业的、非自由及开源软件的选项。这里是其中的一些。

* [Sejda PDF Desktop](https://www.sejda.com/desktop)（最多免费 3 个任务，200 页，每天 50 MB）
* [PDFedit（当前未维护，使用旧库）](https://sourceforge.net/projects/pdfedit/)
* [Master PDF editor（商业）](https://code-industry.net/masterpdfeditor/)

### 总结

我们推荐的免费 PDF 编辑器是 Inkscape 和 LibreOffice Draw。它们都能够满足从基本到高级的使用水平，并且效果良好。

你可以尝试其他选项，但结果可能会根据 PDF 文件的复杂程度而有所不同。

此外，你始终可以选择商业选项以获得更多功能。

我希望本指南可以帮助你为 Ubuntu 和其他 Linux 发行版选择最好的免费 PDF 编辑器。

*（题图：MJ/3ea2b1da-87e4-4839-97e9-5937f93c64eb）*

---

via: <https://www.debugpoint.com/pdf-editors-ubuntu/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lkxed](https://github.com/lkxed/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


使用 pdftk 为 PDF 文档创建书签

Summary: 充分利用现有的技术，提供书签以帮助用户。

充分利用现有的技术，提供书签以帮助用户。

![](/data/attachment/album/202307/06/185044ioz6nw1jqkqnhx66.jpg)

>
> 充分利用现有的技术，提供书签以帮助用户。
>
>
>

在 [介绍 pdftk-java](https://opensource.com/article/21/12/edit-pdf-linux-pdftk) 中, 我展示了如何在脚本中使用 `pdftk-java` 来快速修改 PDF 文件。

但是，`pdftk-java` 最有用的场景是处理那种动辄几百页的没有目录的大 PDF 文件。这里所谓的目录不是指文档前面供打印的目录，而是指显示在 PDF 阅读器侧边栏里的目录，它在 PDF 格式中的正式叫法是“<ruby> 书签 <rt>  bookmarks </rt></ruby>”。

![Screenshot of a sidebar table of contents next to a PDF](/data/attachment/album/202307/06/185111hcfai44dhqmtojdk.jpg "table of contents")

如果没有书签，就只能通过上下滚动或全局搜索文本来定位想要的章节，这非常麻烦。

PDF 文件的另一个恼人的小问题是缺乏元数据，比如标题和作者。如果你打开过一个标题栏上显示类似 “Microsoft Word - 04\_Classics\_Revisited.docx” 的 PDF 文件，你就能体会那种感觉了。

`pdftk-java` 让我能够创建自己的书签，我再也不面对这些问题了。

### 在 Linux 上安装 pdftk-java

正如 `pdftk-java` 的名称所示的，它是用 Java 编写的。它能够在所有主流操作系统上运行，只要你安装了 Java。

Linux 和 macOS 用户可以从 [AdoptOpenJDK.net](https://adoptopenjdk.net/releases.html) 安装 Java（LCTT 译注：原文为 Linux，应为笔误）。

Windows 用户可以安装 [Red Hat's Windows build of OpenJDK](https://developers.redhat.com/products/openjdk/download)。

在 Linux 上安装 pdftk-java：

1. 从 Gitlab 仓库下载 [pdftk-all.jar release](https://gitlab.com/pdftk-java/pdftk/-/jobs/1527259628/artifacts/raw/build/libs/pdftk-all.jar)，保存至 `~/.local/bin/` 或 [其它路径](https://opensource.com/article/17/6/set-path-linux) 下.
2. 用文本编辑器打开 `~/.bashrc`，添加 `alias pdftk='java -jar $HOME/.local/bin/pdftk-all.jar'`
3. 运行 `source ~/.bashrc` 使新的 Bash 设置生效。

### 数据转储

修改元数据的第一步是抽取 PDF 当前的数据文件。

现在的数据文件可能并没包含多少内容，但这也是一个不错的开端。

```
$ pdftk mybigfile.pdf \
  data_dump \
  output bookmarks.txt

```

生成的 `bookmarks.txt` 文件中包含了输入 PDF 文件 `mybigfile.pdf` 的所有元数据和一大堆无用数据。

### 编辑元数据

用文本编辑器（比如 [Atom](https://opensource.com/article/20/12/atom) 或 [Gedit](https://opensource.com/article/20/12/gedit)）打开 `bookmarks.txt` 以编辑 PDF 元数据。

元数据的格式和数据项直观易懂：

```
InfoBegin
InfoKey: Creator
InfoValue: Word
InfoBegin
InfoKey: ModDate
InfoValue: D:20151221203353Z00&apos;00&apos;
InfoBegin
InfoKey: CreationDate
InfoValue: D:20151221203353Z00&apos;00&apos;
InfoBegin
InfoKey: Producer
InfoValue: Mac OS X 10.10.4 Quartz PDFContext
InfoBegin
InfoKey: Title
InfoValue: Microsoft Word - 04_UA_Classics_Revisited.docx
PdfID0: f049e63eaf3b4061ddad16b455ca780f
PdfID1: f049e63eaf3b4061ddad16b455ca780f
NumberOfPages: 42
PageMediaBegin
PageMediaNumber: 1
PageMediaRotation: 0
PageMediaRect: 0 0 612 792
PageMediaDimensions: 612 792
[...]

```

你可以将 `InfoValue` 的值修改为对当前 PDF 有意义的内容。比如可以将 `Creator` 字段从 `Word` 修改为实际的作者或出版社名称。比起使用导出程序自动生成的标题，使用书籍的实际标题会更好。

你也可以做一些清理工作。在 `NumberOfPages` 之后的行都不是必需的，可以删除这些行的内容。

### 添加书签

PDF 书签的格式如下：

```
BookmarkBegin
BookmarkTitle: My first bookmark
BookmarkLevel: 1
BookmarkPageNumber: 2

```

* `BookmarkBegin` 表示这是一个书签。
* `BookmarkTitle` 书签在 PDF 阅读器中显示的文本。
* `BookmarkLevel` 书签层级。如果书签层级为 2，它将出现在上一个书签的小三角下。如果设置为 3，它会显示在上一个 2 级书签的小三角下。这让你能为章以及其中的节设置书签。
* `BookmarkPageNumber` 点击书签时转到的页码。

为你需要的章节创建书签，然后保存文件。

### 更新书签信息

现在已经准备好了元数据和书签，你可以将它们导入到 PDF 文件中。实际上是将这些信息导入到一个新的 PDF 文件中，它的内容与原 PDF 文件相同：

```
$ pdftk mybigfile.pdf \
  update_info bookmarks.txt \
  output mynewfile.pdf

```

生成的 `mynewfile.pdf` 包含了你设置的全部元数据和书签。

### 体现专业性

PDF 文件中是否包含定制化的元数据和书签可能并不会影响销售。

但是，关注元数据可以向用户表明你重视质量保证。增加书签可以为用户提供便利，同时亦是充分利用现有技术。

使用 `pdftk-java` 来简化这个过程，用户会感激不尽。

*（题图：MJ/f8869a66-562d-4ee4-9f2d-1949944d6a9c）*

---

via: <https://opensource.com/article/22/1/pdf-metadata-pdftk>

作者：[Seth Kenlon](https://opensource.com/users/seth) 选题：[lujun9972](https://github.com/lujun9972) 译者：[toknow-gh](https://github.com/toknow-gh) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


硬核观察 #1054 ChatGPT 流量 6 月首次出现月度下滑

Summary:
? ChatGPT 流量 6 月首次出现月度下滑
? 英国的大学制定了关于生成性人工智能的指导原则
? Spotify 停止接受苹果应用商店支付
»
»

“老王点评：毕竟苹果这种坐着就收钱的事情太招人恨了。”

苹果算良心了十抽三而已。印度Linux更狠。

不相信的人自己写个软件试试，看看折腾几个月能在官方商店上架。

这不是个找上限或找下限的问题，对比伤害的只是开发者，平台向来坐收其成。

印度Linux是十抽九。。。而且协议一签就是十年。。。排他。。。违约金这辈子赔不起。。。

印度linux是什麼平台？

![](/data/attachment/album/202307/06/213211fuuowg55sb5qv25n.jpg)

![](/data/attachment/album/202307/06/213226oo27oqozwozwj8q2.jpg)

### ChatGPT 流量 6 月首次出现月度下滑

去年 11 月推出的 ChatGPT，其网站的月流量和独立访客在 6 月首次出现下降。ChatGPT 网站的全球桌面和移动流量比 5 月份下降了 9.7%，独立访客下降了 5.7%，访客在网站上花费的时间也下降了 8.5%。ChatGPT 在推出两个月后，达到了 1 亿月度活跃用户。它是有史以来增长最快的消费者应用程序，现在拥有超过 15 亿的月访问量，是世界上排名前 20 的网站之一。

>
> **[消息来源：路透社](https://www.reuters.com/technology/booming-traffic-openais-chatgpt-posts-first-ever-monthly-dip-june-similarweb-2023-07-05/)**
>
>
>

>
> 老王点评：看来 ChatGPT 的热度有点下降了，除非能在不久推出 GPT-5 —— 前一段时间有谣传 OpenAI 已经训练了 GPT-5，我对此是保持高度怀疑的。
>
>
>

![](/data/attachment/album/202307/06/213243uyy56gribi65el5z.jpg)

### 英国的大学制定了关于生成性人工智能的指导原则

24 所罗素集团研究密集型大学的副校长们已经签署了一套指导原则，以确保学生和教职员工都具备人工智能知识。他们说这将有助于大学利用人工智能的机会，同时保护高等教育的学术严谨性和完整性。指导意见中说，应该教学生在学习中适当地使用人工智能，同时也让他们意识到生成性人工智能中存在的抄袭、偏见和不准确的风险。工作人员也必须接受培训，以便他们有能力帮助学生。

>
> **[消息来源：卫报](https://www.theguardian.com/technology/2023/jul/04/uk-universities-draw-up-guiding-principles-on-generative-ai)**
>
>
>

>
> 老王点评：这是一种务实的态度，毕竟已经不可阻挡，那就要学会如何与之相处。
>
>
>

![](/data/attachment/album/202307/06/213249lqoyxz044chzc74y.jpg)

### Spotify 停止接受苹果应用商店支付

Spotify 通知其付费用户，“不再接受这种计费方式作为付款形式”。用户需要在上一个订阅期结束后，重新使用 Spotify 的高级订阅。由于苹果拿走了 30% 的应用内购买的费用，与直接通过 Spotify 订阅相比，通过应用内购买订阅的 Spotify 用户每月被额外收取 3 美元。尽管现在苹果公司在第一年后将订阅的佣金率降低到 15%。

>
> **[消息来源：Engadget](https://www.engadget.com/spotify-stops-accepting-payments-that-were-set-up-through-apples-app-store-211722624.html)**
>
>
>

>
> 老王点评：毕竟苹果这种坐着就收钱的事情太招人恨了。
>
>
>


SparkyLinux 7 “Orion Belt” 评测：稳定性与新鲜感的结合

![](/data/attachment/album/202307/07/071756oh146361967g94y9.jpg)

>
> 我们评测了最新的 SparkyLinux 7 “Orion Belt”，它带来了最新、最好的 Debian 12 软件包。
>
>
>

SparkyLinux 是著名的基于 Debian 的桌面 Linux 发行版，又推出了它的最新版本 SparkyLinux 7 “Orion Belt”。自 [SparkyLinux 6.0](https://www.debugpoint.com/sparky-linux-6-review/) 以来，经过近两年的开发，这个主要版本已经发布。这个备受期待的版本结合了 Debian 12 的稳定性优势和 SparkyLinux 的尖端功能，承诺提供卓越的用户体验。

让我们深入研究这个主要版本的细节，并了解它的性能和其他发行版方面。

### SparkyLinux 7 “Orion Belt”

#### 核心更新

SparkyLinux 以其多样化的桌面风格而脱颖而出，确保适合每个用户。无论你喜欢视觉上令人惊叹的 KDE Plasma、轻量级 LXQt、经典 MATE、可定制的 Xfce 还是简约的 Openbox，SparkyLinux 7 都提供了令人印象深刻的选择，以满足各种喜好和要求。

SparkyLinux 7 的核心是 Debian 12 “Bookworm”，为稳定性和可靠性提供了坚实的基础。Debian 12 几天前发布，作为该项目的一个重要里程碑，它是历史上最好的 Debian 版本之一。也就是说，在 SparkyLinux 7 中，用户可以期望从 Debian “Bookworm” 和 Sparky “Orion Belt” 仓库更新所有软件包，确保最新的软件版本随时可用。

此版本默认由 Linux 内核 6.1 LTS 提供支持。但是，如果你更喜欢前沿的主线内核，那么你可以在不稳定的仓库中获取 6.3 和 5.15 LTS。

![SparkyLinux 7 Xfce 桌面](/data/attachment/album/202307/07/071858vxg8vt27t2e8t7m7.jpg)

#### 增强的应用和软件

内置应用堆栈已更新，包括基本应用。你可以使用稳定的 Firefox 102.12 ESR、Thunderbird 102.12、VLC 3.0 和 LibreOffice 7.4 作为关键应用。如果你更喜欢最新的 Firefox，那么可以使用 Firefox 114，它可以在单独的 Sparky 仓库中找到。

Sparky APTus AppCenter 是一款用于管理软件安装和更新的集成工具，已更新至版本 20230530，增强了用户的便利性。在一项重大更改中，systemd-timesyncd 取代了 ntp 以简化时间同步。

SparkyLinux 的旗舰产品 Xfce 桌面版本为 4.18，这是这款轻量级桌面的最新更新版本。此外，你还可以找到其他版本，例如 KDE Plasma 5.27、LXQt 1.2 和 MATE 1.26。

该团队还投入了大量精力来改进 amd64 ISO 映像，使其能够在具有 UEFI 主板和启用安全启动的机器上启动，从而扩展了对现代系统的兼容性。

那么，关于这个版本的更新就到这里了。我们来看看性能吧。

![APTUS Appcenter for SparkyLinux](/data/attachment/album/202307/07/071908bshlsccbsgcwv2i6.jpg)

#### 安装和性能

我使用 SparkyLinux Xfce 版本进行了本次评测的测试。Calamares 3.2.61 的安装很顺利，没有任何错误。如果你正在安装，你应该注意<ruby> 立付 <rt>  live </rt></ruby>介质的密码是 “live”，这是启动安装程序所必需的。

所有更新脚本（包括欢迎应用）在安装后运行良好。欢迎程序可让你快速访问所有系统信息和桌面功能。

我通过 Firefox（运行 YouTube 的 4 个以上选项卡）、文件管理器、绘图应用、终端、VLC、Synaptic 包管理器和 AppCenter 来运行这个版本。资源占用稍高一些。

此负载的内存消耗约为 2 GB，CPU 使用率平均约为 2%。SparkyLinux 7（Xfce）默认安装占用 5.2 GB 磁盘空间。

所以，总的来说，我相信它运行得相当好，但考虑到 Xfce 桌面，内存消耗似乎有点高。

![SparkyLinux 7 性能](/data/attachment/album/202307/07/071916jrw0b30wa770zapa.jpg)

### 总结

SparkyLinux 7 “Orion Belt” 带来了 Debian 的精华，为用户提供稳定性和多功能性的平衡组合。SparkyLinux 凭借其广泛的桌面风格、精选应用和专业版本，可以满足广泛的用户需求。

该版本将持续近两年的维护和安全更新。因此，你可以放心地采用它作为你的日常使用。

你可以从其 [官方网站](https://sparkylinux.org/download/) 下载 SparkyLinux。

参考自 [发布公告](https://sparkylinux.org/sparky-7-0-orion-belt/)

*（题图：MJ/2be08f20-13c3-4c3c-bb84-0bf5be77f86c/）*

---

via: <https://www.debugpoint.com/sparkylinux-7-review/>

作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lkxed](https://github.com/lkxed/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出