Plum's Blog

Fedora 40 安装配置手册

我博客的老读者们可能都清楚,我之前一直是一个忠诚的 Ubuntu 用户,使用 Gnome-Shell 桌面环境,并且以调侃 KDE 和 ArchLinux 的非理性用户为乐。当然我早在 2021 年的时候,其实就已经开始将主力发行版从 Ubuntu 迁移到了 Fedora,一开始只是“试试看”,结果却一发不可收拾,持续使用到了现在。

所以就有了这篇带有说明书和手册性质的指导文章,起主要目的是帮助和指引那些不知道怎么安装、使用、调配 Fedora 的用户,消除他们的迷茫和困惑,同时分享一些自己的使用经验,希望帮到更多的人。

当然我也有私心,就是记录下自己的配置过程,方便未来自己查阅使用。

为什么是 Fedora?

本文开始之前我觉得我需要先解释一下我为什么要放弃 Ubuntu 转向 Fedora。首先是 Ubuntu 方面这些年一直在无脑推自己家的 snap 包格式,我不能说这个格式不好,但它的确有很大的局限性,比如启动速度和更新之类的。最不能接受的是 Canonical(Ubuntu背后公司)为了推广 Snap,在它许多功能没有作完的时候,就强行绑定和替换默认应用的安装包为 Snap,典型就是把默认的 Firefox 浏览器换为 Snap 版本,同时还对用户自行安装 deb 版本的 Firefox 设定各种阻碍。

而 Snap 版本的 Firefox 本身问题也很多,什么字体渲染啊,不支持通知推送啊……甚至在浏览器运行的时候还不支持更新,我在一台电脑上坚持了半年多实在是受不了了。

同时 Snap 这个东西还开始祸害 Ubuntu Server 版本,我知道 Snap 可以打包 CLI 软件,某种程度上很方便,但你让我什么东西都走 Snap 就很恶心了……尤其是在 Flatpak 已经几乎快成为业界事实标准的前提下,依然强推 Snap,属实是恶心。

与此同时我又得知了 Ubuntu 24.04 LTS 版本将会在 Snap 强推的道路上加大力度,所以我就更加推荐原来的 Ubuntu 用户过来尝试 Fedora 了。

抱怨了这么多,我还是要说一下,为什么我选择了 Fedora Worksation,而不是什么 Arch,Gentoo,Debian,NixOS,OpenSUSE 之类的。首先我个人是不太喜欢使用所谓的“滚动更新”版本的,这个概念听起来很美好,但带来的是诸多的使用隐患,最典型的问题就是经常容易“滚挂“,当然你可以说”滚挂“了还能很快的看文档修好,但对于我这种需要一个”稳定工作环境“的人来说,突然的”滚挂“都可能导致我电脑无法使用,我也很难保证我能抽出修复它的时间。当然如果你是时间比较充裕的人,或者是在“二奶机”上尝试 Linux,使用类似 Arch 或者 Gentoo 、甚至 Debian 这样的系统还是有折腾的意义的。

而 NixOS 和 Fedora SilverBlue 这类“不可变发行版”也是最近流行的,但我觉得它们依然不够成熟,而且对于使用用户而言有种“矛盾感”。在我看来“不可变“发行版更多是针对那些”不太懂电脑”的小白去使用,因为这个系统足够安全和可靠,但对于我这样需要经常配置系统的用户而言,“不可变”系统带来的反而都是制约和不变,所以我为什么非要去选择这么一个系统呢?用快照不香么?而且现阶段的“不可变”发行版那种用容器安装不同系统的操作方式本身你在常规发行版里也可以玩,更没什么优势。所以目前看来依然还是“可玩性大于可用性“,玩玩可以,作为主力还是不成熟。

Fedora 目前背靠红帽子,而且在软件的开发流程还有各种 Bug 的速度上,尤其是对 Gnome 系组件的更新部分,做的都比 Ubuntu 要好得多,不会存在 Ubuntu 那样从 Debian 拿过来的包有 Bug,后续没人修没人管只能找 PPA 的尴尬场景。加上我也是一个 Gnome 用户,所以 Fedora 也算是 Gnome 环境下的“亲儿子”待遇,使用它也是理所应当的了。


Fedora 是试验场?是小白鼠用的?不稳定?

关于 Fedora 的传言有很多,最多的还是这两句:

“Fedora 是 新技术的试验场,是给小白鼠用户的。“

“Fedora 特别激进,所以不稳定。“

这两句话前者算是对的,但后者就有待商榷了。Fedora 的确使用新技术特别激进,大部分很多 Linux 下的新特性,它都是第一时间上的,并且很快就推到了正式版里。包括 Wayland, btrfs,还有最新版本的 Gnome-shell 之类的,但这并不代表“不稳定”。

Fedora 的正式版本中,所有的软件包都是各自的“正式版”,Fedora 也从来没有拿过什么 Beta 版本的组件来打包,比如在 Fedora 40 中,包括的 Gnome 的所有组件,从 mutter 到 gnome-shell,从文字编辑器到终端,版本号全都是正式版,哪怕是各种依赖的小组件也都是正式版。大家都是正式版,你怎么能说所谓的“不稳定”了?许多人喜好的“滚动发行版”也是不停的滚动更新系统组件的正式版本,理论上 Fedora 和各种“滚动更新” Linux 的系统稳定性应该差不多,甚至前者还会比后者更好一点,何来的“不稳定”?

当然许多组件的新版本总归是有 Bug 的,但是新 Bug 用户报告的也快,得到修复的也快,只要乱折腾,Fedora 本身还是足够稳定的。

同时 Fedora 使用的 dnf 更新工具,在跨版本更新的时候也更加可靠,我已经更新了好几个大版本,没有遇到问题。


为什么我的 Fedora / Linux 总是不稳定?

首先,你是不是用了 Nvidia 的显卡?

大部分人 Linux 系统不稳定或者更新挂掉的根源,就是 Nvidia 显卡的闭源驱动导致的。虽然我个人可以搞定这一点,但我还是不建议对 Linux 不熟悉的用户,使用 Nvida 显卡的电脑安装各种 Linux,因为每一次更新都可能导致显卡驱动挂掉。

如果你是 Intel 集成显卡,或者 AMD 的集成显卡,采用开源驱动之类的,这些就会好很多。

其次,你是不是用了太多所谓的“优化”和“插件”?

我不建议给 Linux 进行太多优化,任何系统进行高强度的修改后都会变得不稳定。我看到过很多人说 Linux 不稳定的,仔细一问,发现都进行了什么所谓的“优化”,甚至在网上搜索到了什么“一键脚本优化”,那些脚本和优化的文章其实都是好几年前的了,早就过期了,许多新手什么都看不懂,贸然拿来运行,肯定会把系统搞得一团糟。

而且那些所谓“深度优化“的 Linux 每次更新也会带来更大的隐患,挂掉的几率也更大。而本手册在编写的时候也会把每一步操作写清楚,告诉你这么做的目的和利弊,有助于读者自行判断是否应该进行操作,出了问题也好排查。


本文配置 Fedora 的宗旨:专注 Gnome,一切原生,原汁原味

因为我使用 Android 手机就是原生系统党,用的也是 Pixel,那么本文配置 Fedora 和 Gnome-shell 的宗旨也是符合原生,能不改就不改,字体和各种界面都是使用原本的,就连安装配置用的也是系统默认的。

Gnome-shell 搭配尽可能少的插件,全面拥抱原生操作逻辑。文件系统使用 btrfs ,也就是默认的配置,许多人还认为 ext4 性能优于 btrfs,然而现在是 SSD 时代了,少的那点速度完全已经无法感知,而 btrfs 的快照功能却可以让你幸福许多。目前 btrfs 不稳定的点是用来做 raid,不过我们作为个人用户也不会拿来做 raid。话说回来了,ext4 你就确定没有文件丢失风险了吗?最好的应对措施还是备份,备份,备份!

关于 SWAP 分区,也及建议根据默认,实际上现在的 ZSWAP 技术已经足够成熟,在各种安卓手机上用的也不少,默认启用挺好,不必刻意对 swap 进行分区。

而 Fedora 最佳的安装选择自然是 Wayland 而不是 X11,很明显 X11 已经即将被淘汰。目前除了那些 Nvidia 独显用户,我想不到继续用 X11 的理由。而 Nvidia 显卡的使用者我也不太建议用 Fedora,毕竟炸驱动是常态,还是用 Ubuntu 更好一些,本文主要也是针对 Intel 和 AMD 集成显卡用户来写的。

前面的废话说的也够多了,下面正篇开始:


配置更新源

首先部署系统需要确立安装配置,本文安装的配置为:Fedora + Gnome Shell + Wayland + btrfs 这一套,全部照搬 Fedora 官方推荐。

当然你要安装 KDE 或者 X11 也可以,本文中也有部分内容可以共用到 KDE 的桌面环境中(譬如字体渲染等)

首先安装系统,建议选择默认的抹去整个磁盘的方式,文件系统使用 btrfs,默认的分区会保留 500MB 左右的 Boot 分区,这个务必要保留,因为现阶段的 Grub 并不完全支持启动 btrfs 格式的 Boot 分区,或许可以启动,但是会报错。

所以不要强迫症发作,把 Boot 目录也变成 btrfs 格式,记得独立出来,而这个目录最好保留 500MB 到 1GB 的空间,用来存放各种启动 Kernel (内核),避免将来会被内核塞满。

系统安装可选择中文语言,也可选择英文,我选择的是英文。理由就是 Gnome 的中文化太丑陋,而且经常有很多菜单翻译的很怪。

安装完毕后第一件事就是

更新系统:

sudo dnf update

然后就是

启用 rpm-fusion 源

sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

这个源中存在有许多非开源的软件,但本源也有浓厚的官方背景,属于 Fedora 用户必备了。

安装 gnome-tweaks

sudo dnf install gnome-tweaks

这是一个 Gnome 用户必备的 Tweak 工具,可以修改许多内容,包括打开被隐藏的最小化和最大化窗口按钮等。

添加 Flathub 中国镜像

sudo flatpak remote-modify flathub --url=https://mirror.sjtu.edu.cn/flathub

添加镜像后可以让 flathub 的速度快一点,当然如果你不在中国大陆地区的话,就没有添加的必要。

https://mirror.sjtu.edu.cn/docs/flathub

添加 Fedora 默认源中国镜像

方法可参考这里:
https://mirror.sjtu.edu.cn/docs/fedora/linux

但是我个人觉得没有必要,理由是 Fedora 自身的更新支持镜像源检索,另一个理由是官方的源可以更快的安装一些新的包。


安装中文字体和配置字体渲染

首先我先说一下默认情况下 Fedora 安装之后的中文显示问题:包括部分字体过粗和过细;字形显示歪歪扭扭;部分字形显示异常,比如“绘画”的“画”会变成日文汉字中的“画”;以及英文和中文字体混合显示时候的高低不一问题;还有系统菜单栏以及锁屏界面的时钟中“冒号”的显示距离过宽的问题……

这些我们一条一条说,先说字体过粗过细的问题:

一直以来 Fedora 默认的中文字体都是“思源黑体”,使用的是 Noto CJK ,而从 Fedora 39 开始,Fedora 为了节省空间(至少它们是这么说的),将思源黑体的字体文件变成了 VF 版本,也就是“可变字体“(Variable fonts),这原本算是一件好事,但这带来了新的问题。在 QT 程序下,典型的就是 Telegram,会对这个所谓的”可变字形”支持不好,造成有些字体过粗,有些字体过细的问题。关于这个问题也有 Bug 报告可查询:

https://bugreports.qt.io/browse/QTBUG-111994
https://bugzilla.redhat.com/show_bug.cgi?id=2178389

虽然这个问题官方说解决了,也 Patch 了,但在我这里只能算是“改善”,并不能解决。当然我们可以用另一种方法解决这个问题,既然 Fedora 39 开始 Noto 中文字体都变成了“可变字体”,我们可以安装 adobe-source-han-sans 字体来进行替换,因为理论上 adobe-source-han-sans 和 Noto Sans CJk 还有“思源黑体”其实都是同样的东西,而 adobe-source-han-sans 目前还没有变成“可变字体”,可以实现和之前一样的显示效果。

然后是字形歪歪扭扭的问题,这个是字体渲染的问题。

Feodra 默认的字体渲染是“灰度”+“轻度”的方式,很多网上的教程会让你改为“RGB次像素渲染”,但我个人不太推荐。一方面是这个方法名义上已经过时了,字体渲染从 GTK4 版本开始就在持续优化,一方面是为了更好的支持“非整数缩放”,另一方面则是提升了字体的清晰度,这些都是在针对“灰度”+“轻度”进行的,而“RGB次像素渲染”并不能享受到这些。另一方面是这个“次像素渲染”会带来一些其他的问题,尤其是对于平板等设备,从横屏变成竖屏会发现字体变得很“花”很“模糊”,就是这种渲染的弊端。与此同时 MacOS 设备也早已抛弃了这个渲染方式,可见并没有坚持使用的必要。

https://blog.gtk.org/2024/03/07/on-fractional-scales-fonts-and-hinting/

解决这个方法可以通过自行编写 Fontconfig 来解决,这个后面会说。

接着是字形显示异常的情况。

这个问题很多人都说过,思源黑体是一个系列,针对“中日韩”好几个语言的集合,这个字体很多字形的代码是通用的,这就会导致有时候程序分不清一个汉字到底是中文还是日文,到底是繁体中文还是简体中文,就会导致显示错误。

同样这个问题也可以用 Fontconfig 文件解决。

还有一个问题也十分普遍:英文和中文字体混合显示时候的高低不一

这个问题的根源还是在“思源黑体”上,字体本身有一个“基线”(Baseline)设定,就是通过这根标准线来对齐水平,但操蛋就操蛋在这个“思源黑体”的“基线“下面留下了巨大的空白,这就导致这个字体和英文一起显示的时候会忽高忽低很尴尬。但好在只是少部分程序,尤其是涉及 UI 显示的部分才会出现这个对不齐的情况,大部分包括网页之类的还是挺正常的。

解决的办法也很简单,需要找一个完美搭配中英文基线显示的字体,配合 Fontconfig 来解决。那么有没有这么一个字体呢?有的,就是来自华为鸿蒙系统的 HarmonyOS Sans。

据说这个问题是仅仅存在于“英文环境”,中文环境很 OK,如果感觉显示没问题,那就没必要修改。

最后就是困扰我许久的顽疾:系统菜单栏以及锁屏界面的时钟宽度问题

如果你贸然使用 Gnome-Tweak 之类的工具把系统字体改为“微软雅黑”或者其他自己喜好字体之后,你就会发现尴尬的一幕,你的菜单栏的时钟会变宽了,你的锁屏界面的时钟也会变宽,尤其是中间那个“冒号”,占地面积特别的大。

当然这个问题许多人也报告过:

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2618

原因也十分有趣,因为这个时钟中间的“冒号”并不是所谓的“冒号”,而是一个“Ratio”字符,也就是“比例”字符。类似我们常说的比赛比分中的“几比几”的那个中间字符。大部分字体中对这个字符的显示都是偏宽的,而只有少部分字体中的“Ratio”字符才会显示的比较“窄”一点,其中这个“少部分”就包括 Gnome-shell 默认字体 Cantarell。

换而言之,想要这个时间的间距显示正常,你就只能用默认的 Cantarell 字体。

想要解决这个问题,一样要通过 Fontconfig 来想办法。

接下来就开始配置了:

首先是安装 adobe-source-han-sans 字体:

sudo dnf install "adobe-source-*"

然后去鸿蒙 OS 官方文档下载 Harmony OS Sans 字体:

https://developer.huawei.com/consumer/en/doc/design-guides-V1/font-0000001157868583-V1
https://github.com/ajacocks/harmonyos-sans-font

将字体解压到 home 目录的 ~/.local/share/fonts 中,当然你也可以用 root 全线拷贝到 /usr/share/fonts/ 目录中

接着创建本地文档:~/.config/fontconfig/fonts.conf

写入以下内容:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
    <!-- 设置字体渲染方式,使用灰度,不使用 rgb -->
  <match target="font">
    <edit mode="assign" name="rgba">
      <const>none</const>
    </edit>
  </match>
   <match target="font">
<edit name="autohint" mode="assign">
    <bool>false</bool>
    </edit>
 </match>
<match target="font">
<edit name="hinting" mode="assign">
    <bool>true</bool>
    </edit>
     </match>
         <!-- 设置字体渲染方式,可以使用 none,也可以使用 slight,我喜欢 none-->
  <match target="font">
    <edit mode="assign" name="hintstyle">
      <const>hintnone</const>
    </edit>
  </match>

  <match target="font">
    <edit mode="assign" name="antialias">
      <bool>true</bool>
    </edit>
  </match>
  


    <!-- 针对 Emoji 字体单独设置,防止无法显示的问题,emoji 字体不能使用 none 渲染 -->
  <match target="font">
    <test name="family" qual="any">
      <string>Noto Color Emoji</string>
    </test>
        <edit name="rgba" mode="assign">
      <const>none</const>
    </edit>
        <edit name="embolden" mode="assign">
      <bool>false</bool>
    </edit>
         <edit mode="assign" name="lcdfilter">
    <const>lcddefault</const>
  </edit>
    <edit name="scalable" mode="assign">
      <bool>true</bool>
    </edit>
    <edit name="embeddedbitmap" mode="assign">
      <bool>true</bool>
    </edit>
    <edit name="hinting" mode="assign">
      <bool>true</bool>
    </edit>
        <edit name="autohint" mode="assign">
      <bool>false</bool>
    </edit>
  <edit name="antialias" mode="assign">
      <bool>true</bool>
    </edit>
        <edit name="hintstyle" mode="assign">
      <const>hintslight</const>
    </edit>
  </match>


  <!-- Default system-ui fonts -->

   <match target="pattern">
    <test name="family">
      <string>system-ui</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>sans-serif</string>
    </edit>
  </match>

  <!-- 默认 emoji 字体。 -->
  <match target="pattern">
    <test name="family" qual="any">
      <string>emoji</string>
    </test>
    <edit name="family" mode="prepend" binding="same">
      <string>Noto Color Emoji</string>
    </edit>
  </match>
 
<!-- 替换 Apple Color Emoji 字体。 -->
    <match target="pattern">
    <test name="family" qual="any">
      <string>Apple Color Emoji</string>
    </test>
    <edit name="family" mode="assign" binding="same">
      <string>Noto Sans</string>
    </edit>
  </match>

  
<!-- 替换 Apple Color Emoji 字体。  -->
    <match target="pattern">
    <test name="family" qual="any">
      <string>SF Pro Icons</string>
    </test>
    <edit name="family" mode="assign" binding="same">
      <string>Noto Color Emoji</string>
    </edit>
  </match>

  
 <!-- 替换 Apple 字体。 -->
    <match target="pattern">
    <test name="family" qual="any">
      <string>PingFang SC</string>
    </test>
    <edit name="family" mode="assign" binding="same">
      <string>Source Han Sans CN</string>
    </edit>
  </match>
  
   <!-- 替换 Windows 字体。 -->
    <match target="pattern">
    <test name="family" qual="any">
      <string>Microsoft Yahei</string>
    </test>
    <edit name="family" mode="assign" binding="same">
      <string>Noto Sans CJK SC</string>
    </edit>
  </match>
  
   <!-- 替换 MS 字体。 -->
    <match target="pattern">
    <test name="family" qual="any">
      <string>arial</string>
    </test>
    <edit name="family" mode="assign" binding="same">
      <string>Noto Sans</string>
    </edit>
  </match>

      <!-- 替换 Apple字体。 -->
    <match target="pattern">
    <test name="family" qual="any">
      <string>SF Pro</string>
    </test>
    <edit name="family" mode="assign" binding="same">
      <string>Noto Sans</string>
    </edit>
  </match>

  <!-- Map fonts that are commonly used by web pages to our preferred fonts -->
  <match target="pattern">
    <test qual="any" name="family"><string>Liberation Sans</string></test>
    <edit name="family" mode="assign" binding="same"><string>sans-serif</string></edit>
  </match>

  <match target="pattern">
    <test qual="any" name="family"><string>Tahoma</string></test>
    <edit name="family" mode="assign" binding="same"><string>sans-serif</string></edit>
  </match>

  <match target="pattern">
    <test qual="any" name="family"><string>Arial</string></test>
    <edit name="family" mode="assign" binding="same"><string>sans-serif</string></edit>
  </match>

  <match target="pattern">
    <test qual="any" name="family"><string>Liberation Mono</string></test>
    <edit name="family" mode="assign" binding="same"><string>monospace</string></edit>
  </match>



  <!-- Default sans-serif fonts-->
  <match target="pattern">
    <test name="family">
      <string>sans-serif</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Source Han Sans CN</string>
      <string>Noto Sans</string>
      <string>Noto Color Emoji</string>
    </edit>
  </match>

  <!-- Default serif fonts-->
  <match target="pattern">
  <test name="family">
    <string>serif</string>
  </test>
  <edit name="family" mode="prepend" binding="strong">
      <string>Source Han Serif CN</string>
      <string>Noto Serif</string>
      <string>Noto Color Emoji</string>
    </edit>
  </match>

  <!-- Default monospace fonts-->
  <match target="pattern">
    <test name="family">
      <string>monospace</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Sans Mono</string>
      <string>Source Han Mono SC</string>
      <string>Noto Color Emoji</string>
    </edit>
  </match>

    <!-- Default font for the zh_CN locale (no fc-match pattern) -->

    <match target="pattern">
    <test name="lang" compare="contains">
      <string>en</string>
    </test>
    <test name="family" compare="contains">
      <string>Source Han Sans CN</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>HarmonyOS Sans SC</string>
      <string>Source Han Sans CN</string>
      <string>Noto Sans</string>
      <string>Noto Color Emoji</string>
    </edit>
  </match>

 
  <match target="pattern">
    <test name="lang" compare="contains">
      <string>en</string>
    </test>
    <test name="family" compare="contains">
      <string>Source Han Serif CN</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Source Han Serif CN</string>
      <string>Noto Serif</string>
      <string>Noto Color Emoji</string>
    </edit>
  </match>
  
  <match target="pattern">
    <test name="lang">
      <string>zh-CN</string>
    </test>
    <test name="family">
      <string>Source Han Sans CN</string>
    </test>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>zh-CN</string>
    </test>
    <test name="family">
      <string>Source Han Serif CN</string>
    </test>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>zh-CN</string>
    </test>
    <test name="family">
      <string>Source Han Mono SC</string>
    </test>
  </match>
  
  <match target="pattern">
    <test name="lang">
      <string>zh-HK</string>
    </test>
    <test name="family">
      <string>Source Han Sans CN</string>
    </test>
    <edit name="family" binding="strong">
      <string>Noto Sans CJK HK</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>zh-HK</string>
    </test>
    <test name="family">
      <string>Source Han Serif CN</string>
    </test>
    <edit name="family" binding="strong">
      <!-- not have HK -->
      <string>Source Han Serif TW</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>zh-HK</string>
    </test>
    <test name="family">
      <string>Source Han Mono SC</string>
    </test>
    <edit name="family" binding="strong">
      <string>Noto Sans Mono CJK HK</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>zh-TW</string>
    </test>
    <test name="family">
      <string>Source Han Sans CN</string>
    </test>
    <edit name="family" binding="strong">
      <string>Source Han Sans TW</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>zh-TW</string>
    </test>
    <test name="family">
      <string>Source Han Serif CN</string>
    </test>
    <edit name="family" binding="strong">
      <string>Source Han Serif TW</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>zh-TW</string>
    </test>
    <test name="family">
      <string>Source Han Mono SC</string>
    </test>
    <edit name="family" binding="strong">
      <string>Source Han Mono TC</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>ja</string>
    </test>
    <test name="family">
      <string>Source Han Sans CN</string>
    </test>
    <edit name="family" binding="strong">
      <string>Source Han Sans JP</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>ja</string>
    </test>
    <test name="family">
      <string>Source Han Serif CN</string>
    </test>
    <edit name="family" binding="strong">
      <string>Source Han Serif JP</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>ja</string>
    </test>
    <test name="family">
      <string>Source Han Mono SC</string>
    </test>
    <edit name="family" binding="strong">
      <string>Source Han Code JP</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>ko</string>
    </test>
    <test name="family">
      <string>Source Han Sans CN</string>
    </test>
    <edit name="family" binding="strong">
      <string>Source Han Sans KR</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>ko</string>
    </test>
    <test name="family">
      <string>Source Han Serif CN</string>
    </test>
    <edit name="family" binding="strong">
      <string>Source Han Serif KR</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>ko</string>
    </test>
    <test name="family">
      <string>Source Han Mono SC</string>
    </test>
    <edit name="family" binding="strong">
      <string>Source Han Mono K</string>
    </edit>
      </match>

<!-- Fallback fonts preference order -->
  <alias>
    <family>sans-serif</family>
    <prefer>
      <family>Noto Sans</family>
      <family>Source Han Sans CN</family>
      <family>Source Han Sans TW</family>
      <family>Source Han Sans JP</family>
      <family>Source Han Sans KR</family>
      <family>Noto Color Emoji</family>
      <family>Noto Emoji</family>
    </prefer>
  </alias>
  <alias>
    <family>serif</family>
    <prefer>
      <family>Noto Serif</family>
      <family>Source Han Serif CN</family>
      <family>Source Han Serif TW</family>
      <family>Source Han Serif JP</family>
      <family>Source Han Serif KR</family>
      <family>Noto Color Emoji</family>
      <family>Noto Emoji</family>
    </prefer>
  </alias>
  <alias>
    <family>monospace</family>
    <prefer>
      <family>Source Han Mono SC</family>
      <family>Source Han Mono TC</family>
      <family>Source Han Code JP</family>
      <family>Source Han Mono K</family>
      <family>Noto Color Emoji</family>
      <family>Noto Emoji</family>
    </prefer>
  </alias>
  
  
     <selectfont>
    <rejectfont>
      <pattern>
        <patelt name="family" >
          <!-- This font is causing problem with GitHub -->
          <string>Nimbus Sans</string>
        </patelt>
      </pattern>
    </rejectfont>
  </selectfont>

</fontconfig>

完整文件链接:
https://gist.github.com/plumlis/32ed3e293e6be2386715d69fb25a7878

文档的内容解释可以参考:Linux 下的字体调校指南 
https://szclsya.me/zh-cn/posts/fonts/linux-config-guide/
实际上我这个配置文件就是参考这篇文章调教出来的。

配置文件到位之后就可以注销重新登录了,就会发现字体显示已经基本优化的差不多了。

我这个文件的配置效果是贴合我自己的系统配置的,我是 Fedora Gnome 默认英文界面,所以这个配置文件的主要策略是:

你也可以尝试安装那些 Windows 下的“常见字体” Arial, Times New Roman 之类的,但是不是特殊需求我不建议。

sudo dnf install curl cabextract xorg-x11-font-utils fontconfig -y
sudo rpm -i https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm

当然还有传统的“文泉驿”系列字体,里面包括一些可以替代“宋体”的点阵字体。

sudo dnf install "wqy-*"

Flatpak 软件的字体渲染

当你正确配置字体渲染之后,你还会发现你通过 Flatpak 安装的软件的字体依然丑陋,似乎并没有正确应用你的字体渲染。

你可以尝试运行

flatpak --user override --filesystem=~/.config/fontconfig:ro

让 flatpak 程序读取你的 fontconfig 配置。

当然如果这一招无效的话,你就只能打开对应的 flatpak 程序的配置路径:

~/.var/app/[程序名字]/config

在里面创建一个 fontconfig 目录,把你前面的那个 ~/.config/fontconfig/fonts.conf 文件拷贝进去,然后重新启动 flatpak app 了。


安装常用插件:

打开 Gnome-shell 的扩展官方网站:

https://extensions.gnome.org/

第一次打开是需要提示你安装一个浏览器插件的,点击那个“Click here to install browser extension.”安装插件之后,就可以安装常用插件了,目前支持 Firefox 和 Chrome,Edge 不清楚,大概率不支持。

这里推荐一些我认为值得使用的扩展:

必装类:

支持任务栏插件,让你的 telegram 之类的 app 最小化之后能看到图标
https://extensions.gnome.org/extension/615/appindicator-support/

咖啡因插件,可以让你的电脑暂时避免睡眠
https://extensions.gnome.org/extension/517/caffeine/

GTK4版本的桌面图标插件,可以显示出桌面图标(Gnome 默认是没有桌面图标的)
https://extensions.gnome.org/extension/5263/gtk4-desktop-icons-ng-ding/

边缘操控扩展,允许你鼠标移动到屏幕底端自动出现 dock
https://extensions.gnome.org/extension/4222/hot-edge/

自动根据时间切换夜间和白天模式(还支持切换壁纸)
https://extensions.gnome.org/extension/2236/night-theme-switcher/

显示大小写锁定和各种锁定键的状态,可以设置为默认隐藏,只有锁定状态才显示
https://extensions.gnome.org/extension/36/lock-keys/

可显示电脑上的内存和CPU占用以及温度和当前功耗
https://extensions.gnome.org/extension/1460/vitals/

可选类扩展:

毛玻璃特效:可能会导致崩溃和性能下降
https://extensions.gnome.org/extension/3193/blur-my-shell/

窗口智能平铺插件
https://extensions.gnome.org/extension/3733/tiling-assistant/

老款桌面图标扩展,不如新款GTK4的整合好,但是性能好一些
https://extensions.gnome.org/extension/2087/desktop-icons-ng-ding/

Just Perfection:一个高度自定义插件,可以打开关闭所有窗口和特效
https://extensions.gnome.org/extension/3843/just-perfection/

可以在左上角顶栏实现类似 Windows 10/11 的 Dock 效果
https://extensions.gnome.org/extension/5180/rocketbar/

还有许多其他扩展都可以在网站上找到,可以自行用关键字搜索挖掘,不过我不建议安装太多,扩展安装的越多,系统被拖慢和稳定性降低的风险越大,越精简越好。

管理拓展

可以在 Fedora 默认程序列表里看到一个叫做“拓展”(extensions)的软件,运行之后就可以管理你已经安装的扩展,也可以对扩展进行设置和卸载,许多扩展的设置窗口都隐藏在这里。

这里值得注意的是 Fedora 默认其实也装了几个扩展,属于系统预装,我认为没有打开的必要。但是那个叫做 Fedora Logo 的可以尝试一下,在桌面上打一个水印 Logo 我个人觉得还是挺好看的。


安装 Fcitx5 中文/日文输入法

理论上 Gnome 的原生输入法应该是 iBus,我也尝试过,但无奈这 iBus 太烂了,主要烂的地方有三点:

1,输入速度过快的话经常会卡死,一直有人报 Bug,官方也一直在优化,但优化了那么多年,还是会卡死……

2,对 QT 程序支持欠佳,许多 QT 程序中都无法启用输入法,别问,问就是让你换 GTK 的程序

3,Fedora 默认打包没有开启“云拼音”。这个是最抽象的,iBus 的拼音是支持云拼音输入法的,但是 Fedora 打包的时候给禁用了,理由是“不开源,涉嫌隐私问题”,而且它们还没有给用户一个选择的空间,比如在 rpmfusion 上提供一个开放的版本什么的,你想开启云输入法,就得自己编译,太傻逼了这个……

所以各方面权衡之下,我还是建议所有的 Gnome 用户使用 fcitx5 输入法,因为它目前的确是输入的最优解。

安装也很简单:

sudo dnf install fcitx5-chinese-addons fcitx5-autostart

想要日文输入法的话就安装:

sudo dnf install fcitx5-mozc

安装完毕后默认注销登陆其实输入法应该就可以用了,但是输入窗口可能会比较丑陋,建议安装一个属于 Gnome 的扩展来进行美化:

https://extensions.gnome.org/extension/261/kimpanel/

注销登陆后就可以看到输入窗口已经符合 Gnome 的默认风格了,系统更融合。

不过这个扩展默认的字体有点丑,建议在扩展中将字体改为 Noto Sans CJK SC Regular,经过测试发现只有这个字体在快速输入的时候不会出现窗口乱跳的问题。

Fcitx5 本身也有许多设置和玩法,具体可以网上搜索,包括输入 emoji,导入大词库之类的,不要忘记打开云输入,可以选择使用百度云。


安装一些基本软件:

中文字体和输入法都配置好了,是时候安装一些基本软件了,一些十分基础的我们用 RPM 安装,其他的使用 flatpak,尽可能使用 flatpak 可以让你在升级的时候遇到更少的问题。

安装罗技鼠标控制软件 solaar(仅仅支持罗技鼠标)

sudo dnf install solaar

安装 GKT4 终端 Blackbox

flatpak install flathub com.raggesilver.BlackBox

安装 Typora 文本编辑器

flatpak install flathub io.typora.Typora

如果 Typora 收费你不喜欢,那可以选择 Ghostwriter

flatpak install flathub org.kde.ghostwriter

安装常用软件

sudo dnf install vlc filezilla remmina easytag  file-roller

VLC 播放器、filezilla FTP 工具,remmina 远程桌面, easytag 音乐 IDTag 编辑工具,file-roller 是解压缩工具,都可自行选择安装。

至于常用的浏览器我建议用 Firefox,截图软件建议用 Gnome 自己的,已经足够强大了。

这里在推荐一些用得到的工具:

GPU Screen Recorder (一款直接读取 GPU 信息的推流/录屏工具,占用较低)

flatpak install flathub com.dec05eba.gpu_screen_recorder

Rustdesk (一款不错的远程工具,类似向日葵或 todesk,建议下载 flatpak 版本)

https://github.com/rustdesk/rustdesk/releases

微信 Flatpak 版本

flatpak install flathub com.tencent.WeChat

Steam(虽然RPMFusion 里也有,但是我个人觉得 flatpak 版本更好)

flatpak install flathub com.valvesoftware.Steam

Celluloid:MPV前端视频播放器

flatpak install flathub io.github.celluloid_player.Celluloid

网易云播放器

flatpak install flathub io.github.qier222.YesPlayMusic

Mortix下载工具

flatpak install flathub net.agalwood.Motrix

LinuxQQ

flatpak install flathub com.qq.QQ

剪辑软件 KdenLive

flatpak install flathub org.kde.kdenlive

还有微软的两件套:Edge 与 Vscode

https://www.microsoft.com/en-us/edge/download
https://code.visualstudio.com/download

以及 Google 的 Chrome

https://www.google.com/chrome/

都可以直接下载 RPM 格式安装即可。

更多的新软件可以经常去 flathub 转转,经常会有新发现:

https://flathub.org/


安装纯净版 WPS Linux

虽然 WPS 有 Linux 版本,但是中文版与英文版之间是有差别的,中文版的 WPS Linux 是捆绑的有云服务的,运行起来十分恶心。但是英文版就没有这些,所以我们只需要安装一个英文版,然后把中文语言包拷贝进去,切换为中文就行了。

先下载英文版并安装,下载 rpm 版本:
https://www.wps.com/office/linux/

然后再下载中文版,架构要对应,这里其实 deb 或 rpm 都无所谓,只需要下载后解压缩,找到压缩包中对应的路径

/./opt/kingsoft/wps-office/office6/mui/

可以在里面看到大量多国语言,解压缩提取后,用 root 权限,拷贝到你已经安装的 WPS Linux 英文版的目录下:

/opt/kingsoft/wps-office/office6/mui/

然后修改配置文件 ~/.config/Kingsoft/Office.conf

[General]
languages=
PersistentStatus=0

修改为

[General]
languages=zh_CN
PersistentStatus=0

再次启动 WPS 即可,今后更新也不会受到影响。

参考:
https://gist.github.com/YcSmile/039024e79b9d7dca38e80fdca7890620

启动 WPS 如果提示字体缺失,可以在这里下载补全:
https://github.com/dv-anomaly/ttf-wps-fonts

最新版 WPS Linux 有粗体显示不正常的问题,可下载这里的补丁解决:
https://bbs.deepin.org/post/270242

下载 DEB 后解压缩,把文件拷贝到对应的 opt 目录下就行了。


启用 VA-API 视频加速

由于版权原因,Fedora 移除了许多视频加速的支持,但是 RPMFusion 是可以加回来的:

sudo dnf install mesa-va-drivers-freeworld mesa-vdpau-drivers-freeworld
$ sudo dnf swap mesa-va-drivers mesa-va-drivers-freeworld
$ sudo dnf swap mesa-vdpau-drivers mesa-vdpau-drivers-freeworld

安装其他解码器

$ sudo dnf groupupdate multimedia --setop="install_weak_deps=False" --exclude=PackageKit-gstreamer-plugin
$ sudo dnf groupupdate sound-and-video
$ sudo dnf install @multimedia @sound-and-video ffmpeg-libs gstreamer1-plugins-{bad-\*,good-\*,base} gstreamer1-plugin-openh264 gstreamer1-libav lame\*

参考:
https://kcore.org/2022/12/01/fedora37-codecs/

值得一提的是每次 mesa 版本更新,因为 rpmfusion 对应的这个 freeworld 包更新滞后可能会出现更新依赖错误,只需要等几天再更新就行了。


使用 iwd 来作为 Wi-Fi 管理后端

iwd 是 Intel 官方的一个 Wi-Fi 管理模块,对于 Intel 无线网卡来说有着更好的性能和稳定性,仅推荐 Intel 无线网卡用户尝试,如果你不清楚你的网卡是不是 Intel,那就不要盲目修改了。

$ sudo dnf install iwd
$ echo -e "[device]\nwifi.backend=iwd" | sudo tee /etc/NetworkManager/conf.d/10-iwd.conf
$ sudo systemctl mask wpa_supplicant

修改后重启生效,你可能需要重新添加以下你曾经添加过的无线网络。老无线和新无线可能还会有名字上的冲突,建议删除老的添加新的。

如果重启后发现效果不尽如人意,你可以还原默认的后端:

$ sudo rm /etc/NetworkManager/conf.d/10-iwd.conf
$ sudo systemctl unmask wpa_supplicant

参考:
https://thedestitutedeveloper.blogspot.com/2021/01/enabling-iwd-on-fedora-33.html


笔记本续航配置

目前 Linux 下笔记本续航优化的方法主要是 TLP 这一个方式,其他的大多数都和 TLP 没什么区别。

而在 Fedora 下,尤其是 Gnome 环境,我认为只需要启用自带的 Powertop 优化服务就足够了。

首先安装 Powertop

sudo dnf install powertop

然后启用服务

sudo systemctl enable powertop.service

可以自行查看目前的整机功耗

sudo powertop

为什么我说 TLP 没有必要呢。因为目前 TLP 的优化方式就是通过内核尽可能的用压缩电脑性能释放的方式来换取续航,而且换来的大多数也是“待机续航”,在机器全速运转的时候续航并没有什么变化。现阶段 Linux 笔记本的功耗调整都是围绕针对屏幕 PSR2 的支持与否,还有及其本身外围功耗,乃至 CPU 的运转策略来进行的。前两者我们几乎做不了什么,只能看机器本身是否兼容,后者的 CPU 功耗调整其实也就一行命令的事情,而这件事情 Gnome 自带的调整就做的足够好了。

尤其是在 power-profiles-daemon 0.21 的时候,同样的“平衡”策略,会根据机器插电与否自动进行调整,插电的时候性能好一点,不插电的时候续航好一点。如果真的要性能火力全开,就自行调整到“性能”档即可。

至于其他的优化手段,auto-cpufreq 什么的,本身也是用降频换性能,我认为没必要为了提升一点续航,把笔记本自身的性能阉割成太监,这样就得不偿失了。


安装 BTRFS 快照管理

首先安装工具:

sudo dnf install btrfs-assistant

之后就可以在 app 里看到这个程序了。

因为 btrfs 文件系统都是 COW 的(Copy on Write),所以进行快照和备份十分容易,用这个工具可以很方便的进行快照备份。

默认的 btrfs 安装是分两个卷挂载的,一个是根目录 root,一个是用户目录 home,两个卷都可以独立快照备份和恢复,用这个工具操作可谓是十分简单了。

该工具甚至支持自动备份和快照,不过我不建议,有时候快照会导致 flatpak 的程序运行缓慢,需要重启恢复。


虚拟机选择:Gnome Box

Linux 下的虚拟机选择有很多,包括知名的 virtualbox,还有 vmware,以及 Gnome 自带的 Gnome-box。

接下来说说为什么 Gnome-box 会成为我的选择,首先是如果你使用 virtualbox 或者 vmware 之类的话,你的电脑需要关闭 secure boot,不然内核编译模块就会失败,要么你每次更新内核都手动签名,要么你就别用。

而 Gnome-box 是基于 KVM 的,自然也就不受到这个限制。

如果系统没有的话记得安装:

sudo dnf install gnome-boxes

而且理论上 KVM 的性能是优于 Virtualbox 之类的,所以就更应该使用 KVM 了,不过目前 KVM 最大的问题是模拟 Windows 效果一般。倒不是不能模拟,依然是图形性能驱动无法满足,这里建议使用 QXL 之类的 2D 加速驱动来运行 Windows,如果真的需要高级 3D 性能,只能显卡直通了。

至于模拟 Linux,性能好的很。

如果对 Gnome-box 的界面过于简洁搞不清楚,可以安装另一个控制 GUI:

sudo dnf install virt-manager

这样就能看明白了。


安装剪切板管理 Gpaste

Linux 下的剪切板管理工具很多,有跨平台的 CopyQ,有许多拓展也支持,但我还是最推崇 Gpaste 这个工具。

原因也很简单,这个工具足够稳定,是使用后台服务的方式运行的,而不是单纯的使用插件来记录,同时这个插件和 Gnome 也属于深度整合,作为 Gnome 用户自然也是首选。

安装方式:

sudo dnf install gpaste

之后记得在扩展程序中启用 gpaste 的扩展。


Telegram 的三种安装方法

Telegram 作为一款跨平台聊天软件,在 Fedora 上的安装方法有三个:

1,通过 RPMFusion 安装:

sudo dnf install telegram-desktop

这种安装方法属于 Fedora 二次打包,似乎会丢失一些新功能,也不能开启 Beta。

2,通过 Flatpak 安装:

flatpak install flathub org.telegram.desktop

3,直接官网安装:

https://desktop.telegram.org/

下载 Linux 包,自己写快捷方式。我用的是这个方法,可以开启 Beta 频道自动更新。需要你自己把运行程序放到 opt 目录下,并且给写入权限。


启用 GTK4 的 Vulkan 后端

如果你使用 wayland ,从 Fedora 40 版本开始,你可以启用新的 GTK 渲染后端 Vulkan,带来更优秀的性能。

sudo nano /etc/environment

增加内容:

GSK_RENDERER=vulkan

保存后重启,打开 nautilus 文件管理器,按下 ctrl+shift+I,可以查看后端已经变成了 vulkan。


一些 Fedora 相关的进阶技巧:

更新 Update-testing 软件包。

Fedora 是有一个测试频道的,就是即将进入正式源的软件会在这里先测试,然后再进入。

而用户除了手动打开测试源之外,还可以用命令手动更新:

sudo dnf update --enablerepo=updates-testing --refresh

这么操作之后系统会成为更新的版本,虽然标注 testing,但本质上还算稳定,我很少出现问题。

通过 bodhi 追踪最新软件包:

你可以打开这里来了解最新的软件包,了解那些软件即将更新新版本:

https://bodhi.fedoraproject.org/updates/?releases=F40

其中最后的 F40 代表 Fedora 40,可以根据需求自行修改。

你也可以积极参与新软件包的测试,比如使用 bodhi 命令下载测试包:

bodhi updates download --updateid ID

下载后使用命令手动更新:

sudo dnf update *.rpm

同样,你也可以去 Fedora 的 koji 打包管理追踪最新的包,譬如可以使用这个链接追踪最新的内核:

https://koji.fedoraproject.org/koji/packageinfo?packageID=8

查询到最新的软件包名称之后就可以直接下载下来:

koji download-build --arch=x86_64 kernel-6.8.6-300.fc40

下载后使用命令手动更新:

sudo dnf update *.rpm

有问题的话可以及时在 bodhi 的页面进行反馈和评分,会影响到这个包是否推送到正式通道。

同样你还可以时刻关注 Fedora 的最新日志,包括最新软件和模块的测试活动:

https://pagure.io/fedora-qa/issues

当然别忘了关注官方宣传博客:

https://fedoramagazine.org/

里面会有最新的技术文章和公告。

Fedora 也有类似 Ubuntu PPA 的第三方源,被称作 Copr

https://copr.fedorainfracloud.org/

你可以在上面找到一些临时性的打包,不过我个人不建议随便尝试,且目前也没有尝试的必要了。


进行 Fedora 大版本更新

每当 Fedora 发布新版本进入 Beta 之后,你就可以把现在的系统升级到最新的 Beta 了。升级的方法也十分简单:

sudo dnf upgrade --refresh
sudo dnf install dnf-plugin-system-upgrade
sudo dnf system-upgrade download --releasever=40
sudo dnf system-upgrade reboot

其中“40”代表你要升级到的版本号,比如你要从 Fedora 39 升级到 Fedora 40,就可以用上面的命令,如果你需要从 Fedora 40 升级到 Fedora 41,则需要把“40”改为“41”。

原则上是不支持跨版本升级的,不过有人这么做成功过,但我还是不建议。要升级的话就一个版本一个版本的升级,Fedora 本身一个版本的寿命只有 13 个月,也就是一年多,如果超过这个时间,你的系统版本就需要更新了。而 Fedora 本身则是 6 个月发布一个新版本,所以我还是建议每次正式版发售之后就紧跟更新,以享受最新的 Gnome 版本特性,和更多的功能。

查看当前 Fedora 版本生命周期:
https://docs.fedoraproject.org/en-US/releases/eol/

通过 dnf 升级 Fedora 大版本一般来说是不会出现什么问题的,而且有问题也会在升级之前就告诉你,你甚至可以通过 btrfs 先创建快照,如果升级失败了再还原就是了。

大部分问题就是某个软件包冲突,或者某个软件包通过 copr 安装,那个 copr 不再支持新版本,这种方式最佳做法就是暂时删掉这个软件,等升级后重新安装。

还有一个常遇见的情况就是大版本更新后,Fedora 的 Gnome 也升级了,你之前安装的拓展都已经失效了,这就需要你自己去观察了,在升级之前去 https://extensions.gnome.org/ 查看你的拓展在版本号一栏是否已经支持了新的版本,或者通过拓展的 github 链接访问,看看作者有没有更新新版本的计划。如果实在没人更新的话,那就只好放弃了。

这也是为什么我说近可能要少用冷门扩展,还有少用拓展的原因,避免你每次升级都会炸掉。


心得:使用 Gnome 要顺从,而不是反抗

Gnome 3 在发布的时候基本上是人见人骂,一方面本身的操作习惯反人类,另一方面是性能也有问题,经常卡顿和内存泄漏。而经过这么多年的发展,Gnome 已经基本稳定了,除了它们那动不动乱改的插件接口,大体日用也是没什么问题的。

但很多人一直不愿意适应 Gnome-shell 的操作逻辑,总是想要用各种拓展把它魔改,带来的反而是适得其反的效果。

我只能说如果你喜欢“类 Windows”的操作方法,你可以使用 KDE,哪怕你喜欢 MacOS 的风格,KDE 也是一个不错的选择,毕竟支持高自定义的 KDE 可以把自己变得和 MacOS 一模一样。

而对于 Gnome 来说,这样的道路是行不通的,你只能顺从 Gnome 的设计理念,才能感觉得心应手。

比如 Gnome 默认没有最小化,是鼓励你开多个工作区,最好每个工作区一个主窗口,使用键盘或触摸板快捷键快速切换工作区实现窗口之间的切换。

比如 Gnome 默认隐藏 Dock(它们叫 Dash),是希望你使用触摸板或者 Win 键(它们叫 Super 键)来快速呼出 APP 栏目,而且许多快捷键之间的关联也很不错,包括 Win + 1 2 3 4 5 6 7 对应 Dock 上的前几个 APP 之类的,还有 Win + 上 下 左 右,都有对应的窗口操作,一旦熟悉的话对效率还是很有提高的。

当然目前我依然不能明白的就是为什么要取消“tray icon”,或许 Gnome 认为程序就不应该最小化,又或许 Gnome 认为这些程序都应该使用类似 gpaste 的扩展方式来处理?当然至少目前为止我们可以用拓展实现它。

我对 Gnome 用了尽可能小的自定义,几乎没有改动原系统的配置,使用了默认的字体,默认的主题,默认的图标,还有默认的窗口布局。

唯一有所修改的就是我用 vital 显示了目前系统的占用信息,把它固定到了顶栏的左侧,因为我觉得那里太空了,总要留点什么。

哦对了,如果你是小白用户的话,你没必要天天更新系统,而且尽可能使用“软件中心”来更新你的系统组件,这样会更加安全,大大降低系统崩溃的可能性。


尾声和一些福利:

使用 Fedora 已经有快 3 年了,使用 Gnome 也已经有快 4 年了,整体来说我还是满意的,或许我是受虐狂已经适应了。

用久了发现 Fedora 这个发行版挺不错的,社区氛围也比较纯粹,有 Bug 报上去也有人修,软件版本更新也快,极度贴近上游,就是你昨天在 Linux 新闻看到什么新特性,没准过几天就可以在 Fedora 用上的那种水平,完全是 Gnome 的“亲儿子”水平。比起 Ubuntu 万年不修非主流软件 Bug 这一点,实在是好太多。

而且 Fedora 本身也没有什么商业背景,不会有 Ubuntu 那样莫名其妙的广告插入,更新也很顺利,用下来也是越用越顺手,我从 Fedora 35 开始已经没有重装坚持更新到现在的 Fedora 40,一路下来也很顺利,这是一个值得好好使用的系统。

而且因为 Fedora 和 Red Hat 的关系,还有很多礼物可以白嫖,每过一阵都会有一些关于 Fedora 的会议,可以通过注册在线观看的方式,赢取一些纪念品,比如我就拿到了一些 Fedora 的贴纸,衣服,还有系统 U 盘和各种徽章,这也算使用 Fedora 的一种福利吧,只需要持续关注 Fedora 的官方新闻就可以得到这些。

这里展示一下我收到的 Fedora 纪念品,还有官方的衣服:


希望这篇文章能帮助到那些想要使用 Fedora + Gnome 的人们。

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »