Fedora 40 インストール・設定マニュアル

広告

この記事はすでに Fedora 42 版に更新済み: /archives/14050/

ただしこの記事にも読む価値はある。まずこの記事の考…考え方を読んでから、新版の操作を見てほしい

広告

このブログの古い読者は知っているかもしれないが、以前の私は筋金入りの Ubuntu ユーザーで、Gnome-Shell デスクトップ環境を使い、KDE や ArchLinux の非合理的なユーザーをネタに笑い者にするのを楽しんでいた。もちろん 2021 年の時点で、実はメインのディストリビューションを Ubuntu から Fedora に移し始めていた。「試しに」のつもりが、止まらなくなって今に至る。

というわけでこの、説明書兼マニュアル的なガイド記事が生まれた。主な目的は、Fedora のインストール方法・使い方・調整方法がわからないユーザーを助け導き、迷いや困惑を取り除くこと。あわせて自分の使用経験を共有し、より多くの人の役に立てばと思っている。

もちろん私心もある。自分の設定過程を記録して、将来自分で参照するためのメモにしたいのだ。

Screenshot from 2024-04-10 16-55-58.png

なぜ Fedora なのか?

本文に入る前に、なぜ私が Ubuntu を捨てて Fedora に移ったのかを説明すべきだろう。まず Ubuntu 側はここ数年、自社の snap パッケージ形式を無脳に推し進めている。この形式が悪いとは言わないが、起動速度や更新など明らかな限界がある。一番許せないのは、Canonical(Ubuntu の背後企業)が Snap を普及させるため、多くの機能が未完成のままデフォルトアプリのインストールパッケージを強引に Snap に置き換えたことだ。典型例がデフォルトの Firefox ブラウザを Snap 版に変えたこと。しかもユーザーが自分で deb 版 Firefox を入れようとすると様々な妨害をしてくる。

Snap 版 Firefox 自体の問題も多い。フォントレンダリングだの、通知プッシュ非対応だの……ブラウザの実行中に更新すらできない。ある PC で半年以上粘ったが、さすがに無理だった。

しかも Snap は Ubuntu Server 版まで害し始めている。Snap で CLI ソフトをパッケージできるのはある種便利だと理解しているが、何もかも Snap 経由にしろと言われると吐き気がする……特に Flatpak がほぼ業界の事実上の標準になりつつある前提で、それでも Snap を強推するのは本当に気持ち悪い。

さらに Ubuntu 24.04 LTS が Snap 強推の路線をさらに強化すると知り、元 Ubuntu ユーザーには Fedora を試すよう、より強く勧めるようになった。

愚痴はこれくらいにして、なぜ Fedora Workstation を選んだのか、Arch や Gentoo、Debian、NixOS、OpenSUSE ではなく、についても話しておこう。まず個人的に、いわゆる「ローリングリリース」版はあまり好きではない。概念としては美しく聞こえるが、もたらされるのは多くの使用上の隐患だ。最典型はよく「ローリングで壊れる」こと。もちろん「壊れてもすぐドキュメントを見て直せる」と言うかもしれないが、「安定した作業環境」を必要とする私のような人間にとって、突然の「ローリングで壊れる」は PC が使えなくなることを意味し、それを修復する時間を確保できる保証もない。もちろん時間に余裕がある人や、「サブ機」で Linux を試す人は、Arch や Gentoo、あるいは Debian のようなシステムを使う意味はある。

NixOS や Fedora SilverBlue のような「イミュータブルディストリビューション」も最近流行っているが、まだ成熟していないと思うし、ユーザーにとってはある種の「矛盾感」がある。私の見方では「イミュータブル」はどちらかというと「PC にあまり詳しくない」初心者向けのシステムだ。十分に安全で信頼できるからだ。しかし私のように頻繁にシステムを設定するユーザーにとっては、「イミュータブル」がもたらすのは制約と不便ばかりだ。なぜわざわざそんなシステムを選ぶ必要がある?スナップショットでよくないか?しかも現段階の「イミュータブル」ディストリビューションの、コンテナで別システムを入れる操作自体、普通のディストリビューションでもできる。何の優位性もない。つまり今はまだ「遊びやすさ>使いやすさ」で、遊ぶにはいいがメイン機としては未成熟だ。

Fedora は現在 Red Hat の後ろ盾があり、ソフトウェアの開発プロセスや各種バグの修正速度、特に Gnome 系コンポーネントの更新部分では Ubuntu よりはるかに優れている。Ubuntu のように Debian から持ってきたパッケージにバグがあり、後から誰も直さず管理もされず、PPA を探すしかないという気まずい状況はない。私も Gnome ユーザーなので、Fedora は Gnome 環境の「実の子」待遇とも言え、使うのは当然だ。


Fedora は実験場?モルモット用?不安定?

Fedora についての噂は多いが、一番多いのはこの二つだ:

「Fedora は新技術の実験場で、モルモットユーザー向けだ。」

「Fedora は特に過激で、だから不安定だ。」

前者はまあ正しいが、後者は議論の余地がある。Fedora が新技術を積極的に使うのは確かで、Linux の多くの新機能をいち早く取り入れ、すぐ正式版に載せる。Wayland、btrfs、最新版の Gnome-shell などだ。しかしそれは「不安定」とは違う。

Fedora の正式版では、すべてのパッケージがそれぞれの「正式版」だ。Fedora が Beta 版コンポーネントを梱包したことなど一度もない。例えば Fedora 40 には、mutter から gnome-shell、テキストエディタからターミナルまで、Gnome のコンポーネントはすべて正式版のバージョン番号だ。各種依存の小コンポーネントも全部正式版。みんな正式版なのに、どうして「不安定」と言える?多くの人が好む「ローリングディストリビューション」も、絶えずシステムコンポーネントの正式版をローリング更新している。理論上 Fedora と各種「ローリング」Linux の安定性は同程度か、むしろ前者のほうが少し良いはずだ。どこが「不安定」なのか?

もちろん多くのコンポーネントの新版にはバグがあるが、新バグはユーザー報告も速く、修正も速い。無茶しなければ Fedora 自体は十分安定している。

また Fedora の dnf 更新ツールは、バージョン跨ぎ更新の際もより信頼できる。私はすでに何度も大きなバージョン更新をしており、問題はない。


なぜ私の Fedora / Linux はいつも不安定なのか?

まず、Nvidia のグラフィックカードを使っていないか?

ほとんどの人が Linux システム不安定や更新で壊れる根源は、Nvidia グラフィックカードのクローズドソースドライバだ。個人的には対処できるが、Linux に不慣れなユーザーには、Nvidia グラフィックカードの PC に各種 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 技術は十分成熟しており、各種 Android スマホでも多く使われている。デフォルト有効でいい。わざわざ 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 デフォルトのフォントレンダリングは「グレースケール」+「ライト」方式だ。ネットの多くのチュートリアルは「RGBサブピクセルレンダリング」に変えろと言うが、個人的にはあまり勧めない。一方ではこの方法は名目上すでに時代遅れで、フォントレンダリングは GTK4 以降継続的に最適化されており、「非整数スケーリング」をよりよくサポートするため、またフォントの鮮明度を上げるため、これらはすべて「グレースケール」+「ライト」に向けて行われており、「RGBサブピクセルレンダリング」では享受できない。もう一方でこの「サブピクセルレンダリング」は他の問題ももたらす。特にタブレットなどで横画面から縦画面にするとフォントが「まだら」で「ぼやける」のは、このレンダリングの弊害だ。同時に MacOS デバイスもとっくにこのレンダリング方式を捨てている。使い続ける必要はない。

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

この解決方法は Fontconfig を自分で書いて対応できる。後で説明する。

次に字形異常表示。

これは多くの人が言及している。思源黑体(Source Han Sans)はシリーズで、「中日韓」複数言語向けの集合体だ。このフォントは多くの字形コードが共通で、プログラムが漢字が中国語か日本語か、繁体字中国語か簡体字中国語か区別できず、表示エラーになる。

これも Fontconfig ファイルで解決できる。

もう一つ非常に一般的な問題:英語と中国語フォントが混在表示されるときの高さ不揃い。

この根源もやはり「思源黑体」にある。フォント自体に「ベースライン」設定があり、この基準線で水平を揃えるが、厄介なことに「思源黑体」の「ベースライン」の下に巨大な空白があり、英語と一緒に表示すると高さがバラバラで気まずい。幸い一部のプログラム、特に UI 表示部分だけで、ウェブページなど大部分は正常だ。

解決は簡単だ。中英文のベースライン表示に完璧に合うフォントを探し、Fontconfig で対応する。そんなフォントがあるか?ある。Huawei の HarmonyOS からの HarmonyOS Sans だ。

この問題は「英語環境」にのみ存在するらしく、中国語環境では OK だ。表示に問題がなければ変更の必要はない。

最後に私を長く悩ませた持病:システムメニューバーとロック画面の時計の幅問題。

Gnome-Tweak などでシステムフォントを「MS ゴシック」など好みのフォントに変えると、気まずい光景が現れる。メニューバーの時計が広がり、ロック画面の時計も広がる。特に真ん中の「コロン」の占める面積が異常に大きい。

IMG_20200410_162542.jpg

もちろんこの問題も多くの人が報告している: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2618

原因も面白い。時計中央の「コロン」はいわゆる「コロン」ではなく「Ratio」文字、つまり「比率」文字だ。試合のスコアの「対」の真ん中の文字に似ている。多くのフォントでこの文字は広めに表示され、「狭く」表示するフォントは少ない。その「少数」に Gnome-shell のデフォルトフォント Cantarell が含まれる。

つまり時間の間隔を正常に表示したければ、デフォルトの Cantarell フォントしか使えない。

これを解決するにはやはり Fontconfig で何とかする。

では設定を始める:

まず HarmonyOS 公式ドキュメントから Harmony OS Sans フォントをダウンロード:

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

フォントをホームディレクトリの ~/.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>Noto Sans CJK SC</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>Noto Sans CJK SC</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>Noto Serif CJK SC</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>Noto Sans Mono CJK 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>Noto Sans CJK SC</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>HarmonyOS Sans SC</string>
      <string>Noto Sans CJK SC</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>Noto Serif CJK SC</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Serif CJK SC</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>Noto Sans CJK SC</string>
    </test>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>zh-CN</string>
    </test>
    <test name="family">
      <string>Noto Serif CJK SC</string>
    </test>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>zh-CN</string>
    </test>
    <test name="family">
      <string>Noto Sans Mono CJK SC</string>
    </test>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>zh-HK</string>
    </test>
    <test name="family">
      <string>Noto Sans CJK SC</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>Noto Serif CJK SC</string>
    </test>
    <edit name="family" binding="strong">
      <!-- not have HK -->
      <string>Noto Serif CJK TC</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>zh-HK</string>
    </test>
    <test name="family">
      <string>Noto Sans Mono CJK 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>Noto Sans CJK SC</string>
    </test>
    <edit name="family" binding="strong">
      <string>Noto Sans CJK TC</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>zh-TW</string>
    </test>
    <test name="family">
      <string>Noto Serif CJK SC</string>
    </test>
    <edit name="family" binding="strong">
      <string>Noto Serif CJK TC</string>
    </edit>
  </match>

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

  <match target="pattern">
    <test name="lang">
      <string>ja</string>
    </test>
    <test name="family">
      <string>Noto Sans CJK SC</string>
    </test>
    <edit name="family" binding="strong">
      <string>Noto Sans CJK JP</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>ja</string>
    </test>
    <test name="family">
      <string>Noto Serif CJK SC</string>
    </test>
    <edit name="family" binding="strong">
      <string>Noto Serif CJK JP</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>ja</string>
    </test>
    <test name="family">
      <string>Noto Sans Mono CJK SC</string>
    </test>
    <edit name="family" binding="strong">
      <string>Noto Sans Mono CJK JP</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>ko</string>
    </test>
    <test name="family">
      <string>Noto Sans CJK SC</string>
    </test>
    <edit name="family" binding="strong">
      <string>Noto Sans CJK KR</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>ko</string>
    </test>
    <test name="family">
      <string>Noto Serif CJK SC</string>
    </test>
    <edit name="family" binding="strong">
      <string>Noto Serif CJK KR</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="lang">
      <string>ko</string>
    </test>
    <test name="family">
      <string>Noto Sans Mono CJK SC</string>
    </test>
    <edit name="family" binding="strong">
      <string>Noto Sans Mono CJK KR</string>
    </edit>
      </match>

<!-- Fallback fonts preference order -->
  <alias>
    <family>sans-serif</family>
    <prefer>
      <family>Noto Sans</family>
      <family>Noto Sans CJK SCNoto Sans CJK SC</family>
      <family>Noto Sans CJK TC</family>
      <family>Noto Sans CJK JP</family>
      <family>Noto Sans CJK KR</family>
      <family>Noto Color Emoji</family>
      <family>Noto Emoji</family>
    </prefer>
  </alias>
  <alias>
    <family>serif</family>
    <prefer>
      <family>Noto Serif</family>
      <family>Noto Serif CJK SC</family>
      <family>Noto Serif CJK TC</family>
      <family>Noto Serif CJK JP</family>
      <family>Noto Serif CJK KR</family>
      <family>Noto Color Emoji</family>
      <family>Noto Emoji</family>
    </prefer>
  </alias>
  <alias>
    <family>monospace</family>
    <prefer>
      <family>Noto Sans Mono CJK SC</family>
      <family>Noto Sans Mono CJK HK</family>
      <family>Noto Sans Mono CJK JP</family>
      <family>Noto Sans Mono CJK KR</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 のデフォルト英語インターフェースなので、この設定ファイルの主な戦略は:

  • システムデフォルトフォント設定は一切変更しない。デフォルト UI フォントは Cantarell、ターミナル等幅フォントは Source Pro、素材そのままを追求。
  • 英語 UI 部分は Cantarell を優先し、時計の「:」が正しく表示されるように。その他の部分の中国語、システム UI やデスクトップアイコンなどは HarmonyOS Sans SC フォントを呼び出し、表示が同じ水平線上に揃い、高低がバラバラにならないように。
  • その他環境のデフォルトフォント(Firefox や他アプリなど)は「思源黑体」のロジックに従い、cn コンテンツは簡体字中国語、tw/hk は繁体字中国語、jp は日本語、kr は韓国語などを表示。
  • デフォルトレンダリングはグレースケール+ライト/なしの組み合わせで、正しいレンダリング効果を確保。
  • その他 emoji レンダリングの最適化も少し。
  • フォントレンダリング順序の優先度を設定し、よくあるウェブ CSS のフォント置換を行う。例えば Apple フォントや Microsoft フォントは思源黑体で表示するなど。
  • 中国語システム環境では英語と中国語フォント間の高低不揃い問題はないと言う人もいるが、私の fontconfig もそれには影響しない。英語向けの専用フォント設定を書いただけだから。

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 などのアプリを最小化してもアイコンが見えるように https://extensions.gnome.org/extension/615/appindicator-support/

カフェイン拡張。PC のスリープを一時的に回避 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/

CapsLock など各種ロックキーの状態を表示。デフォルト非表示、ロック状態のみ表示にも設定可 https://extensions.gnome.org/extension/36/lock-keys/

PC のメモリ・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)というソフトがある。起動すればインストール済みの拡張を管理でき、設定やアンインストールもできる。多くの拡張の設定画面はここに隠れている。

Screenshot from 2024-04-16 18-48-22.png

ここで注意したいのは、Fedora には実は拡張がいくつかプリインストールされていることだ。システム同梱のもので、有効にする必要はないと思う。ただ「Fedora Logo」というのは試してみる価値がある。デスクトップにウォーターマークのロゴを置くのは、個人的にけっこう可愛いと思う。


Fcitx5 の中国語/日本語入力の導入

理論上、GNOME のネイティブ入力メソッドは iBus のはずだ。自分も試したが、この iBus がとにかくダメだった。ダメな点は主に三つ:

1、入力が速すぎるとよくフリーズする。バグ報告もずっとあるし公式もずっと最適化しているが、何年最適化してもまだフリーズする……

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 に変えるのがおすすめだ。テストしたところ、このフォントだけは高速入力時にウィンドウが暴れない。

Screenshot from 2024-04-16 18-48-55.png

Fcitx5 自体にも多くの設定や遊び方がある。emoji 入力や大きな辞書のインポートなど、詳しくはネットで検索してほしい。クラウド入力も忘れずにオンにしよう。Baidu クラウドを選べる。


基本ソフトのインストール:

中国語フォントと入力メソッドの設定が終わったので、そろそろ基本ソフトを入れよう。ごく基本的なものは RPM で、それ以外は flatpak で。なるべく flatpak を使うと、アップグレード時にトラブルが少なくなる。

Logicool マウス制御ソフト solaar をインストール(Logicool マウスのみ対応)

sudo dnf install solaar

GTK4 ターミナル 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

WeChat の 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

NetEase Cloud Music プレイヤー

flatpak install flathub io.github.qier222.YesPlayMusic

Motrix ダウンロードツール

flatpak install flathub net.agalwood.Motrix

LinuxQQ

flatpak install flathub com.qq.Discord

編集ソフト KdenLive

flatpak install flathub org.kde.kdenlive

あと Microsoft の二点セット: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 パッケージの更新が遅れて依存関係エラーが出ることがある。数日待ってから更新すればいい。


Wi-Fi 管理バックエンドとして iwd を使う

iwd は Intel 公式の Wi-Fi 管理モジュールで、Intel の無線 NIC では性能と安定性が良い。Intel 無線 NIC ユーザーにのみ試すことをすすめる。自分の NIC が 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


ノート PC のバッテリー設定

現在 Linux でのノート PC バッテリー最適化の方法は主に TLP で、他も大体 TLP と変わらない。

Fedora、特に GNOME 環境では、標準の Powertop 最適化サービスを有効にするだけで十分だと思う。

まず Powertop をインストール

sudo dnf install powertop

そしてサービスを有効化

sudo systemctl enable powertop.service

現在の消費電力を自分で確認できる

sudo powertop

なぜ TLP が不要だと言うのか。現在の TLP の最適化は、カーネルを通じてできるだけ PC の性能を圧縮してバッテリーを稼ぐ方式で、稼げるのはほとんど「待機時のバッテリー」だ。マシンが全速で動いているときのバッテリーはほとんど変わらない。現段階の Linux ノート PC の電力調整は、画面の PSR2 対応の有無、マシン自体の周辺電力、そして CPU の動作ポリシーを中心に回っている。前者二つはほぼ何もできず、マシン自体が対応しているかを見るしかない。後者の CPU 電力調整は実は一行のコマンドの話で、それも GNOME 標準の調整で十分にうまくやれている。

Screenshot from 2024-04-16 18-49-28.png

特に power-profiles-daemon 0.21 では、同じ「バランス」ポリシーでもマシンが電源に接続されているかどうかで自動調整される。接続時は性能寄り、非接続時はバッテリー寄りになる。本当に性能を全開にしたいなら「パフォーマンス」に切り替えればいい。

他の最適化手段、auto-cpufreq なども、結局は周波数を下げて性能を犠牲にするものだ。少しのバッテリーのためにノート PC の性能を去勢してしまうのは、得るものより失うものが大きいと思う。


BTRFS スナップショット管理のインストール

まずツールをインストール:

sudo dnf install btrfs-assistant

あとはアプリ一覧にこのプログラムが現れる。

btrfs ファイルシステムは COW(Copy on Write)なので、スナップショットとバックアップが非常に簡単だ。このツールを使えば手軽にスナップショットバックアップができる。

Screenshot from 2024-04-16 18-57-11.png

デフォルトの btrfs インストールは二つのボリュームにマウントされる。一つはルートディレクトリ root、もう一つはユーザーディレクトリ home。どちらのボリュームも独立してスナップショットバックアップと復元ができ、このツールでの操作はとても簡単だ。

このツールは自動バックアップとスナップショットにも対応しているが、おすすめしない。スナップショットが原因で flatpak のプログラムが遅くなり、再起動して復元する必要があることがある。


仮想マシンの選択:GNOME Box

Linux の仮想マシンには多くの選択肢がある。有名な virtualbox、vmware、そして GNOME 標準の GNOME-box。

なぜ GNOME-box が自分の選択になったのか。まず virtualbox や vmware などを使う場合、PC の secure boot を無効にする必要がある。そうしないとカーネルモジュールのコンパイルが失敗する。カーネル更新のたびに手動で署名するか、使わないかの二択になる。

GNOME-box は KVM ベースなので、この制限を受けない。

システムに入っていなければインストール:

sudo dnf install gnome-boxes

しかも理論上 KVM の性能は Virtualbox などより優れているので、なおさら KVM を使うべきだ。ただ現在の KVM 最大の問題は Windows のエミュレーションが普通なこと。できないわけではないが、やはりグラフィック性能のドライバーが満たない。ここは QXL などの 2D アクセラレーションドライバーで Windows を動かすのがおすすめで、本当に高度な 3D 性能が必要なら GPU パススルーしかない。

Linux のエミュレーションに関しては、性能はとても良い。

Screenshot from 2024-04-16 18-50-08.png

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 になっているのが確認できる。

Screenshot from 2024-04-16 18-50-44.png


Fedora 関連の応用テクニック:

Update-testing パッケージの更新。

Fedora にはテストチャンネルがある。正式リポジトリに入る前のソフトがここでまずテストされ、その後正式に入る。

ユーザーはテストリポジトリを手動で有効にする以外に、コマンドで手動更新もできる:

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

こうするとシステムはより新しいバージョンになる。testing と表示されていても本質的には安定していて、自分はほとんど問題が出たことがない。

bodhi で最新パッケージを追跡:

ここを開けば最新のパッケージが分かり、どのソフトがまもなく新バージョンに更新されるかが分かる:

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

最後の F40 は Fedora 40 を表す。必要に応じて変更できる。

Screenshot from 2024-04-16 18-51-08.png

新パッケージのテストに積極的に参加することもできる。例えば 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 キーと呼ぶ)で素早くアプリ一覧を呼び出すことを期待している。多くのショートカットの関連付けも良くできていて、Win + 1 2 3 4 5 6 7 が Dock 上の最初のほうのアプリに対応したり、Win + 上下左右にそれぞれ対応するウィンドウ操作があったりする。慣れれば効率はかなり上がる。

もちろん今でも分からないのは、なぜ「tray icon」を廃止したのか。GNOME はプログラムを最小化すべきでないと考えているのか、それともこういうプログラムは gpaste のような拡張方式で処理すべきだと考えているのか。少なくとも今は拡張で実現できる。

Screenshot from 2024-04-10 16-55-01.png

自分は GNOME にできるだけ小さなカスタマイズしかしていない。ほぼ元のシステム設定は変えず、デフォルトのフォント、デフォルトのテーマ、デフォルトのアイコン、デフォルトのウィンドウレイアウトを使っている。

唯一変えたのは vital で現在のシステム使用状況を表示し、トップバーの左側に固定したことだ。あそこは空きすぎていて、何か置いておかないと落ち着かないから。

そうそう、初心者なら毎日システムを更新する必要はないし、できるだけ「ソフトウェアセンター」を使ってシステムコンポーネントを更新したほうが安全だ。システムがクラッシュする可能性を大幅に減らせる。


最後に、ちょっとしたおまけ:

Fedoraを使い始めてかれこれ3年、GNOMEも4年近くなる。全体的には満足している。たぶん俺がマゾなだけかもしれないが、もう慣れた。

長く使っていると、Fedoraというディストリビューションがなかなか良いことに気づく。コミュニティの雰囲気も比較的純粋で、バグを報告すれば誰かが直してくれるし、ソフトウェアのバージョン更新も速く、上流に極めて近い。昨日Linuxのニュースで見た新機能が、数日後にはFedoraで使える、というレベルだ。まさにGNOMEの「実の子」待遇。Ubuntuがいつまでもマイナーソフトのバグを直さないのと比べると、はるかにマシだ。

しかもFedora自体に商業的な背景がないから、Ubuntuのような妙な広告が入ることもない。更新もスムーズで、使うほど手に馴染む。Fedora 35から再インストールせずに更新を続けて、今のFedora 40まで来たが、ここまでずっと順調だ。じっくり使う価値のあるシステムだと思う。

それにFedoraとRed Hatの関係のおかげで、タダでいろいろもらえることも多い。定期的にFedora関連のカンファレンスがあって、オンライン視聴に登録すると記念品が当たる。俺もFedoraのステッカーやTシャツ、システムのUSBメモリ、各種バッジなんかをもらった。これもFedoraを使う楽しみのひとつだ。Fedoraの公式ニュースをチェックしていれば手に入る。

ここで俺がもらったFedoraの記念品と、公式のTシャツを載せておく:

photo_2024-04-16_23-14-30.jpg photo_2024-04-16_23-14-37.jpg

この記事が、Fedora + GNOMEを使おうとしている人の助けになればいい。

本家 plumz.me でこの記事にコメントする

コメントは中国語の本家サイトで受け付けています。このミラーは閲覧専用です。

目次