分类 技术 下的文章

GIMP GNU 图像处理程序 GNU Image Manipulation Program )是一个一流的开源自由的图像处理程序。加州大学伯克利分校的 Peter Mattis 和 Spencer Kimball 早在 1995 年的时候开始了该程序的开发。到了 1997 年,该程序成为了 GNU 项目 官方组成部分,并正式更名为 GIMP。时至今日,GIMP 已经成为了最好的图像编辑器之一,并有经常有 “GIMP vs Photoshop” 之争。

GIMP 不仅仅有 Linux 版本,在 Windows 和 macOS 平台上,也一直有大量专业用户。它被很多人认为是 Photoshop 的最佳替代品之一。不过,由于 GIMP 采用了和 PhotoShop 不同的用户界面和交互逻辑,因此那些从 Photoshop 迁移过来的用户需要一段时间的适应。

Photo GIMP 补丁

现在,有人开发了一个新的补丁,可以将你的 GIMP “打扮” 得像 Photoshop 一样。这个补丁就是 PhotoGIMP,它所做的就是调整 GIMP,使其模仿 Photoshop 的界面,同时还增加了一堆额外的功能。

该补丁是针对 GIMP 2.10 的,主要提供的特性有:

  • 对工具箱进行组织,以模仿 Adobe Photoshop
  • 默认安装数百种新字体
  • 默认安装新的 Python 滤镜,如 heal selection
  • 新的启动闪屏
  • 新的默认设置,以最大化画布空间
  • 按照 Adobe 文档为 Photoshop 上的相似功能设置快捷键
  • 自定义的 .desktop 文件添加了新的图标和名称
  • 新的默认语言是英语(如果你想的话,仍然可以在设置中更改)

安装该补丁后,GIMP 的外观看起来如下:

如何安装

这里是以 flatpak 做示例介绍的,但这个补丁其实“只是文件”而已,所以,你可以在以任何打包方式安装的 GIMP 上使用(.deb、.rpm、Snap、AppImage、Windows、macOS),只需检查每个系统/包中 GIMP 文件的本地化。

准备 Flatpak 环境

首先,你需要使用 Flatpak 在系统上安装最新的 GIMP。

通过 AppCenter/Package Manager 或终端安装 GIMP Flatpak:

flatpak install flathub org.gimp.GIMP

安装此补丁

发布页面的 .zip 文件中,你会发现三个隐藏的文件夹(在 Linux 上,使用名字前的 . 来隐藏文件)。所有这些文件夹都必须解压到你的 /home/$USER 文件夹中,如果你在之前的安装中已经有了相同的文件,那么就会覆盖所有内容。

该文件有以下目录。

  • .icons(这里有一个新的 PhotoGIMP 图标)
  • .local(其中包含个性化的 .desktop 文件)
  • .var (其中包含 GIMP 2.10+ 的 flatpak 补丁定制)

如果你只是想要自定义 PhotoGIMP,而不改变原来的 GIMP 图标和名称,只需解压 .var 文件夹到你的主目录。

想在 Windows、macOS 或 Ubuntu(Snap)上使用?

由于这个补丁只是文件,你唯一需要做的就是将软件仓库中的 /.var/app/org.gimp.GIMP/config/GIMP/2.10 中的所有文件复制到每个特定系统的 GIMP 文件夹中,覆盖现有的文件。

  • Windows:C:/Users/YOUR_USER/AppData/Roaming/GIMP/2.10
  • macOS:/Users/Library/Application Support/GIMP/2.10/
  • Ubuntu(Snap):/home/$USER/snap/gimp/47/.config/GIMP/2.10/
  • 常规 Linux 安装(.deb、.rpm):/home/$USER/.config/GIMP/2.10/

GIMP 在 macOS 上的发布时间有点延迟,这样一来,这个补丁仍然可以工作,特别是在快捷键方面,但有些东西,比如工具箱的组织,至少要等到 macOS 版本达到 2.10.20 版本。

新的图标只有通过 Linux 环境下的补丁提取才能使用,但你可以在你的系统上手动设置它。

总结

好了,你是不是从 PhotoShop 转移过来的 GIMP 用户,你有没有试过这个补丁?你觉得这个补丁有用吗?欢迎留言。

Go 编译器的 SSA 后端包含一种工具,可以生成编译阶段的 HTML 调试输出。这篇文章介绍了如何为函数方法打印 SSA 输出。

让我们从一个包含函数、值方法和指针方法的示例程序开始:

package main

import (
    "fmt"
)

type Numbers struct {
    vals []int
}

func (n *Numbers) Add(v int) {
    n.vals = append(n.vals, v)
}

func (n Numbers) Average() float64 {
    sum := 0.0
    for _, num := range n.vals {
        sum += float64(num)
    }
    return sum / float64(len(n.vals))
}


func main() {
    var numbers Numbers
    numbers.Add(200)
    numbers.Add(43)
    numbers.Add(-6)
    fmt.Println(numbers.Average())
}

通过 GOSSAFUNC 环境变量控制 SSA 调试输出。此变量含有要转储的函数的名称。这不是函数的完全限定名。对于上面的 func main,函数名称为 main 而不是 main.main

% env GOSSAFUNC=main go build
runtime
dumped SSA to ../../go/src/runtime/ssa.html
t
dumped SSA to ./ssa.html

在这个例子中,GOSSAFUNC=main 同时匹配了 main.main 和一个名为 runtime.main 的函数。 [1] 这有点不走运,但是实际上可能没什么大不了的,因为如果你要对代码进行性能调整,它就不会出现在 func main 中的巨大的意大利面块中。

你的代码更有可能在方法中,你可能已经看到这篇文章,并寻找能够转储方法的 SSA 输出。

要为指针方法 func (n *Numbers) Add 打印 SSA 调试,等效函数名为 (*Numbers).Add [2]

% env "GOSSAFUNC=(*Numbers).Add" go build
t
dumped SSA to ./ssa.html

要为值方法 func (n Numbers) Average 打印 SSA 调试,等效函数名为 (*Numbers).Average即使这是一个值方法

% env "GOSSAFUNC=(*Numbers).Average" go build
t
dumped SSA to ./ssa.html

  1. 如果你没有从源码构建 Go,那么 runtime 软件包的路径可能是只读的,并且可能会收到错误消息。请不要使用 sudo 来解决此问题。 ↩︎
  2. 请注意 shell 引用 ↩︎

via: https://dave.cheney.net/2020/06/19/how-to-dump-the-gossafunc-graph-for-a-method

作者:Dave Cheney 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

用这些简化了 WebSockets 的开源支持工具来控制你的流媒体。

OBS 是现在视频直播的主流之一。它是直播流媒体到 Twitch 的首选软件,Twitch 是近来最受欢迎的视频直播网站之一。有一些非常好的附加组件,可以让流媒体人从他们的手机或另一个屏幕上进行控制,而不影响正在运行的视频。事实证明,使用 Node-REDobs-websockets 插件来构建自己的控制面板真的很容易。

 title=

我的 OBS 控制仪表盘

我知道你们很多人在想什么 —— “他在同一句话中提到了 WebSockets 和简单?”很多人在设置和使用 WebSockets 时遇到了困难,WebSockets 允许通过 Web 服务器的单一连接进行双向通信。Node-RED 内置了对 WebSockets 的支持,是让这一切变得简单的原因之一,至少与编写自己的客户端/服务器相比是如此。

在开始之前,请确保你已经安装和配置了 OBS。首先下载并安装最新稳定版的 obs-websockets插件。对于本文来说,默认的设置就可以了,但我强烈建议你之后按照说明来保护 obs-websockets 的安全。

接下来,下载并安装 Node-RED,可以在同一个系统上,也可以在不同的系统上(比如树莓派)。同样,默认的安装对我们这篇文章来说是够了,但最好按照他们网站上的指示进行安全安装。

现在是有趣的部分。启动 Node-RED,打开网页界面(默认在 http://localhost:1880),你有了一个空白的画布。打开右边的“汉堡”菜单,选择“ruby管理口味rtManagePalate/rt/ruby”。然后点击“安装”标签,搜索 node-red-contrib-dashboardnode-red-contrib-rbe 模块。

安装好这些模块后,点击右侧列表,将以下模块拖拽到画布上。

  • 1 Websocket Out
  • 1 Websocket In
  • 1 Debug
  • 1 Inject
  • 1 Switch
  • 1 Change
  • 2 JSON
  • 1 Catch

以下列顺序连接它们:

Inject->Button->Change->JSON->Websocket Out

Websocket In->JSON->Switch->RBE->Debug

Catch->Debug

 title=

基本流程

当 “Button” 被按下时(或 “Inject” 节点发送一个时间戳),有效载荷通过 “change” 节点发送,从 JSON 对象转换为字符串,然后发送到 “WebSocket Out” 节点。当 “WebSocket In” 节点收到消息后,会将其转换为 JSON 对象,如果不是重复的,则发送到 “Debug” 节点进行输出。而 “Catch” 节点会捕捉到任何错误,并将其放入 “Debug” 面板中。

那有效载荷里有什么呢?让我们设置好一切,一探究竟。

首先,双击 “Button” 打开设置对话框。先使用下拉菜单将有效载荷改为 “JSON”。在该字段中,添加以下内容:

{"request-type":"GetVersion"}

启用 “If msg arrives on input, emulate a button click” 复选框,然后点击 “Done” 关闭 “Button” 配置。当消息从 “Inject” 节点传来时,或者 UI 中的 “Button” 被按下,它将把 JSON 有效载荷发送到下一个节点。

 title=

设置 “Button”

现在打开 “Change” 节点。我们要将 msg.payload.message-id 设置为 msg._msgid,方法是将第一个字段从 payload改为 payload.message-id,然后使用第二个字段的下拉菜单将类型从 String 改为 msg.,然后我们将 _msgid 放入该字段。这样就会把唯一的消息 ID 复制到 JSON 对象的有效载荷中,这样每个请求就有一个唯一的 ID 进行跟踪。

然后将其发送到 “JSON” 节点,以便将 JSON 对象转换为字符串,然后传递给 “Websocket Out” 节点。打开 “Websocket Out” 节点,配置到 OBS 的连接。首先,将 Type 更改为 Connect to,然后单击铅笔图标以创建新的连接 URL。将其设置为 ws://OBSMachine:4444/,然后关闭对话框进行保存。OBSMachine 是 OBS 和 obs-websocket 运行的机器名称。例如,如果 Node-RED 运行在同一台机器上,则为 ws://localhost:4444,如果是在名为 luxuria.local 的机器上,则为 ws://luxuria.local:4444。关闭并更新 “Websocket Out” 节点。这将向 OBS 中的 WebSocket 发送有效载荷文本字符串。

 title=

“Websocket Out” 节点配置

进入 “WebSocket In” 流程!打开 “WebSocket In” 节点,并对其设置 TypeConnect to 和我们之前定义的连接的 URL(应自动填充)。接下来是第二个 “JSON” 节点,我们可以不用管它。它接受 OBS 的输出,并将其转换为有效载荷对象。

接下来,我们将从中过滤出常规的心跳和状态更新。打开 “Switch”,将 Property 值设置为 payload["update-type"]。现在从它下面的下拉菜单中选择 Is Not Null。点击 + 添加第二个选项,并从下拉菜单中选择 otherwise

 title=

“Switch” 节点配置

将 “Switch” 上的新输出直接连接到 “Debug” 节点的输入。

RBE 节点将过滤掉重复的内容,需要告诉它要观察什么字段。由于它应该连接到 “Switch” 的输出,而它只发送状态更新,所以这一点很重要,因为 obs-websocket 每隔几秒钟就会发送更新。默认情况下,RBE 会比较整个有效载荷对象,它将不断变化。打开 RBE 节点,将 Propertypayload 改为 payload.streaming。如果 payloadstreaming值发生了变化,那么就把消息传递过去,否则就丢弃。

最后一步是将 “Debug” 节点的输出从 msg.payload 改为完整的 msg 对象。这使我们能够看到整个对象,有时在 payload 之外还有有用的信息。

现在,单击 “Deploy” 以激活更改。希望 WebSocket 节点下面会有绿色的 Connected 消息。如果它们是红色或黄色的,则连接 URL 可能不正确,需要更新,或者连接被阻止。请确保远程机器上的 4444 端口是开放的、可用的,并且 OBS 正在运行!

如果没有 RBE 节点对 streaming 值的过滤,调试面板(点击画布右侧的“虫子”图标)大约现在就会被心跳消息填满。点击 “Inject” 节点左边的按钮,发送一个模拟按钮点击的信号。如果一切顺利,你应该会看到一个对象到达,它有一个 obs-websocket 可以做的所有事情的列表。

 title=

对 “GetVersion” 的回应

现在在另一个标签或窗口中打开 http://localhost:1880/ui。它应该显示一个单一的按钮。按下它! 调试面板应该会显示和之前一样的信息。

恭喜你!你已经发送了你的第一个(希望不是最后一个)WebSocket 消息!

这只是使用 obs-websockets 和 Node-RED 可以做的事情的起步。支持的完整文档记录在 obs-websockets 的 GitHub 仓库的 protocol.md 文件中。通过一点点的实验,你可以创建一个功能齐全的控制面板来启动和停止流媒体、改变场景,以及更多。如果你和我一样,在意识到之前,你就可以设置好各种控件了。

 title=

如此多的能力让我有点疯


via: https://opensource.com/article/20/6/obs-websockets-streaming

作者:Kevin Sonney 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

source 就像 Python 的 import 或者 Java 的 include。学习它来扩展你的 Bash 能力。

登录 Linux shell 时,你将继承特定的工作环境。对于 shell 而言,“ 环境 environment ”意味着已经为你设置了某些变量,以确保你的命令可以按预期工作。例如,PATH 环境变量定义 shell 从哪里查找命令。没有它,几乎在 Bash 中尝试执行的所有操作都会因“命令未发现” 错误而失败。在执行日常任务时,环境对你几乎是不可见的,但它很重要。

有多种方法可以影响你的 shell 环境。你可以在配置文件中进行修改,例如 ~/.bashrc~/.profile,你可以在启动时运行服务,还可以创建自己的自定义命令或编写自己的 Bash 函数

通过 source 添加到你的环境

Bash(以及其他一些 shell)有一个称为 source 的内置命令。这就是令人困惑的地方:source 执行与命令 . 相同的功能(是的,那只是一个点),而与 Tcl 命令的 source 不是同一个(如果你输入 man source,也许在屏幕上显示的是它)。实际上,内置的 source 命令根本不在你的 PATH 中。这是 Bash 附带的命令,要获取有关它的更多信息,可以输入 help source

. 命令兼容 POSIX。 但 source 命令不是 POSIX 定义的,但可以与 . 命令互换使用。

根据 Bash helpsource 命令在你当前的 shell 中执行一个文件。 “在你当前的 shell 中” 这句很重要,因为它表示它不会启动子 shell。因此,用 source 执行的任何操作都发生在内部并影响当前环境。

在探讨 source 对环境的影响之前,请用 source 命令导入一个测试文件,以确保其按预期执行代码。首先,创建一个简单的 Bash 脚本并将其保存为 hello.sh

#!/usr/bin/env bash
echo "hello world"

使用 source,即使该脚本不设置可执行也可以运行:

$ source hello.sh
hello world

你也可以使用内置的 . 命令获得相同的结果:

$ . hello.sh
hello world

source. 命令成功地执行了测试文件的内容。

设置变量和导入函数

你可以使用 source 将文件 “导入” 到 shell 环境中,就像你可以在 C 或 C++ 中使用 include 关键字引用一个库,或者在 Python 中使用 import 关键字引入一个模块一样。这是 source 的最常见用法之一,它也是 .bashrc 中的一个默认包含方式,通过 source 导入 .bash_aliases,以便将任何你自定义的别名在登录时导入到你的环境。

这是导入 Bash 函数的示例。首先,在名为 myfunctions 的文件中创建一个函数。它将打印你的公共 IP 地址和本地 IP 地址:

function myip() {
        curl <http://icanhazip.com>      

        ip addr | grep inet$IP | \
        cut -d"/" -f 1 | \
        grep -v 127\\.0 | \
        grep -v \:\:1 | \
        awk '{$1=$1};1'
}

将该函数导入你的 shell:

$ source myfunctions

测试新函数:

$ myip
93.184.216.34
inet 192.168.0.23
inet6 fbd4:e85f:49c:2121:ce12:ef79:0e77:59d1
inet 10.8.42.38

source 的搜索

当你在 Bash 中使用 source 时,它将在当前目录中搜索你引用的文件。但并非所有 shell 都这样,因此,如果你不使用 Bash,请查看文档。

如果 Bash 找不到要执行的文件,它将搜索你的 PATH。同样,这并不是所有 shell 的默认设置,因此,如果你不使用 Bash,请查看文档。

这些都是 Bash 中不错的便利功能。这种出奇地强大,因为它允许你将常用函数保存在磁盘上的一个集中的位置,然后将你的环境视为集成开发环境 (IDE)。你不必担心函数的存储位置,因为你知道它们在你的本地位置等同于在 /usr/include 下,因此无论你在哪,当你导入它们时,Bash 都可以找到它们。

例如,你可以创建一个名为 ~/.local/include 的目录作为常见函数存储区,然后将此代码块放入 .bashrc 文件中:

for i in $HOME/.local/include/*;
  do source $i
done

这会将 ~/.local/include 中所有包含自定义函数的文件“导入”到 shell 环境中。

当你使用 source. 命令时,Bash 是唯一搜索当前目录和 PATH 的 shell。

将 source 用于开源

使用 source. 来执行文件是影响环境同时保持变更模块化的一种便捷方法。在下次考虑将大量代码复制并粘贴到 .bashrc 文件中时,请考虑将相关函数或别名组放入专用文件中,然后使用 source 导入它们。


via: https://opensource.com/article/20/6/bash-source-command

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Bash 的 history 命令在它提供的功能数量上超过了所有其他 Linux Shell 历史接口。

Bash 有丰富的历史。也就是说,它是一个古老的的 shell,还有一个更古老的 Shell (Bourne shell)的前辈,但是它还有一个很棒的 history 命令,它提供的功能数量超过了所有其他 shell 的历史接口。 Bash 版本的 history 可进行反向搜索、快速调用、重写历史记录等。

history 命令与许多其他命令不同。你可能习惯于将命令作为可执行文件放在常见的系统级位置,例如 /usr/bin/usr/local/bin 或者 ~/bin。 内置的 history 命令不在你的 PATH 中并且没有物理位置:

$ which history

which: no history in [PATH]

相反,history 是 shell 本身的内置函数:

$ type history
history is a shell builtin
$ help history
history: history [-c] [-d offset] [n] or
history -anrw [filename] or
history -ps arg [arg...]

Display or manipulate the history list.
[...]

出于这个原因,每个 shell 中的历史功能都是独特的,因此你在 Bash 中使用的功能可能无法在 Tcsh 或 Fish 或 Dash 中使用,而在这些 shell 中使用的功能可能也无法在 Bash 中使用。在某些情况下,了解 Bash 可以做什么可能会激发其他 shell 的用户创建有趣的改造来复制 Bash 行为,并且可能会解锁你从未知道的 Bash 功能。

查看你的 Bash 历史

history 命令最基本、最频繁的用法是查看 shell 会话的历史记录:

$ echo "hello"
hello
$ echo "world"
world
$ history
  1  echo "hello"
  2  echo "world"
  3  history

事件指示器

事件指示器 Event designator 按事件搜索你的历史记录。在这里,“事件”是指记录在历史中的命令,以换行符划定。换句话说,一行一个事件,以索引号来标记。

事件指示器大多以感叹号开头,有时也称为 “bang”(!)。

要从你的历史记录中重新运行命令,请使用感叹号,之后紧跟(之间没有空格)所需命令的索引号。例如,假设第 1 行包含命令 echo "hello",你想要想再次运行它:

$ !1
echo "hello"
hello

你可以使用相对定位,提供基于你历史中当前位置向后的负数行号。例如,返回到历史中倒数第三个条目:

$ echo "foo"
foo
$ echo "bar"
bar
$ echo "baz"
baz
$ !-3
echo "foo"
foo

如果只想回去一行,那么可以使用速记 !! 代替 !-1。这节省了按键时间!

$ echo "foo"
$ !!
echo "foo"
foo

字符串搜索

你也可以对条目搜索特定的字符串,反过来搜索要运行命令。要搜索以指定字符串开始的命令,请使用感叹号,之后紧跟(没有空格)要搜索的字符串:

$ echo "foo"
$ true
$ false
$ !echo
echo "foo"
foo

你还可以在任意位置(不仅是开头)搜索包含该字符串的命令。为此,请像之前一样使用 ! 加上要搜索的字符串,但在字符串的两端都用问号(?)围绕起来。如果你知道该字符串后紧跟一个换行符,那么可以省略最后的问号(就是在按回车之前输入的最后字符):

$ echo "foo"
$ true
$ false
$ !?foo?
echo "foo"
foo

字符串替换

类似于在行首搜索字符串,你可以搜索字符串并用新字符串替换它,以更改命令:

$ echo "hello"
hello
$ echo "world"
world
$ ^hello^foo
echo "foo"
foo

让 history 有用

在 Bash 中,history 命令的功能远远超过此处介绍的内容,但这是一个很好的开始, 可以让你习惯使用你的历史记录, 而不是仅仅把它当作一个参考。经常使用 history 命令,并试试无需输入命令即可执行的操作。你可能会感到惊讶!


via: https://opensource.com/article/20/6/bash-history-commands

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Ubuntu MATE 20.04 LTS 无疑是最流行的 Ubuntu 官方特色版本之一。

不仅仅是我,这份Ubuntu 20.04 调查报告也持同样观点。不过不管流行与否,它都是一个令人印象深刻的 Linux 发行版,尤其是用在较旧的硬件上时。事实上,它也是可用的最轻量的 Linux 发行版之一。

所以,我想在一个虚拟机中尝试一下,为你提供一个概览,这样你可以了解其中有何值得期盼的变化,以及是否值得尝试。

在 Ubuntu MATE 20.04 LTS 中有什么新功能?

Ubuntu MATE 20.04 LTS 的主要亮点应该是增加了 MATE Desktop 1.24。

你可以期待 MATE Desktop 1.24 中的所有新特色都被打包到 Ubuntu MATE 20.04 中。除此之外,还有很多重要的变化、改进和增补。

这是 Ubuntu MATE 20.04 中变化的概述:

  • 新增 MATE Desktop 1.24
  • 大量视觉改进
  • 数十处错误修复
  • 基于 Linux 内核 5.4 系列
  • 添加了实验性的 ZFS 支持
  • 添加了来自 Feral Interactive 的 GameMode
  • 一些软件包更新

现在,为了更好地了解 Ubuntu MATE 20.04,我将给你提供更多的细节。

用户体验改善

考虑到越来越多的用户倾向于在桌面上使用 Linux,而用户体验在桌面中起着至关重要的作用。

如果有一些易于使用和令人愉悦的东西,那么第一印象就会有很大不同。

对于 Ubuntu MATE 20.04 LTS,我没有感到失望。就我个人而言,我是最新的 GNOME 3.36 的粉丝。我喜欢在我 Pop!\_OS 20.04 上使用它,但是随着 MATE 1.24 的出现,使得 Ubuntu MATE 也同样具有很好的体验。

你会看到窗口管理器有一些重大更改,包括:增加了用于重新调整大小的隐形边框,HiDPI 图标渲染,重新设计了 ALT+TAB 工作区切换器的弹出窗口和一些其它的更改,这些是最新的 MATE 1.24 桌面环境的一部分。

此外, MATE Tweak 也得到了一些贴心的改进,即使你更改桌面的布局,也可以保留用户偏好。新的 MATE 欢迎屏幕也会告知用户更改桌面布局的能力,因此,用户无需不断摸索就能知道这个变化。

此外,我最喜欢的新增功能之一是可以预览最小化的应用程序。

例如,你已经最小化了一个应用程序,但是你想在拉起它之前看到它的预览 —— 现在你只需将鼠标悬停在任务栏上就可以做到这一点,如下图所示:

不过,我必须指出,并不是每个应用程序都可以如预期般的工作。因此,这个功能是有缺陷的,还需要改进。

应用程序新增或升级

在 MATE 20.04 中,你会注意到有一个新的固件更新器,它是 fwupd 的 GTK 前端。你可以使用这个更新器来轻松地管理你的固件驱动。

这个版本也使用 Evolution 替换了 Thunderbird 电子邮件客户端。尽管 Thunderbird 是一个非常流行的电子邮件客户端,但是 Evolution 与 MATE 桌面集成得更好,并且证明它更有用。

考虑到我们已经搭载了 MATE 1.24,你也将发现一个新的时间和日期管理应用程序。不仅如此,如果你需要一个放大镜,Ubuntu MATE 20.04 还内置了 Magnus

Ubuntu MATE 20.04 也包括了众多预安装的软件包/应用程序的升级包。

尽管这些是小的增补,但却能在很大程度上帮助发行版变得更有用。

Linux Kernel 5.4

Ubuntu MATE 20.04 带有 2019 年最后一个主要的稳定版内核,即 Linux 内核 5.4

使用该内核,你可以获得原生的 exFAT 支持、改进的硬件支持。更不用说,拥有 WireGuard VPN 的支持也是一件极好的事。

所以,你会注意到 Linux Kernel 5.4 的众多好处,包括内核锁定功能。如果你好奇,你可以阅读我们关于 Linux Kernel 5.4 的新闻报道来了解更多的细节。

增加了 Feral Interactive 的 GameMode

以将游戏带到 Linux 平台而闻名的 Feral Interactive 带来了一款实用的命令行工具,即 GameMode

它没有提供图形界面,但是在启动一个游戏前,你可以使用命令行请求临时性的系统优化。

虽然这可能不会给每个系统都带来很大的不同,而是给玩游戏提供了更多的资源,并且 GameMode 可以确保你获得必要的优化。

实验性的 ZFS 安装选项

你可以使用 ZFS 作为根文件系统了。值得注意的是,它是一个实验性的功能,如果你不确定自己在做什么,那么就不应该使用它。

要更好地了解 ZFS,我建议你阅读我们的一篇文章,John Paul 所写的《ZFS 是什么》的文章。

性能和其它的改进

Ubuntu MATE 是一款完美的轻量级发行版,同时也是一款适合现代台式机的发行版。

在这个评测中,我没有运行任何特殊的基准测试工具,以一个普通用户来说,我在虚拟机设置中没有发现任何性能问题。我在一台使用了一颗 i5-7400 处理器、配备 GTX 1050 显卡和 16 GB 内存的主机系统上进行了测试。并且,我将 7 GB 的内存 + 768 MB 的显存 + 2 个处理器核心分配给了虚拟机。

如果你要自己测试它,请随时告诉我你对它的感觉如何。

总的来说,除了所有主要的改进之外,还有一些细微的改变/修复/改进,使得 Ubuntu MATE 20.04 LTS 成为了一个很好的升级版本。

我应该升级吗?

如果你正在运行 Ubuntu MATE 19.10,你应该立即升级它,因为它的支持将在 2020 年 6 月结束。

对于 Ubuntu MATE 18.04 用户(支持到 2021 年 4 月)来说,这取决于你的需求。如果你需要最新发布版本的功能,你应该选择立即升级它。

但是,如果你不一定需要新的功能,你可以查看现存的错误列表 并加入 Ubuntu MATE 社区 来了解更多最新发布版本的问题。

在你做完必要的研究后,你可以继续升级你的系统到 Ubuntu MATE 20.04 LTS,它将支持到 2023 年 4 月。

你试过最新的 Ubuntu MATE 20.04 吗?你认为它怎么样?在评论中让我知道。


via: https://itsfoss.com/ubuntu-mate-20-04-review/

作者:Ankush Das 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出