如何在 Kubernetes 集群上安装 Ansible AWX

# 如何在 Kubernetes 集群上安装 Ansible AWX

>
> 在本文中，我们将逐步向你展示如何在 Kubernetes（k8s）集群上安装 Ansible AWX。
>
>
>

Ansible AWX 是一个强大的开源工具，用于管理和自动化 IT 基础设施。AWX 为 Ansible 提供图形用户界面，使你可以轻松创建、安排和运行 Ansible <ruby> 剧本 <rt>  Playbook </rt></ruby>。

另一方面，Kubernetes 是一种流行的容器编排平台，广泛用于部署和管理容器化应用。

先决条件：

* Kubernetes 集群
* Kubectl
* 具有 sudo 权限和集群管理员权限的普通用户
* 互联网连接

### 步骤 1：安装 Helm

如果你的系统上安装了 Helm，则在命令下运行以进行安装，

```
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod +x get_helm.sh
$ ./get_helm.sh
$ helm version

```

### 步骤 2：安装 AWX chart

在 Kubernetes 上安装 AWX 的最简单方法是使用 AWX Helm “<ruby> 海图 <rt>  chart </rt></ruby>”。因此，要通过 “海图” 安装 AWX，首先使用以下 `helm` 命令添加仓库。（LCTT 译注：Kubernetes 生态中大量使用了和航海有关的比喻，因此本文在翻译时也采用了这些比喻）

```
$ helm repo add awx-operator https://ansible.github.io/awx-operator/
"awx-operator" has been added to your repositories
$

```

注意：如果你之前已经添加过此仓库，请在命令下运行以获取最新版本的软件包。

```
$ helm repo update

```

要通过 Helm 安装 awx-operator，请运行:

```
$ helm install ansible-awx-operator awx-operator/awx-operator -n awx --create-namespace

```

这将下载 AWX 海图并将其安装在 `awx` 命名空间中的 Kubernetes 集群上。安装过程可能需要几分钟，请耐心等待。

### 步骤 3：验证 AWX 操作员安装

安装成功后，你可以通过运行以下命令来验证 AWX <ruby> 操作员 <rt>  operator </rt></ruby> 状态：

```
$ sudo kubectl get pods -n awx

```

你应该看到这样的东西：

### 步骤 4： 创建 PV、PVC 并部署 AWX yaml 文件

AWX 需要 postgres <ruby> 容器荚 <rt>  pod </rt></ruby> 的持久卷。那么，让我们首先为本地卷创建一个存储类。

注意：在本文中，我使用本地文件系统作为持久卷。

```
$ vi local-storage-class.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-storage
  namespace: awxprovisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

```

保存并关闭文件，然后运行：

```
$ kubectl create -f local-storage-class.yaml
$ kubectl get sc -n awx
NAME            PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION
local-storage   kubernetes.io/no-provisioner   Delete          WaitForFirstConsumer   false
$

```

接下来使用以下 `pv.yaml` 文件创建持久卷（PV）：

```
$ vi pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: postgres-pv
  namespace: awx
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local-storage
  local:
    path: /mnt/storage
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - k8s-worker

```

保存并退出文件。

重要说明：确保文件夹 `/mnt/storage` 存在于工作节点上，如果不存在，则在工作节点上使用 `mkdir` 命令创建它。在我们的例子中，工作节点是 `k8s-worker`。

执行下面的命令在 `awx` 命名空间中创建 `postgres-pv`。

```
$ kubectl create -f pv.yaml

```

成功创建 PV 后，使用 `pvc.yaml` 文件创建 PersistentVolumeClaim：

```
$ vi  pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgres-13-ansible-awx-postgres-13-0
  namespace: awx
spec:
  storageClassName: local-storage
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

```

要创建 PVC，请运行以下 `kubectl` 命令：

```
$ kubectl create -f pvc.yaml

```

使用下面的命令验证 PV 和 PVC 的状态：

```
$ kubectl get pv,pvc -n awx

```

现在，我们都准备好部署 AWX 实例了。创建一个包含以下内容的 `ansible-awx.yaml` 文件：

```
$ vi ansible-awx.yaml
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: ansible-awx
  namespace: awx
spec:
  service_type: nodeport
  postgres_storage_class: local-storage

```

保存并关闭文件。

执行以下 `kubectl` 命令来部署 awx 实例：

```
$ kubectl create -f ansible-awx.yaml

```

等待几分钟，然后检查 `awx` 命名空间中的容器荚状态。

```
$ kubectl get pods -n awx

```

### 步骤 5：访问 AWX Web 界面

要访问 AWX Web 界面，你需要创建一个公开 awx-web 部署的服务：

```
$ kubectl expose deployment ansible-awx-web --name ansible-awx-web-svc --type NodePort -n awx

```

此命令将创建一个 `NodePort` 服务，该服务将 AWX Web 容器的端口映射到 Kubernetes 节点上的端口。你可以通过运行以下命令找到端口号：

```
$ kubectl get svc ansible-awx-web-svc  -n awx

```

这将输出如下内容：

```
NAME                 TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
ansible-awx-web-svc   NodePort   10.99.83.248   <none>        8052:32254/TCP   82s

```

在此示例中，Web 服务在端口 32254 上可用。

默认情况下，admin 用户是 Web 界面的 `admin`，密码在 `<resourcename>-admin-password` 机密信息中。要检索管理员密码，请运行：

```
$ kubectl get secrets -n awx | grep -i admin-password
ansible-awx-admin-password        Opaque               1      109m
$
$ kubectl get secret ansible-awx-admin-password -o jsonpath="{.data.password}" -n awx | base64 --decode ; echo
l9mWcIOXQhSKnzZQyQQ9LZf3awDV0YMJ
$

```

你现在可以打开 Web 浏览器并进入 `http://<node-ip>:<node-port>/` 来访问 AWX Web 界面。在上面的示例中，URL 是：

```
http://192.168.1.223:3225

```

输入凭据后单击登录。

恭喜！ 你已在 Kubernetes 上成功安装 Ansible AWX。你现在可以使用 AWX 来自动化你的 IT 基础架构，并让你作为系统管理员的生活更轻松。

*（题图：MJ/bfd354aa-2ee5-4555-98b8-ac5207cbeabe）*

---

via: <https://www.linuxtechi.com/install-ansible-awx-on-kubernetes-cluster/>

作者：[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/) 荣誉推出


硬核观察 #1043 数百万 GitHub 项目易受依赖库劫持攻击

Summary:
? 数百万 GitHub 项目易受依赖库劫持攻击
? 美国新数据显示，在家工作成为新常态
? Firewalld 2.0 发布
»
»

因为它们干的活更高级，这里更多的是低级血汗工厂没法远程工作

# 硬核观察 #1043 数百万 GitHub 项目易受依赖库劫持攻击

### 数百万 GitHub 项目易受依赖库劫持攻击

安全专家发现，数以百万计的 GitHub 项目易受依赖库劫持攻击，攻击者可以借此发动影响大量用户的供应链攻击。GitHub 上的用户名和项目或库的名字如果改变，为了避免破坏其它项目的依赖关系，GitHub 会创建一个重定向。但如果有人用旧的名字创建了账号，那么就会导致重定向无效。GitHub 可以防御部分此类攻击，但该防御方案可以被绕过。

>
> **[消息来源：Aqua Sec](https://blog.aquasec.com/github-dataset-research-reveals-millions-potentially-vulnerable-to-repojacking)**
>
>
>

>
> 老王点评：我觉得 GitHub 应该更认真的解决这个问题，毕竟 GitHub 已经不仅仅是一个代码仓库，而是一个供应链的重要组成部分了。但从另外一个角度看，软件项目依赖这种不确定的供应链是不是也过于宽松了？
>
>
>

### 美国新数据显示，在家工作成为新常态

许多在大流行期间蜷缩在家里的白领工人已经回到办公室，但没有回到办公室的人特别多。对许多人来说，远程工作似乎是一种新常态。周四公布的美国经济数据显示，在家工作似乎已经成为一种趋势，特别是对女性和受过大学教育的人而言。2022 年的数据显示，34% 的 15 岁以上的人仍然在家里工作，54% 的人拥有学士或更高的学位。而美国旧金山市长已经 [提议](https://www.cnn.com/2023/06/23/business/sf-mayor-proposes-tearing-down-westfield-mall/index.html) 将市中心荒废的购物中心改造为足球场，因为越来越多人不再回到市中心上班，旧金山的办公室空置率已达到 30 年来的最高水平。

>
> **[消息来源：MSN](https://www.msn.com/en-us/money/careers/remote-work-appears-here-to-stay-especially-for-women/ar-AA1cTTWp)**
>
>
>

>
> 老王点评：不知道为什么美国人就不回去上班了，而我们似乎都赶紧回去了。
>
>
>

### Firewalld 2.0 发布

开源防火墙守护程序 Firewalld 自 2011 年以来一直在开发，而两年前才达到 Firewalld 1.0 的里程碑。因此，发现 Firewalld 2.0 在今天发布有点令人惊讶。2.0 中最重要的变化解决了区域漂移的问题，即防火墙策略可能最终违反了 “数据包只进入一个区域” 的规则。此外，还增加了对 NFTables Flowtable 的支持，可以显著提高转发性能，将网络转发的 iperf 性能提高了约 59%。

>
> **[消息来源：Phoronix](https://www.phoronix.com/news/Firewalld-2.0)**
>
>
>

>
> 老王点评：看起来是 Firewalld 的开发在加速，不过我更觉得它是在飙版本号。看看 Firefox、Linux 内核等开源软件的版本号，看来开源软件对版本号的谦虚传统已经被丢弃了。
>
>
>


使用开源 API 网关实现可伸缩 API

Summary: 采用 Apache APISIX 的 API 主导架构。

# 使用开源 API 网关实现可伸缩 API

>
> 采用 Apache APISIX 的 API 主导架构。
>
>
>

API 网关是一个单一节点，提供对 [API](https://www.redhat.com/en/topics/api/what-are-application-programming-interfaces) 调用入口。网关聚合了所请求的服务，并相应传回合适的响应信息。为了令你的 API 网关有效地工作，设计一个可靠、高效且简洁地 API 至关重要。本文介绍一种设计风格，但只要你理解其中的重点内容，它就能解决你的相关问题。

### 由 API 主导的方法

API 主导的方法是将 API 置于应用程序和它们需要访问的业务能力之间的通信核心，从而在所有数字通道上一致地交付无缝功能。API 主导的连接是指使用一种可重用、且设计得当的 API 来连接数据和应用程序的方法。

### API 主导的架构

API 主导的架构是一种架构方法，它着眼于实现重用 API 的最佳方式。它能解决以下问题：

* 保护 API，使外界无法在未授权情况下访问 API
* 确保应用程序能找到正确的 API 端点
* 限制对 API 的请求次数，从而确保持续的可用性
* 支持持续集成、测试、生命周期管理、监控、运维等等
* 防止错误在栈间传播
* 对 API 的实时监测和分析
* 实现可伸缩和灵活的业务能力（例如支持 [微服务](https://www.redhat.com/en/topics/microservices/what-are-microservices?intcmp=7013a000002qLH8AAM) 架构）

### API 资源路由

实现一个 API 网关，把它作为与所有服务通信的单一入口点，意味着使用者只需要知道 URL 就能使用 API。将请求路由到相应的服务端点，并执行相应的功能是 API 网关的职责。

由于客户端应用程序不需要从多个 HTTP 端点调用功能，这个办法就减少了 API 使用者的操作复杂度。对每个服务来说，也不需实现一个单独的层级去实现认证、授权、节流和速度限制。大多数API 网关，如开源的 [Apache APISIX](https://apisix.apache.org/docs/apisix/terminology/api-gateway/)，已经包含了这些核心功能。

### API 基于内容的路由

基于内容的路由机制也使用 API 网关根据请求的内容进行路由调用。例如，一个请求可能是基于 HTTP 请求的头部内容或消息体被路由，而不只基于它的目标 URI。

考虑这样一个场景：为了将负载在多个数据库实例间均分，需要对数据库进行分区。当记录总数较大，单个数据库实例难以管理负载时，常常会用这个办法。

还有一个更好的办法，就是把记录在多个数据库实例间分散开来。然后你实现多个服务，每个不同的数据库都有一个服务，把一个 API 网关作为访问所有服务的唯一入口。然后，你可以配置你的 API 网关，根据从 HTTP 头或有效载荷中获得的密钥，将调用路由到相应的服务。

在上面的图表中，一个 API 网关向多个客户服务暴露一个单一的 `/customers` 资源，每个服务都有对应的不同数据库。

### API 地理路由

API 地理路由解决方案根据 API 调用的来源将其路由到最近的 API 网关。为了防止地理距离导致的延迟问题（例如一个位于亚洲的客户端调用了位于北美地区的 API），你可以在多个地区部署 API 网关。对于一个 API 网关，你可以在每个区域使用不同的子域名，让应用程序基于业务逻辑选择最近的网关。因此 API 网关就提供了内部负载均衡，确保进入的请求分布于可用的实例之间。

通常使用 DNS 流量管理服务和 API 网关，针对该区域的负载均衡器解析子域名，定位到距离最近的网关。

### API 聚合器

这项技术对多个服务执行操作（例如查询），并向客户端服务以单个 HTTP 响应的形式返回结果。API 聚合器使用 API 网关在服务器端代表使用者来执行这项工作，而非让客户端程序多次调用 API。

假定你有一款移动端 APP，对不同的 API 发起多次调用。这增加了客户端代码的复杂性，导致网络资源的过度使用，而且由于延迟性，用户体验也不好。网关可以接收所有需要的信息，可以要求认证和验证，并理解来自每个 API 的数据结构。它也可以传递响应的有效载荷，因此它们也会作为一个用户需要的统一负载传回移动端。

### API 集中认证

在这种设计中，API 网关就是一个集中式认证网关。作为一个认证者，API 网关在 HTTP 请求头中查找访问凭据（例如不记名的令牌）。然后它借助于身份验证提供方执行验证凭据的业务逻辑。

使用 API 网关的集中式身份验证能解决很多问题。它完全取代了应用程序中的用户管理模块，通过对来自客户端应用程序的身份验证请求的快速响应来提高性能。Apache APISIX 提供了一系列插件，支持不同的 API 网关认证方法。

### API 格式转换

API 格式转换是通过同一传输方式将有效载荷从一种格式转换为另一种格式的能力。例如，你可以通过 HTTPS 从 XML/SOAP 格式转换为 JSON 格式，反之亦然。API 网关提供了支持 [REST API](https://www.redhat.com/en/topics/api/what-is-a-rest-api?intcmp=7013a000002qLH8AAM) 的功能，可以有效地进行负载和传输的转换。例如，它可以把消息队列遥测传输（MQTT）转换为 JSON 格式。

Apache APISIX 能够接收 HTTP 请求，对其进行代码转换，然后将其转发给 gRPC 服务。它通过 [gRPC Transcode](https://apisix.apache.org/docs/apisix/plugins/grpc-transcode/) 插件获取响应并将其以 HTTP 格式返回给客户端。

### API 的可观察性

现在，你知道 API 网关为进入各种目的地的流量提供了一个中心控制点。但它也可以是一个中心观察点，因为就监控客户端和服务器端的流量来说，它有独特的资格。为了收集监测工具所需要的数据（结构化日志、度量和跟踪），你可以对 API 网关作出调整。

Apache APISIX 提供了 [预先构建的连接器](https://apisix.apache.org/docs/apisix/plugins/prometheus/)，因此你可以跟外部监测工具结合使用。你可以利用这些连接器从你的 API 网关收集日志数据，进一步获得有用的指标，并获取完整可见的服务使用情况。

### API 缓存

API 缓存通常在网关内部实现。它可以减少对端点的调用次数，同时通过缓存上游的响应，改进了请求延迟的情况。如果网关缓存对请求资源有一个新副本，它会直接使用这个副本来响应这个请求，而不必对端点发出请求。如果缓存数据不存在，就将请求传到目标上游服务。

### API 错误处理

由于各种原因，API 服务可能会出错。在这种情况下，API 服务需要有一定的弹性，来应对可预见的错误。你也希望确保弹性机制能正常工作。弹性机制包括错误处理代码、断路器、健康检查、回退、冗余等等。新式的 API 网关支持各种常见错误处理功能，包括自动重试和超时设置。

API 网关作为一个协调器，它会根据各方面情况来决定如何管理流量、将负载均衡发送到一个健康的节点，还能快速失败。当有异常状况，它也会向你发出警示。API 网关也保证路由和其他网络级组件能协同将请求传给 API 进程。它能帮助你在早期检测出问题，并修复问题。网关的错误注入机制（类似于 Apache APISIX 使用的那种）可用于测试应用程序或微服务 API 在各种错误发生时的弹性。

### API 版本管理

版本管理是指定义和运行多个并发的 API 版本的功能。这点也很重要，因为 API 是随着时间推移不断改进的。如果能对 API 的并发版本进行管理，那么 API 使用者就可以较快地切换到新的版本。这也意味着较老的版本可以被废弃并最终退役。API 也跟其他应用程序类似，无论是开发新功能还是进行错误修复，都存在演变的过程。

你可以使用 API 网关来实现 API 版本管理。版本管理可以是请求头，查询参数或路径。

### APISIX 的网关

如果你需要令 API 服务可伸缩，就需要使用 API 网关。Apache APISIX 提供了必要的功能，可以实现健壮的入口，它的好处是显而易见的。它遵循 API 主导的架构，并且有可能改变客户端与托管服务交互的方式。

本文经作者许可，从 [Apache APISIX](https://apisix.apache.org/blog/2022/10/27/ten-use-cases-api-gateway/) 博客改编并转载。

*（题图：MJ/f1d05345-48f5-4e3e-9c65-a2ba9105614a）*

---

via: <https://opensource.com/article/23/1/api-gateway-apache-apisix>

作者：[Bobur Umurzokov](https://opensource.com/users/iambobur) 选题：[lkxed](https://github.com/lkxed) 译者：[cool-summer-021](https://github.com/cool-summer-021) 校对：[wxy](https://github.com/wxy)

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


5 种预防开源许可违规的方法

Summary: 你必须遵守适用于重新使用的开源代码的众多开源许可证之一。

你必须遵守适用于重新使用的开源代码的众多开源许可证之一。

# 5 种预防开源许可违规的方法

<img src="content_image/album_202306_26_182415zqdgqmmwlt2qn7zu.jpg" alt="" title="">

开发人员可以通过将开源软件集成到其代码库中，节省时间并避免重复发明轮子。然而，这也带来了严重的许可侵权风险。你必须遵守适用于重新使用的开源代码的众多开源许可证之一。如果你不这样做，你（或你所在公司）有可能因违反开源许可证条款而被起诉。即使这种诉讼并不普遍发生，它们确实存在。实际上，考虑到现在许多开源项目由希望保护其在开源社区中的投资的企业运营，这种情况在未来可能更加频繁发生。

### 1、熟悉开源许可证

了解开源许可证是防止开源许可侵权问题中最重要的一步。很容易认为所有开源许可证都施加相同的条件，或者它们都基本要求源代码的持续可用性。实际上，有数十种不同的开源许可证，它们都有着非常不同的条款。简单地认为只要你从一个开源项目获取代码，你可以随意使用它并保持源代码可访问，这是一个严重的错误。几个开源许可证的一个典型但经常被忽视的条件可能是需要向原始作者提供致谢。

### 2、记录你使用的开源内容

建立一个标准化的方法来记录你使用开源代码的情况是一个优秀的做法。导入模块或从 GitHub 粘贴代码并不难。但如果你不追踪代码来自何处以及使用了何种许可证，你可能会忘记在代码库中如何以及在哪里集成开源内容。此外，如果你在借用代码时无法证明自己遵守了有效的许可条件，那么在开源许可证发生变化时可能会产生问题。考虑在文档维基（如果有的话）中添加一个页面，列出你使用的开源代码，以避免出现这个问题。每当你包含开源组件或依赖时，至少在你自己的源代码中添加注释。

### 3、避免使用未经授权的开源组件

有时，你可能会偶然发现一个隐藏的 GitHub 存储库或其他源代码托管位置，其中包含你希望使用的代码，但没有提到任何许可指南。你可能会认为代码的创建者希望让其成为开源代码，并且你可以根据自己的意愿使用它。但这是一个危险的假设。开发人员可能会后续对代码设置特定的许可条件，并要求你遵守这些条件，这可能导致未来产生许可侵权的指控。除非你有非常充分的理由，否则避免使用缺乏明确许可限制的模糊代码。

### 4、创建自己的开源代码

将你自己的软件完全开源是减少与开源许可相关风险的一种方法。这意味着你将自动遵守任何要求保留派生源代码的开源许可条件。然而，请记住，仅仅开放你自己的代码并不能确保完全遵守许可证。你仍然需要努力确保你遵守每个许可证的规定，因为适用于你借用的代码的许可证可能与你选择的开源许可证不同。然而，你无需担心与源代码共享相关的任何条款。

### 5、自动检测开源组件

虽然在代码库内手动跟踪你如何使用开源是很好的做法，但通过使用能够自动识别开源组件和依赖项的软件，你可以降低出错的可能性。在这里，我们应该考虑两种不同类型的工具。一种是源代码组成分析（SCA）软件，它会自动扫描源代码并识别从值得信任的外部来源获取的元素。另一种是软件供应链管理解决方案，除其他功能外，还支持查找和监控应用程序堆栈中的任何开源依赖项。

*（题图：MJ/2168d466-cfc3-47de-a8a5-fc7ebaaa445f）*

---

via: <https://www.opensourceforu.com/2022/08/5-ways-to-prevent-open-source-licensing-violations/>

作者：[Laveesh Kocher](https://www.opensourceforu.com/author/laveesh-kocher/) 选题：[lkxed](https://github.com/lkxed) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

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


硬核观察 #1044 中国论文贡献度首次超越美国

Summary:
? 中国论文贡献度首次超越美国
? 英伟达最新 GPU 黑市价格翻番
? NFC 将变得更强
»
»

# 硬核观察 #1044 中国论文贡献度首次超越美国

### 中国论文贡献度首次超越美国

《自然》杂志分析了 2022 年全球知名科学期刊论文的各国贡献度，结果显示，中国首次超越美国登上榜首。该排行榜依据论文作者及所属机构的“自然指数”汇总进行排名。对于《自然》、《科学》等 82 种期刊的自然科学领域论文，计算作者所属机构所在国的比例，把总和作为贡献度进行比较，结果显示中国排名第一。美国、德国、英国、日本等分列第二到第五。而从包括大学在内的研究机构来看，前十有六家来自中国，中国科学院居首。

>
> **[消息来源：《自然》](https://www.nature.com/articles/d41586-023-01868-3)**
>
>
>

>
> 老王点评：看起来可喜可贺，但是我们的基础科学研究还不够强，还需要继续努力。
>
>
>

### 英伟达最新 GPU 黑市价格翻番

去年，美国商务部阻止了包括英伟达和 AMD 在内的美国顶级硬件公司向中国和俄罗斯出售其最先进的芯片。其中，英伟达的 A100 和 H100 GPU 属于出口管制的对象。这导致这些芯片在黑市的价格达到了 2 万美元，比正常价格高一倍，并且没有保修和支持。

>
> **[消息来源：The Register](https://www.theregister.com/2023/06/26/us_export_ban_of_nvidias/)**
>
>
>

>
> 老王点评：现在 AI 对 GPU 的需求非常迫切，这可比挖矿那时候对 GPU 的需求更紧迫。
>
>
>

### NFC 将变得更强

负责制定近场通讯规范的 NFC 论坛公布了到 2028 年的主要计划和研究工作。主要的五个方面包括：NFC 无线充电的功率将从 1 瓦提升到 3 瓦；连接范围将从 5 毫米提升四到六倍；支持多用途轻触；使支持 NFC 手机具有 POS 功能；能够分享其成分和产品回收方式的数据。

>
> **[消息来源：The Register](https://www.theregister.com/2023/06/26/nfc_forum_innovation_roadmap/)**
>
>
>

>
> 老王点评：虽然要几年才能落地，但我总觉得 NFC 变强也带来更多风险，比如近场通讯的距离变得更远，盗刷风险就大了。
>
>
>


弃 Ubuntu 转 Manjaro 一周后的使用体验

Summary: 最近我决定在实体机上切换到 Arch Linux

新手的话还是别用arch的好，尤其是当你是一个很懒只想躺平的人的话

hold不住arch一样hold不住manjaro，能hold住arch的不需要manjaro。倒是装endeavour能省不少事，又能像用arch一样用linux。manjaro到底投了多少广宣费。

感觉manjaro还可以啊！我轻办公，已经manjaro单系统半年多了，没出过啥问题啊

来自河南郑州的 Chrome Mobile 111.0|Android 12 用户

manjaro比arch更容易挂. 软件库落后一个小版本.大问题可能碰的少一点 小问题非常多.<br />
安装的时候省时间 出问题找起来更麻烦.manjaro出问题好像还不能直接用arch-chroot

无聊，十年后继续争论那个linux发行版好用吧

总有人想装逼学不来 Arch 就用 Manjaro，还给自己洗脑自己用的是 Arch。

但是 Manjaro 不是 Arch，Manjaro 有自己的独立软件源，Manajro 中的软件版本也落后于 Arch 几周， 都与 Arch 不兼容了，很多问题的解决方案并不能套用。

还有 AUR = Arch User Repo，是为 Arch 服务的，Manjaro 虽然能用，但也容易出问题。

这倒不是 Arch 用户自认为高人一等。

Manjaro 這個分三個 channel 延遲兩週的做法，原因出於兩點他們處理打包方面非常存疑的做法

- 他們想要自己打包一部分非常核心的包，包括 glibc 內核 驅動 systemd

- 他們不想重新打整個發行版所有包，想直接從 Arch 拿二進制來用。

這兩個做法單獨只做一個沒啥事，放一起做就很容易導致他們自己打包的核心包破壞了二進制兼容，以至於他們從 Arch 拿的二進制包壞掉。所以他們延遲兩週，並不是在測試 Arch 包打包本身的質量，而是在測試他們拿來 Arch 的包和他們自己亂改的核心包之間的兼容性。Arch

Arch 本身有一套機制保證 Arch 打包放出來的時候是測試好相互兼容的，被他們替換掉幾個核心包之後就不一定兼容了，他們也沒有渠道涉足 Arch 內部打包機制，從 Arch 組織內部了解什麼時候放出包之類的信息。綜合這些情況，對他們來說合理的做法就是延遲一陣子讓他們自己的人測試一下。

所以作為證據你看他們的打包者開發者很少會向 Arch 上游反饋測試打包遇到的問題…因為 manjaro unstable 和 manjaro testing 會遇到的問題大部分都是他們自己造成的問題而不是 Arch 的問題。

要是他們誠實地把這個情況傳達給他們用戶的話我不責怪他們。Ar

Arch整個滾動發布的生態也不利於下游發行版。Debian 這種上游打包時可以約定版本兼容性的範圍，可以鎖 abi ，Arch 打包本身就不考慮這些，作為Arch下游就的確很難操作。我反感 manjaro 的點在於他們把這種難看的做法宣傳成他們的優勢，還為了這個看起來是優勢故意去抹黑 Arch 作為上游的打包質量…做法就很難看了。<br />
—— farseerfc

有manjaro-chroot

来自山东济南的 Chrome Mobile 114.0|Android 13 用户

看下小尾巴

对manjaro的反感主要来自于那个宣扬开源功利主义，把白嫖说的多高大上的lulinux。以及B乎。其实折腾折腾，Manjaro也不是不能用，但想不折腾是不存在的。对于我来说，Manjaro和Arch的一个区别是，用Manjaro我需要先去掉它那些画蛇添足的默认配置，然后像Arch一样使用。但Endeavour没这个问题。最近在用去年自己做的LFS，也挺稳定，没出问题，出问题也是我的问题。已经不怎么挑发行版，除非一些其他原因。

所以尾巴是Windows，其实Windows也不是不能用。感觉以前对Linux的情怀已经没有了。特别是近期RH事件，更是没情怀了。什么技术细节开放，真要研究，又不是不能IDA。已经不挑发行版了。

我能回复吗？

能~

最近我决定在实体机上切换到 Arch Linux

# 弃 Ubuntu 转 Manjaro 一周后的使用体验

通常，我用的是基于 Ubuntu 的发行版进行工作，如 Pop!\_OS、Zorin OS、Linux Mint 或 Ubuntu 本身。

它们不会干扰我的工作，同时又提供了顺滑的软件更新。更不用说，它们与我使用的英特尔-英伟达系统相容性良好。

所有的一切（可能是主观的）都能开箱即用。

然而，最近我决定在实体机上切换到 Arch Linux（我大部分时间都是在虚拟机上使用它）。

结果，我最终选择使用了 **Manjaro Linux**（一款基于 Arch 的发行版）。

### 我选择 Manjaro Linux 的原因

令我惊讶的是，即使是使用 **Arch Linux 的立付 USB**，我甚至无法解决 “nouveau DRM: core notifier timeout” 错误，更别提继续安装了。是的，我知道有向导式的 Arch Linux 安装程序，但是不论怎么样，连接的显示器都会闪烁并突出显示这个错误。

解决这个问题的最好办法是不使用我的最近刚刚升级的英伟达显卡。

*很遗憾，我更喜欢英伟达的显卡……*

AMD 的 RX 6600 XT 的价格与 RTX 3060 Ti 相当；对于 1440p 来说，购买那款显卡是没有意义的。

因此，在我这个情况下，RTX 3060 Ti 可能是问题所在。

虽然我找到了一些解决问题的方法，但是我太懒了。我只是想看看能否在不用付出太多努力的情况下体验一下 Arch Linux。

**所以，我做了以下的事情：**

下一个最佳选择就是尝试任何一个专门简化了麻烦的 [最佳的基于 Arch 的发行版](https://itsfoss.com/arch-based-linux-distros/)，对吧？

这就是 **Manjaro Linux** 登场的地方。

Manjaro Linux 是一款流行的基于 Arch 的发行版，并且我注意到每次更新时都有各种改进（在虚拟机上使用时）。

此外，我喜欢 Manjaro 默认主题的强调色，很适合我的桌面体验。

所以，我决定试试看……

### Manjaro Linux: 起步有点困难

使用专有的英伟达驱动程序安装 Manjaro 时我没有遇到任何问题。然而，最近的一个小版本更新，**Manjaro Linux 21.2.6，** 把我的系统弄乱了。

我无法访问登录界面和 [TTY](https://itsfoss.com/what-is-tty-in-linux/)（我只能看到主板制造商的标志）

因此，我只能使用最新的 ISO 重新安装 Manjaro Linux，到目前为止一切都还好（千万别出问题）。

在我使用 Manjaro Linux 的过程中，我注意到了一些事情，有好有坏。

在这里，我分享一些我的经历。如果你还没有尝试过，这些经验应该对你帮助很大，可以让你更多地了解它。

#### 1、简单的安装

基于 Arch 的发行版的主要亮点是使安装过程变得简单。对我来说，完全没有遇到任何问题。

在我的第二块硬盘上安装 Manjaro Linux 是一件轻而易举的事情。引导加载程序正确配置，显示了 Manjaro 主题的启动菜单，让我可以选择 Windows/Manjaro Linux 进行双启动。

#### 2、Manjaro 欢迎页

当尝试新东西时，欢迎体验在用户体验中占据了一大部分重要性。在这方面，Manjaro Linux 没有让人失望。

如果你仔细关注欢迎屏幕上提供的信息，你可以获得所有必要的信息。

GNOME 布局管理器能让你选择一个合适的布局，使你更加舒适。

然而，当我尝试在这里启用“**窗口平铺**”功能时，它却无法正常工作：

#### 3、包管理器快速且功能丰富

考虑到 GNOME 是我最喜欢的桌面环境，我在软件中心（甚至是像 Pop!\_Shop 这样特定于发行版的商店）上有过糟糕的经历。

虽然它们可以完成工作，但有时它们对我的期望反应不及预期。

在 Manjaro Linux 中，我发现安装了 [Pamac](https://wiki.manjaro.org/index.php/Pamac) 作为包管理器。这似乎是 [在 Manjaro Linux 上安装和卸载软件的最佳方式之一](https://itsfoss.com/install-remove-software-manjaro/)。

根据我的经验，它在安装和卸载软件时非常快速。在安装某些软件时，你还会收到关于软件包冲突或是否需要替换/删除某些软件包的提示。当你安装某些东西时，包管理器提供了关于可选/必需依赖项的大量信息。

总体来说，体验非常流畅，没有出现任何麻烦。为了提升体验，包管理器还可以通过调整 pamac 的偏好设置，快速启用对 **Flatpaks/Snaps/AUR** 的支持。

所以，你不必使用终端或不同的软件商店。一切都可在一个统一的平台下获得，这大大节省了时间。

#### 4、尝试 ZSH Shell

我习惯于在基于 Ubuntu 的发行版上使用 Bash shell。然而，Manjaro Linux 默认使用 Zsh shell。我相信 Zsh 比 Bash 更好，不过我很快会在另一篇文章中介绍并深入比较。

换句话说，我可以直接尝试不同的东西。令我兴奋的是，终端提示符和遵循 Manjaro 品牌的Shell（或终端）的主题也采用了 Manjaro 的强调色，非常令人印象深刻！

因此，我没有必要在此处 [自定义终端的外观](https://itsfoss.com/customize-linux-terminal/)。

要了解更多信息，你可以查看一些关于 [Zsh 是什么](https://linuxhandbook.com/why-zsh/) 以及 [如何安装它](https://linuxhandbook.com/install-zsh/) 的信息。

#### 5、缺乏官方软件支持

我希望这个情况能够很快改善。但目前来说，许多软件/工具只提供对 Ubuntu 和 Fedora 的官方支持。

你可以在各种工具中找到官方的 DEB/RPM 包，但它们都不能直接在 Manjaro Linux 上使用。

你得依赖 Arch Linux 仓库或 [AUR](https://itsfoss.com/aur-arch-linux/) 中提供的软件包。

幸运的是，很有可能在 AUR 或社区或发行版开发者维护的仓库中找到所需的软件。就像我能够在 Manjaro Linux 上运行 [Insync](https://itsfoss.com/recommends/get-insync/)，并使用文件管理器的集成扩展。

然而，由于缺乏对该平台的官方支持，你可能会错过一些功能或快速更新。

当然，如果你依赖于 [Flatpak](https://itsfoss.com/what-is-flatpak/) 或 Snap 软件包，这对你来说应该不是个问题。此外，如果你是 Linux 的新手，你可以参考我们的 [Flatpak 指南](https://itsfoss.com/flatpak-guide/) 获取更多信息。

#### 6、缺少分数缩放

我有一个由 1080p 和 1440p 分辨率组成的双显示器。因此，分数缩放很有帮助，但我可以不用它来操作。

要在 Manjaro 上启用分数缩放，你需要安装支持 X11 缩放的 Mutter 和 GNOME 控制中心软件包。这些软件包包括：

* `mutter-x11-scaling`
* `gnome-control-center-x11-scaling`

这将替换你现有的 Mutter 和 GNOME 控制中心软件包。因此，你将失去桌面的默认主题/强调色设置。

你可能需要使用 GNOME “<ruby> 调整 <rt>  Tweaks </rt></ruby>”应用来将一切调整正确。但是，这可能会令人感觉麻烦。

### 总结

总体而言，我喜欢在 Manjaro Linux 上的桌面体验。如果那个更新没有搞坏我的系统，我认为我会继续使用 Manjaro Linux 作为我的新日常操作系统。

你认为 Manjaro Linux 的优点和缺点是什么？我在我的新体验中有遗漏了什么吗？作为一个有经验的 Arch Linux 用户，你有任何建议吗？

请在下方评论中告诉我你的想法。

*（题图：MJ/2726c4dd-5611-4ace-8c77-0db894ad6a23）*

---

via: <https://news.itsfoss.com/manjaro-linux-experience/>

作者：[Ankush Das](https://news.itsfoss.com/author/ankush/) 选题：[lujun9972](https://github.com/lujun9972) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

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


使用 GNOME 在 Fedora 中启用分数缩放

Summary: 以下是在 GNOME 版本的 Fedora 工作站中启用分数缩放的步骤。

以下是在 GNOME 版本的 Fedora 工作站中启用分数缩放的步骤。

# 使用 GNOME 在 Fedora 中启用分数缩放

>
> 以下是在 GNOME 版本的 Fedora 工作站中启用分数缩放的步骤。
>
>
>

<ruby>   分数缩放  <rt>  Fractional Scaling </rt></ruby> 是一项方便的功能，可让你最大程度地优化 HiDPI 显示器和高分辨率笔记本电脑。通过微调缩放比例，你可以创建平衡良好、既不太大也不太小且美观的桌面显示。虽然通过分辨率设置也可以，但由于操作系统的限制，它们通常符合你的实际情况。

此外，它还允许你增加显示屏上文本和其他 UI 元素的大小，而不会使所有内容显得模糊。如果你有高分辨率显示器并希望使文本更易于阅读，这将很有用。

Ubuntu 20.04 LTS 在 2020 年引入了 100%、125%、150%、175% 和 200% 的分数缩放。它可以在“<ruby> 显示 <rt>  Display </rt></ruby>”页面下的“<ruby> 设置 <rt>  Settings </rt></ruby>”中找到。

但在默认 GNOME 桌面的 Fedora 工作站中，只有 100% 和 200% 缩放可用。

### 如何使用 GNOME 在 Fedora 中启用分数缩放

打开终端窗口（`CTRL+ALT+T`）。

运行以下命令。此命令在带有 GNOME 的 Fedora 中启用 125%、150% 和 175% 缩放因子。

```
gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"

```

重启 Fedora。

打开 “设置” 应用，你应该会看到新的缩放因子。

但是，重要的是要注意分数缩放并不总是完美的。某些应用程序可能无法正确缩放。例如，如果应用程序设计不当，非 GTK 应用可能看起来很模糊。

此外，请务必注意，由于 GPU 的渲染工作量更大，分数缩放可能会增加笔记本电脑的功耗。

### 一些使用说明

根据我的测试，上述命令在 Wayland 中应该是有效的。

如果你不想使用上述命令，但仍想获得类似的体验，那么你可以按照以下步骤操作：

使用 `sudo dnf install gnome-tweaks` 安装 GNOME “<ruby> 调整 <rt>  Tweaks </rt></ruby>” 应用。

转到 “<ruby> 字体 <rt>  Fonts </rt></ruby>” 设置并更改比例因子。

示例：如果你想保持 100% 缩放比例但想要更大的字体，请尝试缩放比例设为 1.1 或 1.2。根据你的需要进行调整。

* 125%：这是分数缩放的典型值。它将文本大小和 UI 元素增加 25% 而不会使所有内容显得模糊。
* 150%：对于想要放大文本和其他 UI 元素但又不想增加显示分辨率的人来说，这是一个很好的值。
* 175%：对于想要使文本和其他 UI 元素变得非常大的人来说，这是一个很好的值。

尝试不同的缩放因子对于找到最适合你的缩放因子至关重要。最佳缩放因子将取决于你的显示器尺寸、视力和偏好。

我希望本指南有所帮助。

*（题图：MJ/4346b556-57ed-4c76-b2c9-e651e0d229f5）*

---

via: <https://www.debugpoint.com/fractional-scaling-fedora/>

作者：[Arindam](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/) 荣誉推出


硬核观察 #1045 人工智能正在扼杀旧互联网

Summary:
? 人工智能正在扼杀旧互联网
? DeepMind 称其下一个人工智能系统将超过 ChatGPT
? 澳大利亚建议居民每晚重启手机
»
»

电没用完或手机出了问题才关机

果然是那样的，重启能解决90%以上的问题。

# 硬核观察 #1045 人工智能正在扼杀旧互联网

### 人工智能正在扼杀旧互联网

互联网总是在消亡；多年来它一直在消亡，被那些从网站上转移流量的应用程序或奖励所谓缩短注意力的算法所杀死。但最近几个月，人工智能正在加速扼杀旧互联网。谷歌正试图改变其几十年一成不变的蓝色链接列表；领英使用人工智能来刺激疲劳的用户；Snapchat 和 Instagram 希望机器人能在你的朋友不在时与你交谈；Reddit 的版主们在抗议天价 API；Stack Overflow 的管理员们则在反对人工智能生成的内容；互联网档案馆正在对抗数据刮削者；维基百科正在被人工智能撕碎；聊天机器人们在反刍自己幻想出来的内容。

>
> **[消息来源：The Verge](https://www.theverge.com/2023/6/26/23773914/ai-large-language-models-data-scraping-generation-remaking-web)**
>
>
>

>
> 老王点评：感觉未来来的太快，这一年来因为 AI，发生了太多事情。
>
>
>

### DeepMind 称其下一个人工智能系统将超过 ChatGPT

DeepMind 的 CEO 说，他们正在开发一个被称为 Gemini 的人工智能系统，该系统将比 OpenAI 的 ChatGPT 背后的系统更强大，Gemini 将结合 AlphaGo 中使用的技术，赋予该系统新的能力，如计划或解决问题的能力。AlphaGo 基于 DeepMind 的强化学习技术，通过反复尝试并接受关于其表现的反馈，学会处理需要选择采取何种行动的棘手问题。2016 年，AlphaGo 击败了人类棋手冠军，创造了历史。Gemini 仍在开发中，还将需要数月时间，它可能花费数千万乃至数亿美元。

>
> **[消息来源：Wired](https://www.wired.com/story/google-deepmind-demis-hassabis-chatgpt/)**
>
>
>

>
> 老王点评：在这件事上，谷歌暂时还没有说服力的产品。
>
>
>

### 澳大利亚建议居民每晚重启手机

澳大利亚政府告诉居民，作为一项网络安全措施，他们应该每天关闭和重新开启他们的智能手机。这个建议并不新鲜。2020 年，美国国家安全局发布了移动设备安全的最佳实践指南，其中包括每周重启一次智能手机以防止黑客攻击。网络安全专家称，定期重启手机可以将风险降到最低，因为它强行关闭了在后台运行的任何可能恶意监控用户或收集数据的应用程序和进程。

>
> **[消息来源：卫报](https://www.theguardian.com/technology/2023/jun/23/turn-your-phone-off-every-night-for-five-minutes-australian-pm-tells-residents)**
>
>
>

>
> 老王点评：我觉得这种做法聊胜于无吧。顺便做个调查，有多少人不是全天都开着手机，一般多久才重启一次手机呢？
>
>
>


“发行版快闪”的七个错误

# “发行版快闪”的七个错误

>
> 你在“发行版快闪”中做错了什么？你能做得更好吗？当然可以。在这里，我们告诉你如何做。
>
>
>

“<ruby> 发行版快闪 <rt>  Distro hopping </rt></ruby>” 是指经常尝试新的 Linux 发行版，以寻找乐趣或找到适合你的完美发行版的习惯。

毕竟，有着 [数百种 Linux 发行版](https://itsfoss.com/what-is-linux/)，而且时不时就有新的版本出现。你可能会担心错过它们，而去尝试 Linux 社区的最新潮流。

无论你为何这样做，不管你喜欢与否，人们会犯下一些错误，这让“发行版快闪”的体验变得糟糕。

这些错误是什么？让我带你一一了解：

### 1、不进行备份

嗯，你想要更换发行版，由于过于兴奋，你毫不犹豫就切换了。

但是，如果你没有备份重要的、经常访问的数据，你可能需要重新配置系统和组织你需要的数据。

所以，如果你有备份，无论你做什么，你需要的数据始终可访问，并帮助你在发行版之间快速的跳来跳去。

### 2、不检查显卡的驱动支持

用户常常忽略发行版与其系统中的显卡的兼容性，而抱怨发行版有问题。

你必须确保你的发行版对你的显卡有开箱即用的支持。

如果你像我一样有一块英伟达显卡，你应该只选择提供带有英伟达支持的 ISO，或在启动菜单中内置了该支持的发行版。

例如，在 Linux Mint 上你需要 [安装英伟达驱动](https://itsfoss.com/nvidia-linux-mint/)。虽然大部分情况下这是一个简单且没什么麻烦的过程，但并不是每个人都愿意为之付出努力。你也可以选择 [Pop!\_OS](https://pop.system76.com/) 或 [Ubuntu](https://itsfoss.com/getting-started-with-ubuntu/)，它们默认情况下与英伟达显卡兼容良好。

### 3、抱有过高期望

没有谁能完美地挑选出你需要和你可能喜欢的东西。

所以，不要听从他人的建议。自己进行研究，选择你想尝试的下一个发行版。

即使你知道你想要什么，也不要期望新的发行版一定会比你当前的发行版更好。各个发行版在许多方面都有所不同。

**你的下一个发行版可能解决了你遇到的问题，但也可能会带来你没有预料到的新问题。** 最好假设你可能会遇到你没有预料到的困扰。

所以，如果你要进行“发行版快闪”，请先系好安全带。

### 4、在物理机上安装发行版

**不要安装新的发行版来替换你当前的发行版**。

如果你直接在你的计算机上更换发行版，可能会导致一些问题，你可能需要先花时间修复这些问题，甚至在了解或体验 Linux 发行版的最佳部分之前就要这样做。

相反，你应该使用 **<ruby> 立付 <rt>  Live </rt></ruby>环境** 或 **虚拟机** 来尝试发行版。

通常，你可以从启动菜单或“<ruby> 试用 <rt>  Try </rt></ruby>”选项中进入立付环境，以在安装 Linux 发行版之前测试一下。

另外，你可以尝试使用 [虚拟机来运行 Linux 发行版](https://itsfoss.com/why-linux-virtual-machine/)。通过使用虚拟机，你可以学习该发行版并进行各种测试，而无需麻烦地更改主机系统。

通过这个选项，你无需改变你的主机系统。你可以测试所有基本要素，如 **网络连接、应用程序可用性、预装工具** 等等，而无需放弃当前的发行版。

### 5、忽视你的使用场景

发行版太多反而让事情变得混乱。

一个发行版的某个部分或特性可能引起了你的注意，这让你认为其他部分也适合你。

你接下来想要尝试的任何发行版应该完全符合你的需求才行。如果它提供了更多或不同的功能，对你来说不一定是好处。

例如，一个发行版可能提供更多的可定制性，这一般是很好的。但如果你不需要那么多控制权，那些提供的选项可能会让你感到不知所措，或者很快对你来说就会像是无用软件。

你可以了解一下有哪些 [最佳 Linux 发行版](https://itsfoss.com/best-linux-distributions/)，并根据文章中提到的特点对它们进行分析。

一个例子是特定的使用场景，比如寻找一个在旧计算机上运行良好的 [轻量级发行版](https://itsfoss.com/lightweight-linux-beginners/)：

或者你正在寻找一些安全、可靠和未来可靠的系统？[不可变的 Linux 发行版](https://itsfoss.com/immutable-linux-distros/) 应该适合你。

或者...

你想要 [玩游戏](https://itsfoss.com/linux-gaming-distributions/) 吗？也有相应的选择！

简而言之，不要选择一个不适合你使用场景的发行版。

### 6、更换日常工具

除了发行版，一些用户还更换了他们每天使用的工具。

考虑到工具对你的用户体验有重大影响，它最终会改变你的工作流程。你可能这样做是为了尝试新东西，但你应该坚持那些始终适合你的工具。

也许你已经用上了 [最佳基本应用程序](https://itsfoss.com/essential-linux-applications/)，为什么要改变呢？

只有当工具在新的发行版上无法按预期工作时，你才应该寻找替代方案。

### 7、不选择桌面环境

有几件事可以帮助你缩小在系统上安装 Linux 发行版的选择。

其中之一就是 [桌面环境](https://itsfoss.com/what-is-desktop-environment/)。

当然，在选择一个桌面环境之前，你应该了解一下有哪些 [最佳桌面环境](https://itsfoss.com/best-linux-desktop-environments/)。一旦选择了一个，与你想要尝试带有任何桌面环境的发行版相比，你就不必频繁切换发行版。

### 你应该停止“发行版快闪”吗？

你想要探索不同的发行版，并找到最适合自己的一个，这并没有错。

然而，如何从一个发行版“快闪”到另一个发行版可能会让这个过程变得麻烦，并且你可能会抱怨。

你应该 **遵循本文中提到的上述要点**，在想要切换之前使用 **虚拟机** 尝试新的发行版。

现在，你应该能在“发行版快闪”的过程中获得顺滑的体验了。

? 请在下方评论中分享你的“发行版快闪”经历。你会这样做吗？

*（题图：MJ/5bdb860a-0505-476e-bb38-014ee8fe733e）*

---

via: <https://itsfoss.com/distrohopping-issues/>

作者：[Ankush Das](https://itsfoss.com/author/ankush/) 选题：[lkxed](https://github.com/lkxed/) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)

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


如何安装和使用 GNOME Boxes 来创建虚拟机

# 如何安装和使用 GNOME Boxes 来创建虚拟机

>
> 本快速教程解释了安装和使用 GNOME Boxes 以及创建虚拟机的步骤，以及一些提示和故障排除。
>
>
>

虚拟化是使用抽象硬件层运行虚拟实例（而不是实际实例）的过程。通俗地说，它允许你同时安装和运行多个操作系统（Linux、Windows）。

[虚拟机](https://www.redhat.com/en/topics/virtualization/what-is-a-virtual-machine) 是一个模拟操作系统，它运行在另一个操作系统之上，并使用与主机相同的硬件和存储空间。虽然，你可以控制可以分配给虚拟机的共享内存或空间量。

有多种软件可用于创建虚拟机，例如 [Virtual Box](https://www.debugpoint.com/tag/virtualbox/)、KVM、Hyper-V、VMWare player 和 GNOME Boxes。

但老实说，它们中的大多数使用起来都很复杂，有时还不够稳定。[GNOME Boxes](https://wiki.gnome.org/Apps/Boxes) 是另一个自由开源的软件，它非常易于使用，通过抽象出大量选项让你可以轻松创建和管理虚拟机。

### 安装 GNOME Boxes

如果你正在运行 Fedora 的 GNOME 定制版，你应该已经安装了它。但是，对于 Ubuntu、Linux Mint、Kubuntu 和其他发行版，你只需运行以下命令即可将其安装到你的系统中。

```
sudo apt install gnome-boxes

```

#### 通过 Flatpak

它也可以通过 Flatpak 包获得。我会推荐你使用这个版本。首先，使用 [本指南](https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/) 在系统中安装 Flatpak，然后从终端运行以下命令进行安装。

```
flatpak install flathub org.gnome.Boxes

```

### 使用 GNOME Boxes 创建虚拟机

从应用菜单启动 GNOME Boxes。

要创建虚拟机，你需要要虚拟化的操作系统的镜像（\*.ISO）。

你可以从发行版的官方下载页面下载任何操作系统 ISO 镜像。对于本指南，我使用的是 Pop!\_OS，这是一个优秀的 Linux 发行版。

启动后，单击顶部的 “+” 图标启动并选择“<ruby> 创建虚拟机 <rt>  Create a virtual machine </rt></ruby>”。

在下一个窗口中，你可以选择已经可用的下载，或者你可以选择你的 ISO 文件作为操作系统源。单击“<ruby> 操作系统镜像文件 <rt>  Operating system image file </rt></ruby>”并选择你的 ISO 文件。

分配虚拟机的内存和存储空间。请记住，你的虚拟机将从主机系统获取内存和存储空间。所以尽量不要分配为最大值。

例如，在下图中，我从主机系统的 8GB 总内存中为虚拟机（客户机）分配了 2GB 内存。

同样，如果你只是想测试操作系统，也请选择最小存储空间。但是，如果你正在为服务器或严肃的工作创建虚拟机，请合理分配你要分配的空间或内存量。

另一件需要记住的重要事情是，除非你删除虚拟机，否则你允许的存储磁盘空间将被永久占用。因此，即使你的虚拟机没有使用整个分配的空间，你也不会获得那么多的可用磁盘空间。

继续安装。

在分区窗口中，你应该看到一个硬盘和一个分区，这就是虚拟机的磁盘空间。通常，它们被命名为 `/dev/vda` 或者 `/dev/sda`。

不用担心；你可以随意使用此分区，这不会影响你的物理磁盘分区或实际主机系统上的任何数据。安装 Linux 时遵循相同的 `/root` 分区，然后继续。

完成安装后，你应该会在虚拟机中看到新的操作系统。在 GNOME Boxes 中，你应该会看到一个系统条目。你可以单击它启动虚拟机。

你可以使用虚拟机操作系统的内部关闭选项关闭虚拟机。

如果需要，你还可以通过选择上下文菜单选项来删除虚拟机。

你还可以从属性窗口检查你的虚拟机使用了多少内存和 CPU。

请注意，你可以使用属性调整现有虚拟机的内存和其他项目。

### 故障排除

以下是你在使用 GNOME Boxes 时可能遇到的一些常见错误或问题。

#### 1、虚拟机中的分辨率问题

如果你的虚拟机分辨率很低，这与你的主机系统不兼容，那么你必须安装以下项目。在客户系统（而不是主机系统）中打开终端并运行以下命令。

对于基于 Ubuntu 的发行版：

```
sudo apt install spice-vdagent spice-webdavd

```

对于 Fedora 系统：

```
sudo dnf install spice-vdagent spice-webdavd

```

这两个包有助于确定合适的分辨率、在主机和客户之间复制/粘贴、通过公共文件夹共享文件等。

安装后，重新启动客户系统；或者你可以在重启后注销并重新登录一次，你应该会看到正确的分辨率。

#### 2、在 Ubuntu 18.04 中 GNOME Boxes 不能启动虚拟机

如果你在 Boxes 3.34 中创建虚拟机，那么你应该知道有一个错误导致你的虚拟机无法启动。要解决这个问题，你必须执行一些额外的步骤。请记住，最新的 Boxes 3.36 不需要这些。

打开终端窗口并运行以下命令来更改 qemu 配置文件：

```
sudo gedit /etc/modprobe.d/qemu-system-x86.conf

```

在上面的文件中添加以下行并保存：

```
group=kvm

```

现在，运行以下命令将你的用户名添加到 KVM 组。

```
sudo usermod -a -G kvm <你的帐户名称>

```

### 总结

在本文中，你了解了如何安装和使用 GNOME Boxes 来利用虚拟化。我希望它能帮助你。

? 如果你遇到任何错误或对 GNOME Boxes 的虚拟机有任何疑问，请使用下面的评论栏告诉我。

*（题图：MJ/b4d091cf-9585-468b-9ce6-ba0b0c69cce4）*

---

via: <https://www.debugpoint.com/install-use-gnome-boxes/>

作者：[Arindam](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/) 荣誉推出


硬核观察 #1046 红帽认为 RHEL 克隆品是对开源公司的“真正威胁”

Summary:
? 红帽认为 RHEL 克隆品是对开源公司的“真正威胁”
? 微软考虑将 Windows 转移到云端
? 手机跟踪软件 LetMeSpy 称其被黑客窃取了大量信息
»
»

已将生产环境从centos/rocky 切换到了ubuntu

还是切换成openEuler好！

# 硬核观察 #1046 红帽认为 RHEL 克隆品是对开源公司的“真正威胁”

### 红帽认为 RHEL 克隆品是对开源公司的“真正威胁”

前两天，红帽 [宣布](/article-15933-1.html) 其企业发行版 RHEL 的源代码将只公开发布在 CentOS Stream 上，其直接后果是社区将无法直接获得 RHEL 的精确源代码。这显然给 1:1 复制 RHEL 的下游发行版，如 AlmaLinux、Rocky Linux 等造成了 [阻碍](/article-15936-1.html)。面对社区批评，红帽高管最近撰文反驳，指出对他们愤怒的人“要么来自于那些不愿为生产 RHEL 需要付出的时间、精力和资源付费的人，要么来自那些因为自己的利益而想要重新打包它的人”。他认为 AlmaLinux 等“下游重新构建者没有价值”，“简单地重新打包，并进行原样转售，没有增加任何的价值，还让开源软件的生产变得不可持续”，并且表示，他们“没有义务让重新构建者的工作更加容易”。更严重的是，他还指控这是一种对开源的“威胁”，“如果是仅仅重新构建代码，而不对现有代码增加价值或进行任何修改，对于所有开源公司来说，这才是真正的威胁。这对开源来说是一个真正的威胁，有可能将开源重新变回到只适用于业余爱好者和黑客的活动。”

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

>
> 老王点评：一方面受限于 GPL 而不得不公开源代码，另外一方面又千方百计提高获得源代码的麻烦程度，并反过来指责那些依据 GPL 而获得源代码的人是“威胁” —— 说实话，“威胁”这个词我记得当年微软也这样说过。曾经红帽砍掉 CentOS 项目，而用滚动变化的 CentOS Stream 替代时，我认为这对 RHEL 的发展是有益的，面对很多“误解”，也曾出面帮他们做过一些澄清。但是现在红帽终于图穷匕见，认为从 RHEL 源代码构建的“克隆品”是一个“威胁”。我想说，你利用开源代码构建的 RHEL，没有资格说同样根据许可证获得源代码构建发行版的人是“威胁”！另外，卫 Sir 今天的 [撰文](https://mp.weixin.qq.com/s/njYYeeSMAebJRp5kUkYxKA) 对此做了更深入的剖析，值得一看。
>
>
>

### 微软考虑将 Windows 转移到云端

在 FTC 诉微软收购动视暴雪听证会上，一份被公开的微软 2022 年 6 月的内部演示文稿中，微软讨论了在 Windows 365 的基础上实现从云端到任何设备的完整 Windows 操作系统串流。Windows 365 是一项将完整版本的 Windows 串流到设备的服务，目前仅提供给商业客户，但微软已经将其深度整合到 Windows 11 中。未来的更新将包括 Windows 365 Boot，它将使 Windows 11 设备在启动时直接登录到云 PC 实例，而不是本地版本的 Windows。

>
> **[消息来源：The Verge](https://www.theverge.com/2023/6/27/23775117/microsoft-windows-11-cloud-consumer-strategy)**
>
>
>

>
> 老王点评：如果 Windows 都变成云端的了，那么是不是 Linux 桌面就有希望变成“第二大”桌面系统了？ ?
>
>
>

### 手机跟踪软件 LetMeSpy 称其被黑客窃取了大量信息

LetMeSpy 是一款手机监控应用程序，被用于家长控制或员工监控。这类手机监控应用程序也被称为跟踪软件或配偶软件，通常在未经本人同意或不知情的情况下对某人的手机进行物理访问而植入。一旦被植入，LetMeSpy 就会默默地将手机的短信、通话记录和精确的位置数据上传到其服务器，让植入该应用程序的人能够实时跟踪该人。该公司称，一名黑客窃取了 LetMeSpy 从电子邮件、电话号码和账户上截获的信息。入侵的黑客表示已经夺取了该公司域名的广泛访问权，并暗示他们删除了 LetMeSpy 存储在服务器上的数据库。同一天晚些时候，一份被黑的数据库的副本也出现在网上。

>
> **[消息来源：Tech Crunch](https://techcrunch.com/2023/06/27/letmespy-hacked-spyware-thousands/)**
>
>
>

>
> 老王点评：这算不算黑吃黑？
>
>
>


哞~ 我的 Linux 终端里有头牛

这是真会整活啊:D

# 哞~ 我的 Linux 终端里有头牛

>
> cowsay 是一个有趣的小型 Linux 命令行实用程序，它有各种使用方式。以下是几个示例。
>
>
>

如果你想的话，Linux 终端可以是一个有趣的地方。

当然，终端一般用在严肃的场合，但你可以使用 [有趣的 Linux 命令](https://itsfoss.com/funny-linux-commands/) 来娱乐自己。

`cowsay` 就是其中之一。它可以在终端上显示一头牛。

`cowsay` 的一个特点是，如果与其他命令组合使用，它可以用于一些 “严肃的场合”。比如，在共享的 Linux 服务器上使用它来显示 “每日消息”，以供多个用户查看。

听起来有趣吗？是时候~~喂养~~安装一个了。

### 安装 Cowsay

`cowsay` 是一个受欢迎的工具，它可以在大多数 Linux 发行版的软件仓库中找到。

要在 Debian 和 Ubuntu 系统上安装 `cowsay`，请打开终端并运行：

```
sudo apt install cowsay

```

对于 Fedora，请使用：

```
sudo dnf install cowsay

```

在基于 Arch Linux 的发行版中，请使用：

```
sudo pacman -S cowsay

```

### 使用 Cowsay

顾名思义，这是一头以 ASCII 艺术展示的牛，能输出输入的文本。默认情况下，`cowsay` 提供了几个选项来调整这头 ASCII 牛的外观和样式。

#### 普通的 cowsay

```
cowsay <文本>

```

这将在牛讲话的气泡中打印你提供的任何文本。

或者，你可以使用管道重定向，将另一个命令（比如 `echo`）的输出作为 `cowsay` 的输入。

```
echo "Hello" | cowsay

```

#### 贪婪的牛

这里，牛的眼睛看起来有点贪婪，它是美元符号。

```
cowsay -g <消息>

```

#### 使用特殊字符作为眼睛

你可以使用 `-e` 选项，然后提供你希望作为眼睛的两个字符。默认是 `OO`。

```
cowsay -e hh Hello

```

在上面的截图中，两个 `h` 将出现在眼睛的位置。

>
> ? 如果你输入的字符已被任何默认选项使用，比如 `$$`，那么它将被覆盖。
>
>
>

#### 使用其他字符代替牛

`cowsay` 还提供了许多其他 ASCII 图像，你可以通过 `-f` 选项使用它们。

使用 `-l` 选项列出它们：

```
cowsay -l

```

现在，要打印上述图像之一，请使用：

```
cowsay -f <牛文件名称> <消息>

```

类似地，在更新的版本中，你可以使用 `-r` 选项随机打印上述图像之一。

```
cowsay -r Hello

```

#### 其他选项

| 选项 | 用途 |
| --- | --- |
| `-b` | 启用博格模式 |
| `-d` | 看起来死了的牛 |
| `-p` | 陷入偏执状态的牛 |
| `-s` | 看起来迷迷糊糊的牛 |
| `-t` | 一只疲倦的牛 |
| `-y` | 让牛年轻一些 |

### 使用 Cowthink

`cowthink` 是与 `cowsay` 一起提供的辅助程序。它显示的是思维泡泡而不是说话泡泡。如果你熟悉漫画书的标注，这将更有意义。

```
cowthink Hello

```

所有在 `cowsay` 中提到的选项在这里同样适用。

### 使用 Cowsay 和 Fortune

通过管道重定向，你可以将 `cowsay` 与另一个流行的有趣的 Linux 命令 `fortune` 结合使用。

>
> ? 在 Ubuntu 中可以使用 `sudo apt install fortune lolcat` 命令安装 `fortune` 和 `lolcat`。
>
>
>

对于那些不知道 `fortune` 是什么的人来说，它是一个小程序，在终端上打印名人名言。你可以像这样作为独立命令来运行它：

```
fortune

```

要使用 `cowsay` 打印 `fortune` 的内容，运行：

```
fortune | cowsay

```

你还可以添加 `cowsay` 的选项来使输出更好：

```
fortune | cowsay -f dragon

```

### 用 lolcat 把牛变成彩色的

许多人都熟悉 `lolcat` 给文本添加的彩虹效果。那么为什么不将其与上述程序一起使用呢？你只需要将 `cowsay` 命令连接到 `lolcat` 命令上即可。

```
cowsay Hello | lolcat

```

现在，如果你想同时添加 `fortune` 和各种 `cowsay` 选项，请使用所有这些选项，并将整个命令的输出都连接到 `lolcat`，就像这样：

```
fortune | cowsay -f tux | lolcat
fortune | cowthink -f tux | lolcat

```

### 第三方牛文件（适用于高级用户）

对默认的 `cowsay` 牛文件不感兴趣吗？别担心，有许多不同的牛文件可供选择，由热心的开发者创建。我在这里介绍两个：<https://github.com/bkendzior/cowfiles> 和 <https://github.com/paulkaefer/cowsay-files>。

你可以按照它们的 `README` 所述从这些存储库安装牛文件，或者只需从存储库中下载所需的牛文件（.cow）并将它们粘贴到 `/usr/share/cowsay/site-cows/` 下。现在，你可以通过文件名访问该牛文件：

```
cowsay -f <新文件名> Hello

```

在屏幕截图中，你可以看到我使用了一个下载下来的牛文件，名为 `C3PO.cow`。

对于那些想要创建自己的图像的人，可以访问 [Charc0al 的 cowsay 文件](https://charc0al.github.io/cowsay-files/converter/)。

在这里，你可以下载现有的文件，或者转换一些图像（建议不大于 50×50）以满足需求。

### 其他有趣的用法

#### 使用 cowsay 提示输入 sudo 命令的密码

```
sudo -p "$(cowsay '如果你知道密码，请在此输入。否则请离开：')" <command>

```

#### 将 cowsay 作为 bash 配置的一部分，以便在每次打开终端时看到欢迎

对于像 Fedora 中的较新版本的 `cowsay`，可以将 `fortune | cowsay -r | lolcat` 添加到你的 `~/.bashrc` 中。现在，每次打开终端时，都会打印一个带有不同名言的新牛文件。

对于没有随机选项（`-r`）的较旧版本的 `cowsay`，你可以手动获取不同的文件，并使用 `fortune | cowsay -f <要使用的特定牛文件的名称> | lolcat`。

#### 使用 cowsay 显示其他命令的输出

你可以让 `lsblk` 等命令使用 `cowsay` 打印输出。只需将这些命令连接起来。

```
lsblk | cowsay

```

#### 在 Fedora 中使用 cowsay-beefymiracle

`beefymiracle` 是 Fedora 中提供的一个 cowsay 包。这里的牛变成了牛肉（我这颗素食主义者的心在哭泣 ?）。

使用下面的命令来安装它：

```
sudo dnf install cowsay-beefymiracle

```

现在，运行：

```
cowsay -f beefymiracle <消息>

```

### 更多：XCowsay

`xcowsay` 是普通的 cowsay 的图形替代品。这里，牛不再是 ASCII 图形，而是一个真实的图像。你可以通过以下方式进行安装：

```
sudo apt install xcowsay

```

现在运行：

```
xcowsay <消息>

```

这将根据文本的长度，在一段特定的时间内显示图形化的牛，然后消失，**但你可以点击它立即隐藏。**

更有趣的是，牛可以“梦见”图像而不是文本。甚至牛的图像可以更改为随机图像。

使用以下命令之一：

```
xcowsay --dream=file

```

或者

```
xcowsay --image=file --dream=file

```

你可以查看 `xcowsay` 的手册页面以了解更多选项。

### 更多终端中的 ASCII 乐趣

喜欢 ASCII 艺术吗？可以尝试用 [Neofetch](https://itsfoss.com/using-neofetch/) 以 ASCII 格式显示你所使用的发行版的徽标。

为什么只限于徽标呢？Linux 终端上还有很多 ASCII 工具。

不要停止在终端中寻找乐趣。

希望你喜欢这篇关于以各种格式使用 `cowsay` 的教程。惊人的是，这个小工具提供了如此多的选项，有这么多的使用方式。

你最喜欢哪个 cowsay 的例子？不要说牛肉的那个 ?

*（题图：MJ/bd304f28-2476-4496-93d2-50fdae0a8831）*

---

via: <https://itsfoss.com/cowsay/>

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

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


Linux 版 WhatsApp

# Linux 版 WhatsApp

>
> 一款出色的 Flatpak 应用，可从 Linux 桌面访问 WhatsApp。
>
>
>

WhatsApp 是流行的手机通讯平台，在许多国家都很受欢迎。用户通常通过 Play 商店或 App Store 中的移动应用访问它。然而，WhatsApp 从未推出任何适用于 Linux 的官方桌面客户端。

尽管你可以使用浏览器访问 WhatsApp，这是从任何桌面（包括 Linux）访问消息的官方方式。

一个新的非官方 WhatsApp Flatpak 桌面应用出现了，你可以无缝地使用它进行通信。

那么，这个 GTK 应用有哪些功能？

### “Linux 版 WhatsApp” 的功能

借助这款新的桌面应用，Linux 桌面用户可以在他们最喜欢的桌面环境中享受 WhatsApp 的所有熟悉功能。现在，你可以在 Linux 发行版上轻松访问所有功能，例如发送消息、共享媒体文件以及进行语音和视频通话。

“Linux 版 WhatsApp” 应用还提供键盘快捷键，确保应用内的无缝导航和交互。使用此应用，你可以放大和缩小以仔细查看图像和文本，或切换到全屏模式以获得无干扰的聊天体验。该应用还包括一个系统托盘图标，即使在应用最小化时也可以快速访问和通知。

此外，你可以自定义应用以满足你的喜好。通过按 `Alt+H`，你可以轻松显示或隐藏标题栏，从而更好地控制工作区。该应用还支持系统语言的本地化，确保你可以轻松地与世界各地的朋友和家人进行交流。

Linux 版 WhatsApp 应用的一项值得注意的功能是支持系统语言的拼写检查。要启用此功能，你必须安装相应的词典，例如美国英语的 hunspell-en\_us 包。

### 技术细节

如果你想知道，它不是一个 Electron 应用。它是使用原生 C++ 编写的，确保了最佳的性能和安全性。它依赖于各种免费和开源库，例如 intltool、gtkmm-3.0、webkit2gtk-4.0、ayatana-appindicator3-0.1、libcanberra 以及用于拼写检查的 libhunspell（可选）。

你可以从 [GitHub 上的源码](https://github.com/eneshecan/whatsapp-for-linux)了解有关此应用的更多信息。

### 安装

首先，你必须为你的 Linux 发行版设置 Flatpak 和 Flathub。使用 [本指南](https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/) 来设置。

安装后，运行以下命令进行安装。

```
flatpak install com.github.eneshecan.WhatsAppForLinux

```

你可以在应用列表中找到该应用。

### 运行应用

打开应用后，设置与 WhatsApp 网页类似。打开手机的 WhatsApp 应用并扫描应用中的二维码。这样就完成了。

请注意，这是一个非官方的应用。因此，请谨慎使用。你还可以查看 GitHub 以获取有关此应用的更多详细信息。

*（题图：MJ/de9d18fe-fb3f-4d88-8723-761ebbee5f38）*

---

via: <https://www.debugpoint.com/whatsapp-for-linux/>

作者：[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/) 荣誉推出


硬核观察 #1047 ReactOS 项目冒泡表示还活着

Summary:
? ReactOS 项目冒泡表示还活着
? WhatsApp 关闭了基于 Electron 的桌面应用
? GitHub DDoS 攻击了一个重要的开源项目小网站
»
»

# 硬核观察 #1047 ReactOS 项目冒泡表示还活着

### ReactOS 项目冒泡表示还活着

ReactOS 是一个开源的操作系统，旨在复制微软的 Windows，可以不加修改地运行许多 Windows 应用程序。ReactOS 的上一次更新是在 2021 年 12 月。此前它的发布计划是每三个月释出一个新版本，但自从 0.4.14 之后就再无动静。面对用户的疑问，该项目发文称其还活着，只是之后的版本发布会根据质量而不是数量。新的发布规则是“一个新版本要达到 `发布’ 状态，需要有合理的低回归量（不超过 20个）”。但他们并没有给出下一个版本预计发布的时间，不过你可以随时尝试其每夜构建版本。

>
> **[消息来源：ReactOS](https://reactos.org/blogs/newsletter-102/)**
>
>
>

>
> 老王点评：其实，没事发个新版本表示活着，至少是给社区一些信心的做法。
>
>
>

### WhatsApp 关闭了基于 Electron 的桌面应用

当 WhatsApp 处于早期开发阶段时，开发者创建了一个基于 Electron JavaScript 框架的桌面应用程序，它在 Windows 和 macOS 上都能使用。大约四周前，这个桌面应用程序的主屏幕上出现了一个倒计时器，宣布其即将关闭。WhatsApp 让用户切换到其原生应用程序上，新的原生应用程序已经稳定运行了一年左右。

>
> **[消息来源：Android Police](https://www.androidpolice.com/whatsapp-desktop-electron-dead/)**
>
>
>

>
> 老王点评：有了原生应用，谁还用 Electron 的呀。
>
>
>

### GitHub DDoS 攻击了一个重要的开源项目小网站

一个 GCC 核心的开源算术库 GMP 项目所使用的服务器遭受到了大量的来自 GitHub 的 IP 的连接。无奈之下，该项目只能封禁了数百个微软的 IP 地址。微软发现这是一个被复刻了 700 多次的存储库上的 Actions 工作流导致的。一位 GitHub 用户更新了 FFmpeg-Builds 项目中的一个脚本，该脚本从 [gmplib.org](http://gmplib.org/) 提取内容。这种活动应该不是恶意的，但 GMP 有限的基础设施无法应对这个量级的并发请求。这并不是第一次有软件项目因为繁重的流量需求而喊出被 DDoS。

>
> **[消息来源：The Register](https://www.theregister.com/2023/06/28/microsofts_github_gmp_project/)**
>
>
>

>
> 老王点评：这个事情里面没有主动的恶意行为者，但是 GitHub 这么大体量，稍有不慎对其它微小的基础设施都是毁灭性打击，所以，微软应该对其基础设施和应用更加慎重一些。
>
>
>


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

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

太硬核了

这么长文不容易，感谢。

相当流畅的网站呀！

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

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

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

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

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

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

来看一下这个 ?

**看起来像一个 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 进行“加料”定制的基础**。

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

>
> ? 为了节省你的时间，我已经在 [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：

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

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

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

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

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

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

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

让我们从基础知识开始。

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

结果是这样的：

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

| 按键绑定 | 描述 |
| --- | --- |
| `Mod + Enter` | 打开终端。 |
| `Mod + ←` | 切换到左侧窗口。 |
| `Mod + →` | 切换到右侧窗口。 |
| `Mod + ↑` | 切换到上方窗口。 |
| `Mod + ↓` | 切换到下方窗口。 |
| `Mod + Shift + ←` | 将窗口移动到左侧。 |
| `Mod + Shift + →` | 将窗口移动到右侧。 |
| `Mod + Shift + ↑` | 将窗口移动到上方。 |
| `Mod + Shift + ↓` | 将窗口移动到下方。 |
| `Mod + f` | 将焦点窗口切换到全屏模式。 |
| `Mod + v` | 下一个窗口将垂直放置。 |
| `Mod + h` | 下一个窗口将水平放置。 |
| `Mod + s` | 启用堆叠式窗口布局。 |
| `Mod + w` | 启用选项卡式窗口布局。 |
| `Mod + Shift + Space` | 启用浮动窗口（针对焦点窗口）。 |
| `Mod + 鼠标左键单击` | 使用鼠标拖动整个窗口。 |
| `Mod + 0-9` | 切换到另一个工作区。 |
| `Mod + Shift + 0-9` | 将窗口移动到另一个工作区。 |
| `Mod + d` | 打开应用程序启动器（D 菜单）。 |
| `Mod + Shift + q` | 关闭焦点窗口。 |
| `Mod + Shift + c` | 重新加载 i3 配置文件。 |
| `Mod + Shift + r` | 重启 i3 窗口管理器。 |
| `Mod + Shift + e` | 退出 i3 窗口管理器。 |

我知道按键绑定很多，但如果你每天练习它们，你很快就会习惯。

如果你想知道，你可以根据需要更改按键绑定，后面的指南中我会分享如何做到这一点。

现在，让我们来看看配置部分。

### 在 Arch Linux 中启用 AUR

如果你刚刚安装了 Arch Linux，可能还没有启用 AUR。

这意味着你错过了 Arch Linux 最重要的特性。

要 [启用 AUR](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'

```

在我的情况下，显示名称是 `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 [分辨率]

```

结果应该是这样的：

完成后，[保存更改并退出 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` 目录中，所以我的命令如下：

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

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

我的效果如下：

### 自定义 i3 锁屏界面

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

```
i3lock

```

锁屏界面如下所示：

下面，我将向你展示：

* 如何创建自定义快捷方式以锁定 i3 会话
* 如何更改锁屏界面的壁纸

为了使锁屏界面更加美观，你需要使用 `i3lock-color` 包。

但首先，你需要移除现有的 `i3lock`，因为它会与 `i3lock-color` 冲突：

在 Arch Linux 上移除它：

```
sudo pacman -R i3lock

```

对于 Ubuntu/Debian 用户：

```
sudo apt remove i3lock

```

完成后，你可以使用 AUR 包管理器安装 `i3lock-color`：

```
yay i3lock-color

```

如果你使用的是基于 Ubuntu 的系统，你需要从头编译它。你可以在他们的 GitHub 页面上找到 [详细的说明](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` 作为锁定屏幕的快捷键，你可以选择任何你喜欢的快捷键。

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

相当不错，不是吗？

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

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

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

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

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

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

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

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

对于基于 Arch 的发行版：

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

```

对于 Ubuntu/Debian 系统：

```
sudo apt install fonts-font-awesome

```

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

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

```

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

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

我将把第一个工作区命名为 “programs”，因为**在本教程的后面部分，我将展示如何将特定的应用程序分配到特定的工作区。**

我主要使用前 5 个工作区，所以我会相应地命名它们：

```
# 定义默认工作区的名称，稍后我们将在其中配置键绑定。
# 我们使用变量来避免在多个地方重复使用名称。
set $ws1 "1: Terminal"
set $ws2 "2: Firefox"
set $ws3 "3: VMWare"
set $ws4 "4: Spotify"
set $ws5 "5: Shutter"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"

```

现在让我们为配置文件中提到的每个应用程序添加图标。

你可以 [参考 awesome 字体的备忘单](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，然后再次登录以应用你刚刚所做的更改。

我的效果如下图所示：

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

### 在 i3 中更改标题窗口和状态栏的字体

首先，让我们安装新的字体（我将在这里使用 Ubuntu 字体）。

要在 Arch 上安装 Ubuntu 字体，请执行以下操作：

```
sudo pacman -S ttf-ubuntu-font-family

```

如果你使用的是 Ubuntu，你已经安装了这些字体！

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

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

```

在配置文件中，找到 `font pango:monospace 8` 这一行，这是默认字体。

找到那行后，添加字体名称和大小，如下所示：

```
font pango:Ubuntu Regular 14

```

然后，使用 `Mod + Shift + r` 重新启动窗口管理器，这样就完成了工作：

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

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

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

那么要如何实现呢？

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

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

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

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

```
xprop

```

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

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

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

```

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

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

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

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

```

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

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

```

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

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

### 在 i3 窗口管理器中让终端变透明

要启用透明效果，你需要安装 `picom` 合成器并对配置文件进行一些更改。

让我们从安装开始。

对于基于 Arch 的发行版：

```
sudo pacman -S picom

```

对于基于 Ubuntu/Debian 的发行版：

```
sudo apt install picom

```

安装完成后，你需要告诉系统使用 `picom`。

首先打开配置文件：

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

```

在配置文件的末尾插入以下行：

```
# 使用 picom 合成器实现透明效果
exec_always picom -f

```

这里，我使用 `-f` 标志来在切换工作区、打开新应用程序等时启用淡入淡出效果。

保存并退出文本编辑器。

现在，使用 `Mod + Shift + r` 重新启动 i3。

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

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

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

```

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

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

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

首先，打开 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 窗口管理器中改变颜色方案

更改 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 窗口管理器中状态栏的颜色方案

在本节中，你将意识到为什么我使用变量来存储颜色，因为我将使用相同的变量来为我的状态栏上色！

要在状态栏中使用颜色，你需要在 i3 配置文件的 `bar {...}` 部分进行更改。

首先，打开配置文件：

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

```

在配置文件中查找 `bar {...}` 部分。

找到该部分后，创建一个颜色部分，并为状态栏定义颜色和类别，与你为窗口所做的相同：

```
bar {
        status_command i3status -c /home/$USER/.config/i3status/i3status.conf
        colors {
                background $bgcolor
                separator #191919
                #                       border          background      text
                focused_workspace       $bgcolor        $bgcolor        $text
                inactive_workspace      $in-bgcolor     $in-bgcolor     $text
                urgent_workspace        $u-bgcolor      $u-bgcolor      $text

        }
}

```

在这里，我使用了 `focused_workspace`、`inactive_workspace` 和 `urgent_workspace` 这三个类别，根据需要定义了相应的颜色。

保存更改后，重新启动 i3，状态栏也会显示颜色。

### 设置 i3 状态栏的透明度

本节将向你展示如何使 i3 状态栏透明。

在此之前，让我们先更改 i3 状态栏的字体。

这里，我将使用 Droid 字体，使其看起来干净而带有一种极客风格。

要在 Arch Linux 上安装 Droid 字体，请使用以下命令：

```
sudo pacman -S ttf-droid

```

对于 Ubuntu/Debian 系统，请使用以下命令：

```
sudo apt install fonts-droid-fallback

```

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

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

```

进入 `bar {...}` 部分，并按下面的示例输入字体名称和大小：

```
font pango: Droid Sans Mono 11

```

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

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

如果你想要控制透明度，我建议你查看 [此指南，其中提供了从 0 到 100% 透明度的代码范围](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，你将得到透明的窗口和状态栏：

### 在窗口管理器中使用 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 配置文件的路径，如下所示：

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

不要担心，你将很快使状态栏比以前的 i3bar 更有价值和好看。

#### 添加磁盘块

如果你想要显示磁盘剩余空间，可以添加此块。

在这里，我将使用 `nano` 创建并打开用于磁盘块的配置文件。

```
nano ~/.config/scripts/disk

```

然后粘贴以下行：

```
#!/usr/bin/env sh
DIR="${DIR:-$BLOCK_INSTANCE}"
DIR="${DIR:-$HOME}"
ALERT_LOW="${ALERT_LOW:-$1}"
ALERT_LOW="${ALERT_LOW:-10}" # color will turn red under this value (default: 10%)

LOCAL_FLAG="-l"
if [ "$1" = "-n" ] || [ "$2" = "-n" ]; then
    LOCAL_FLAG=""
fi

df -h -P $LOCAL_FLAG "$DIR" | awk -v label="$LABEL" -v alert_low=$ALERT_LOW '
/\/.*/ {
	# full text
	print label $4
	# short text
	print label $4
	use=$5
	# no need to continue parsing
	exit 0
}
END {
	gsub(/%$/,"",use)
	if (100 - use < alert_low) {
		# color
		print "#FF0000"
	}
}
'

```

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

现在，将此文件设置为可执行：

```
sudo chmod +x ~/.config/scripts/disk

```

接下来，打开 I3blocks 配置文件：

```
nano ~/.config/i3blocks/i3blocks.conf

```

根据你想要放置磁盘块的位置，粘贴以下行：

```
[disk]
command=/home/$USER/.config/scripts/disk
LABEL=
#DIR=$HOME
#ALERT_LOW=10
interval=30

```

完成后，保存更改并使用 `Mod + Shift + r` 重新启动 i3，状态栏中将显示带有磁盘图标的可用磁盘空间。

#### 添加内存块

这将是状态栏中指示系统中已使用内存的块。

首先，创建并打开一个新文件用于新的块：

```
nano ~/.config/scripts/memory

```

然后在新文件中粘贴以下行：

```
#!/usr/bin/env sh
TYPE="${BLOCK_INSTANCE:-mem}"
PERCENT="${PERCENT:-true}"

awk -v type=$TYPE -v percent=$PERCENT '
/^MemTotal:/ {
	mem_total=$2
}
/^MemFree:/ {
	mem_free=$2
}
/^Buffers:/ {
	mem_free+=$2
}
/^Cached:/ {
	mem_free+=$2
}
/^SwapTotal:/ {
	swap_total=$2
}
/^SwapFree:/ {
	swap_free=$2
}
END {
	if (type == "swap") {
		free=swap_free/1024/1024
		used=(swap_total-swap_free)/1024/1024
		total=swap_total/1024/1024
	} else {
		free=mem_free/1024/1024
		used=(mem_total-mem_free)/1024/1024
		total=mem_total/1024/1024
	}
	pct=0
	if (total > 0) {
		pct=used/total*100
	}
	# full text
	if (percent == "true" ) {
		printf("%.1fG/%.1fG (%.f%%)\n", used, total, pct)
	} else {
		printf("%.1fG/%.1fG\n", used, total)
	}
	# short text
	printf("%.f%%\n", pct)
	# color
	if (pct > 90) {
		print("#FF0000")
	} else if (pct > 80) {
		print("#FFAE00")
	} else if (pct > 70) {
		print("#FFF600")
	}
}
' /proc/meminfo

```

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

现在，要使其生效，你需要使用以下命令将此文件设置为可执行：

```
sudo chmod +x ~/.config/scripts/memory

```

接下来，打开 i3blocks 配置文件：

```
nano ~/.config/i3blocks/i3blocks.conf

```

并将以下内容粘贴到你希望在状态栏中显示内存使用情况的位置：

```
[memory]
command=/home/$USER/.config/scripts/memory
label=
interval=30

```

保存更改并从文本编辑器中退出。重新启动 i3 以使更改生效！

#### 添加更新指示块

这是最有帮助的指示器，它显示需要更新的旧软件包数量。

首先，使用以下命令安装依赖项以使其正常工作：

```
sudo pacman -S pacman-contrib

```

现在，创建一个新文件来存储脚本：

```
nano ~/.config/scripts/arch-update

```

然后粘贴以下内容：

```
#!/usr/bin/env python3
import subprocess
from subprocess import check_output
import argparse
import os
import re

def create_argparse():
    def _default(name, default='', arg_type=str):
        val = default
        if name in os.environ:
            val = os.environ[name]
        return arg_type(val)

    strbool = lambda s: s.lower() in ['t', 'true', '1']
    strlist = lambda s: s.split()

    parser = argparse.ArgumentParser(description='Check for pacman updates')
    parser.add_argument(
        '-b',
        '--base_color',
        default = _default('BASE_COLOR', 'green'),
        help='base color of the output(default=green)'
    )
    parser.add_argument(
        '-u',
        '--updates_available_color',
        default = _default('UPDATE_COLOR', 'yellow'),
        help='color of the output, when updates are available(default=yellow)'
    )
    parser.add_argument(
        '-a',
        '--aur',
        action = 'store_const',
        const = True,
        default = _default('AUR', 'False', strbool),
        help='Include AUR packages. Attn: Yaourt must be installed'
    )
    parser.add_argument(
        '-y',
        '--aur_yay',
        action = 'store_const',
        const = True,
        default = _default('AUR_YAY', 'False', strbool),
        help='Include AUR packages. Attn: Yay must be installed'
    )
    parser.add_argument(
        '-q',
        '--quiet',
        action = 'store_const',
        const = True,
        default = _default('QUIET', 'False', strbool),
        help = 'Do not produce output when system is up to date'
    )
    parser.add_argument(
        '-w',
        '--watch',
        nargs='*',
        default = _default('WATCH', arg_type=strlist),
        help='Explicitly watch for specified packages. '
        'Listed elements are treated as regular expressions for matching.'
    )
    return parser.parse_args()

def get_updates():
    output = ''
    try:
        output = check_output(['checkupdates']).decode('utf-8')
    except subprocess.CalledProcessError as exc:
        # checkupdates exits with 2 and no output if no updates are available.
        # we ignore this case and go on
        if not (exc.returncode == 2 and not exc.output):
            raise exc
    if not output:
        return []

    updates = [line.split(' ')[0]
               for line in output.split('\n')
               if line]

    return updates

def get_aur_yaourt_updates():
    output = ''
    try:
        output = check_output(['yaourt', '-Qua']).decode('utf-8')
    except subprocess.CalledProcessError as exc:
        # yaourt exits with 1 and no output if no updates are available.
        # we ignore this case and go on
        if not (exc.returncode == 1 and not exc.output):
            raise exc
    if not output:
        return []

    aur_updates = [line.split(' ')[0]
                   for line in output.split('\n')
                   if line.startswith('aur/')]

    return aur_updates

def get_aur_yay_updates():
    output = check_output(['yay', '-Qua']).decode('utf-8')
    if not output:
        return []

    aur_updates = [line.split(' ')[0] for line in output.split('\n') if line]

    return aur_updates

def matching_updates(updates, watch_list):
    matches = set()
    for u in updates:
        for w in watch_list:
            if re.match(w, u):
                matches.add(u)

    return matches

label = os.environ.get("LABEL","")
message = "{0}<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。

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

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

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

### 在 Linux 中使用 i3gaps

如果你想在窗口之间添加间隙，可以使用 `i3gaps`。在颜色方案之后，`i3gaps` 是这个指南中最关键的元素。

要使用间隙，你必须对 i3 配置文件进行一些更改。

打开 i3 配置文件：

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

```

转到文件的末尾，并粘贴以下内容：

```
# default gaps
gaps inner 15
gaps outer 5

# gaps
set $mode_gaps Gaps: (o)uter, (i)nner, (h)orizontal, (v)ertical, (t)op, (r)ight, (b)ottom, (l)eft
set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_horiz Horizontal Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_verti Vertical Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_top Top Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_right Right Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_bottom Bottom Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_left Left Gaps: +|-|0 (local), Shift + +|-|0 (global)
bindsym $mod+Shift+g mode "$mode_gaps"

mode "$mode_gaps" {
        bindsym o      mode "$mode_gaps_outer"
        bindsym i      mode "$mode_gaps_inner"
        bindsym h      mode "$mode_gaps_horiz"
        bindsym v      mode "$mode_gaps_verti"
        bindsym t      mode "$mode_gaps_top"
        bindsym r      mode "$mode_gaps_right"
        bindsym b      mode "$mode_gaps_bottom"
        bindsym l      mode "$mode_gaps_left"
        bindsym Return mode "$mode_gaps"
        bindsym Escape mode "default"
}

mode "$mode_gaps_outer" {
        bindsym plus  gaps outer current plus 5
        bindsym minus gaps outer current minus 5
        bindsym 0     gaps outer current set 0

        bindsym Shift+plus  gaps outer all plus 5
        bindsym Shift+minus gaps outer all minus 5
        bindsym Shift+0     gaps outer all set 0

        bindsym Return mode "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_inner" {
        bindsym plus  gaps inner current plus 5
        bindsym minus gaps inner current minus 5
        bindsym 0     gaps inner current set 0

        bindsym Shift+plus  gaps inner all plus 5
        bindsym Shift+minus gaps inner all minus 5
        bindsym Shift+0     gaps inner all set 0

        bindsym Return mode "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_horiz" {
        bindsym plus  gaps horizontal current plus 5
        bindsym minus gaps horizontal current minus 5
        bindsym 0     gaps horizontal current set 0

        bindsym Shift+plus  gaps horizontal all plus 5
        bindsym Shift+minus gaps horizontal all minus 5
        bindsym Shift+0     gaps horizontal all set 0

        bindsym Return mode "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_verti" {
        bindsym plus  gaps vertical current plus 5
        bindsym minus gaps vertical current minus 5
        bindsym 0     gaps vertical current set 0

        bindsym Shift+plus  gaps vertical all plus 5
        bindsym Shift+minus gaps vertical all minus 5
        bindsym Shift+0     gaps vertical all set 0

        bindsym Return mode "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_top" {
        bindsym plus  gaps top current plus 5
        bindsym minus gaps top current minus 5
        bindsym 0     gaps top current set 0

        bindsym Shift+plus  gaps top all plus 5
        bindsym Shift+minus gaps top all minus 5
        bindsym Shift+0     gaps top all set 0

        bindsym Return mode "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_right" {
        bindsym plus  gaps right current plus 5
        bindsym minus gaps right current minus 5
        bindsym 0     gaps right current set 0

        bindsym Shift+plus  gaps right all plus 5
        bindsym Shift+minus gaps right all minus 5
        bindsym Shift+0     gaps right all set 0

        bindsym Return mode "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_bottom" {
        bindsym plus  gaps bottom current plus 5
        bindsym minus gaps bottom current minus 5
        bindsym 0     gaps bottom current set 0

        bindsym Shift+plus  gaps bottom all plus 5
        bindsym Shift+minus gaps bottom all minus 5
        bindsym Shift+0     gaps bottom all set 0

        bindsym Return mode "$mode_gaps"
        bindsym Escape mode "default"
}
mode "$mode_gaps_left" {
        bindsym plus  gaps left current plus 5
        bindsym minus gaps left current minus 5
        bindsym 0     gaps left current set 0

        bindsym Shift+plus  gaps left all plus 5
        bindsym Shift+minus gaps left all minus 5
        bindsym Shift+0     gaps left all set 0

        bindsym Return mode "$mode_gaps"
        bindsym Escape mode "default"
}

```

保存更改并退出配置文件。

使用 `Mod + Shift + r` 重新加载 i3，并会看到窗口之间的间隙：

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

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

就是这样！

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

不用担心；你可以 [切换到 Zsh](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之流，红帽大概率会变成另一个微软。。。

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

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

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

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

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

### 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 下游发行版依然存在，红帽却显得吃相难看。
>
>
>

### 微软公开预览 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相差无几了。。。

# 真正轻量级的 Linux 记事本

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

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

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

#### 1、Mousepad

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

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

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

下面是其外观示例：

由于 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）、文本缩放、打印和自动保存等功能。

安装 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 记事本应用程序的完美替代品。它具有所有基本功能，包括自动换行、行号、字体选择和自动缩进。

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

但是，在 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 美术作品。

这是一个有些老旧的应用程序，但它仍然正常工作。目前，它仅适用于 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/) 将其从简单的编辑器扩展为更高级的编辑器。

要安装它，请使用以下命令（针对 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 系统上轻量级记事本的替代品。

如果你使用的是 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包里就有

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

>
> 以下是如何将用户添加到 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.

```

本文旨在提供有关在 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 组的成员，你将看到他们拥有的权限列表。这是一个示例，你可以看到我的用户名具有所有访问权限。

### 结束语

将用户添加到 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
? 谷歌决定不支付加拿大的“链接税”
»
»

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

### 中国用人工智能在 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 可以这么快就完成了芯片设计，而且走了一条不同的设计道路。更好的是，这是国内的团队完成的研究。
>
>
>

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

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

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

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

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

加拿大通过了《在线新闻法》，要求谷歌和 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不够完善，支持硬件偏少，生态也还不繁盛

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

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

<img src="content_image/album_202307_02_172030v8jt2jwobtq2ojjv.png" alt="红帽关闭源代码" title="红帽关闭源代码">

基于我对 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/) 荣誉推出


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

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

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

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

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

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

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

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

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

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

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

### 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 没有激情了。或许，抛下沉重的历史包袱的办法就是破而后立。
>
>
>

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

美国劳工统计局的新数据发现，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 的安装体验一直未曾改变。

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

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

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

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

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

### Anaconda WebUI：概述 ⭐

**目前 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 是一个有用的开源工具，具有许多可提高你的工作效率的功能。
>
>
>

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

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

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

### Clipboard：概述 ⭐

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

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

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

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

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

```
cb copy 'filename'

```

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

```
cb paste

```

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

```
cb show

```

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

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

```
cb hs

```

这个剪贴板应该会 **吸引那些更喜欢使用基于终端的应用** 而不是基于 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/) 荣誉推出


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

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

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

### 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 包格式的共同作者之一，他推出这样的脚本。
>
>
>

### 红帽为 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 上。
>
>
>

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

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

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

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