Netsnek RPM リポジトリ
私の Asahi デスクトップが機能しているのは、ひと握りのパッケージが Fedora とは違う形でビルドされているからにほかなりません。これらのビルドを手作業で世話せずに済むように、そして Fedora のアップデートに上書きされないように、私は rpm.netsnek.com で自前の RPM リポジトリを運営しています。すべてのパッケージは aarch64 上の Fedora 43 を対象とし、私の Asahi セットアップに合わせて作られています。他のアーキテクチャやディストリビューションでは試していません。
dnf での組み込み
ここにはかつて /etc/yum.repos.d/netsnek.repo 用のコピペブロックが載っていました。それを私は取り下げました。理由は、利便性より私にとって重要なことがあるからです。リポジトリは他人のマシンに root 権限でソフトウェアを持ち込みます。そういうものは署名されているべきであり、そのために署名検証を無効にするような手順を、私は誰にも差し出したくありません。まさにそれが、ここに書かれていたはずのものでした。
だから署名鍵が、このリポジトリにとっての次の一歩です。パッケージが署名されたら、gpgcheck=1 と公開鍵を使った組み込み手順がこの場所に載ります。メタデータはもともと createrepo で生成しているので、そうなれば dnf はこのリポジトリを他と同じように扱います。それまでの間はこうです。どれかのパッケージが必要な人は、netsnek.com に記載の連絡手段で声をかけてください。そのマシンにとって何が理にかなうかを、一緒に見ていきましょう。
Fedora より優先させる
パッケージは本来のアップストリーム名を名乗ります。たとえば swappy-netsnek ではなく swappy です。私のバージョンが Fedora のパッケージより優先されるように、パッケージに応じて高めのリリース番号、Epoch: 1、あるいは旧パッケージ名への Obsoletes: を使っています。これにより、Fedora からのアップデートがパッチ済みパッケージをうっかり上書きすることはありません。
何が入っていて、なぜなのか
Wayland の中核
wlroots こそが、このリポジトリを作った本来のきっかけです。私の XFCE パネルにはワークスペースが1つしか見えていませんでした。wlroots 0.19 が ext-workspace-v1 プロトコルをまだ実装していないからです。救いになったのは、dkondor を中心としたコミュニティによる 0.20 実装のバックポートで、私はそれを Fedora 向けに 0.19.2 としてパッケージ化しました。このパッチは新しいファイルとビルド行2行を追加するだけで、既存のコードは変更しません。wlroots 0.20 が Fedora に入ったら、このパッケージはまた放り出します。
wayfire は私のパッチスタックを背負っています。非表示にしたあと再表示されるレイヤーシェルウィンドウのクラッシュ修正、これは kitty のドロップダウンターミナルのために必要でした。同じく dkondor のコミュニティ作業から来たプラグイン wlr-workspaces、これは Wayfire のワークスペースを ext-workspace-v1 経由で公開し、XFCE のページャーがそれを見えるようにし、ページャー内のクリックでワークスペースが切り替わるようにします。本物の10ビット色深度、これで wayfire.ini の [output] ブロックにある depth = 10 が本当に機能し、グラデーションのバンディングが減ります。そして2つの Cube 拡張、修飾キー+4本指スワイプによるデスクトップキューブの起動と、インナーキューブ用プラグインのためのレンダーインターフェースです。
wayfire-plugins-extra は自作のプラグインを2つ持ち込みます。cube-gears は glxgears をもじって、デスクトップキューブの内側に歯車を描きます。dither は順序ディザリングによって、内蔵ディスプレイ上で目に見えるグラデーションのバンディングを軽減します。
XFCE とデスクトップの構成要素
xfce4-panel は gtk-layer-shell を有効にしてビルドしています。これによりパネルは Wayland 上でシェル面として認識され、コンポジターのタイトルバーが付かず、画面上の占有領域を正しく確保します。
xfdesktop には Wayland ビルドに加えて、モニター名のための独自パッチを当てています。これがないと、設定ダイアログは壁紙の設定を monitor0 に書き込む一方で、デスクトップ側は monitoreDP-1 のようなコネクター名の下でそれを探します。つまり私の壁紙は設定はできるのに、決して表示されませんでした。このパッチは名前を libxfce4windowing 経由で解決し、両側が同じキーを使うようにします。
swappy、私のスクリーンショットエディターは、アップストリームではクライアントサイドデコレーションとして GtkHeaderBar を使っており、私のサーバーサイドデコレーションの隊列から浮いていました。パッチは HeaderBar を通常のウィンドウ内容の中へ移し、Wayfire がウィンドウの周りに統一されたタイトルバーを描けるようにします。
swaylock-effects は jirutka のフォークからビルドしています。そちらが ext-session-lock-v1 プロトコルに対応し、ロックスクリーン用にブラー、時計、フェードインといったエフェクトを提供するからです。
kitty には2つの修正が入っています。Python 3.14 向けのアップストリームパッチと、dbus 通知コードにある領域外読み取りに対する自作の修正です。後者は私の環境で、デスクトップ通知のたびに kitty をクラッシュさせていました。サブパッケージの kitty-kitten、kitty-terminfo、kitty-shell-integration も含まれています。
mugshot は bluesabre/mugshot の無改変アップストリームで、Fedora ではそもそもパッケージ化されていません。XFCE の Whisker メニューにあるプロフィールボタンが必要とする、プロフィール画像ダイアログを提供します。
他では aarch64 版が存在しないアプリ
telegram-desktop は Nicegram フォークをベースに、WebRTC スタックも含めて aarch64 向けにネイティブビルドしています。このアーキテクチャ向けの公式バイナリパッケージは存在しません。
signal-desktop は公式ソースコードからの aarch64 ネイティブビルドで、他に Fedora パッケージとしては存在しないものです。デスクトップエントリーは --no-sandbox --ozone-platform=wayland 付きで起動します。ARM64 Fedora ではサンドボックスが機能せず、そのままだとアプリが XWayland 上で動いてしまうからです。
youtube-music は YouTube Music の Pear Desktop フォーク(アップストリームは pear-devs/pear-desktop)の私による aarch64 ビルドです。アップストリームからの変更は表示まわりだけで、Google の同意ページがダークモードで描画されます。
一人プロジェクト
このリポジトリは、ある特定のセットアップのための一人プロジェクトです。安定性の保証も、Fedora のアップデート後に速やかにリビルドされる保証もありません。それでもフィードバックは、netsnek.com に記載の連絡手段でいつでも歓迎します。