世界を動かす技術を、日本語で。

Xfwl4 – Xfce Waylandコンポジタのロードマップ

概要

  • Xfceチーム がWayland向け新コンポジタ xfwl4 の開発を発表
  • Brian Tarricone が主要開発者として資金提供を受けて開発担当
  • xfwm4 と同等の機能・操作性を目指し、設定も引き継ぎ予定
  • Rust+smithay でゼロから実装、既存コードは流用せず
  • 開発の詳細や進捗は MatrixチャンネルOpen Collective で案内

XfceのWaylandコンポジタ「xfwl4」開発ロードマップ

  • Xfceチーム がコミュニティからの寄付金を活用し、新Waylandコンポジタ「 xfwl4」の開発開始
  • Brian Tarricone が長期的なコア開発者としてプロジェクトをリード
  • xfwl4 は現行の xfwm4 と同等の機能・操作性を提供することを目標
  • xfwm4 の設定ダイアログや xfconf 設定を再利用し、ユーザーの移行負担を軽減
  • 既存の xfwm4 コードは流用せず、 Rustsmithay の技術スタックで完全新規実装

なぜ新規実装が必要か

  • 既存 xfwm4 コードの構造が X11 依存であり、Wayland対応のための抽象化が困難
  • X11 との互換性維持のためのリファクタリングは、既存X11環境に新たなバグを招くリスク
  • 並行して2つのコードベースを持つことで、Wayland側の開発・実験が迅速かつ安全に実施可能
  • Wayland 未対応のウィンドウ管理機能を既存コードで扱うのは困難
  • 既存コード利用では C言語wlroots が必須となり、より良い選択肢の活用が難しい

smithayベース採用の理由

  • smithay はWayland公式プロトコル拡張や wlroots ・KDEプロトコルも広くサポート
  • 高レベル抽象化が無く、グラフィック・入力・プロトコル処理の深いカスタマイズが可能
  • ドキュメントが充実 し、開発効率・品質向上に寄与
  • Rust 利用によりメモリ関連バグの回避や安定性向上
  • 開発者の Brian がRustを好み、 wlroots のRustバインディング作成が困難なため

プロジェクトの範囲と今後の展望

  • xfwm4 との機能同等性の確保が最重要課題
  • Wayland環境では compositor がセッションのルートとなるため、 session-startup の大幅改修が必要
  • xdg-session-management プロトコル対応も目標
  • XWayland 対応もロードマップに含む
  • Xfce CI コンテナのビルドシステムも meson+Rust 対応へアップグレード予定
  • 既に開発が始まっており、 年央に初期開発リリース を目指す計画
  • 詳細な技術的議論・進捗は Matrix #xfce-devOpen Collective で公開
  • Open Collective US/EU の支援者への感謝の意

コミュニケーションと情報源

  • 技術的な詳細や議論は Matrixチャンネル #xfce-dev で展開
  • 進捗やコードは Open Collective およびGitリポジトリで随時公開
  • 支援者・コミュニティへの感謝と今後の協力の呼びかけ

Hackerたちの意見

Xfceを約10年間、日常的に使ってるんだ。Waylandのサポートが進んでるのは嬉しいね。Rustで書かれてるのも、プロジェクトにもっと貢献者が集まる助けになると思う。Xfceを使ってるなら、彼らのオープンコレクティブに寄付することをおすすめするよ: https://opencollective.com/xfce https://opencollective.com/xfce-eu

俺はxfceを約5年間使ってる。先月、月々の寄付を設定したばかりで、今日はいいニュースを見たよ:)

XFCEが軽量デスクトップの選択肢としてしっかりしていてほしいな。ここ数年でKDEの大ファンになったけど、軽量とかミニマルって感じじゃないしね。個人的にはWaylandの大ファンだし、Rustにはあまり否定的じゃないから、これには問題ないと思ってる。ただ、長年のXFCEファンやこのプロジェクトにお金を寄付した人たちがどう感じるかは気になるな。理由はしっかりしてると思うよ:Waylandは未来っぽいし、Rustを使うことでコンポジタのクラッシュを減らせるのはいいことだと思う。ただ、XFCEのユーザー層は「伝統的」で技術に保守的な人が多いから、WaylandやRustに対して懐疑的な人も多いんじゃないかな。複雑で無駄だと思ってるかも。もちろん、正しい選択をしたなら、すぐに結果が出るはずだから、頑張ってほしいね。

ただ、XFCEのユーザー層は「伝統的」で技術に保守的な人が多いから、WaylandやRustに対して懐疑的な人も多いと思う。 2007年からのXFCEユーザーだけど、これは正確じゃないと思う。私たちは物事が「ただ動いてほしい」し、無意味に変わるのは嫌なんだ。プロジェクトがどの言語で実装されてるかなんて、ユーザーは気にしないよ。退屈してて、ウェブフォーラムで無駄な議論を楽しむ人以外はね。Waylandには勢いがあるし、変化には不満が出るのは当然だけど、移行は起こるし、ネイティブサポートが増えればそれほど痛みもないはず。X11の信者たちはSysV-initの信者と同じ道をたどるだろうし、昔の良き時代を叫ぶ少数派で、実際には誰も気にしてない。Waylandに切り替える理由はちゃんとあるし、XFCEチームがこの移行をうまくやると信じてる。XFCEチームからの素晴らしいニュースだね、彼らがこれを成功させるのが楽しみだよ。

Waylandが「未来のように感じる」ってどういうこと?俺や他の多くの人にとっては、使い勝手の問題が深刻で、むしろ後退してるように感じるよ。せっかく動いてたGUIがあったのに、時間とリソースの大きな無駄遣いに思える。 (もしかしたらそれが意図だったのかもね。)支持者の主張は「俺より古いコードは嫌だ」っていう、商業Linuxベンダーに雇われたプロらしい意見に集約されてるし、Androidみたいな分離もない — 誰も本当に望んでない機能だよね。「プロトコルだから」っていうマントラも、回避策が必要な機能が多すぎるとあんまり安心できない。結局、断片化や一般的な非互換性につながるし。複雑で悪いプロトコルなんてたくさんあるけど、生き残るのは本質的に「シンプル」(例えばSMTP)か「トリビアル」(例えばTFTP)なもの。Waylandの後継が、X400に対するSMTPみたいになるかもしれないけど、俺にとってWaylandは未来じゃなくて過去の妥協に見えるな(開発にほぼ16年かかってるし)。

確か、X11とWaylandしか存在しないし、X11は死にかけてるか、もう死んでる。rustについては、デスクトップユーザーが使われている言語を気にする理由が見当たらないよ、十分に良ければね。

そうだね、「壊れてないものを直そうとするな」っていうのを強く支持してる。今のXFCEは速くて軽量で使いやすいし、大きな問題もなく動いてる。XFCEがXの代わりにWaylandを使う利点や欠点は完全には理解してないけど、もし他の誰かがHNで指摘してたように、Wayland上でXFCEを動かすと遅くなるなら、開発者たちはXFCEの一番の強みを弱めることになるよね。そうなると、他の小さな利点は俺みたいなユーザーには無意味に思える。

それなら、未来は高遅延でいっぱいだね。

ちなみに、今のところほとんどのwlrootsベースのコンポジタはXFCEで使えるよ。俺はGentooでHyprlandとXFCEを使ってる。 https://github.com/bergutman/dots

レトロテーマ、いいね!HyprlandとXFCE4を「呪われた組み合わせ」と表現した理由をもう少し詳しく教えてくれない?公式のXFCEプロジェクトが自分たちのコンポジタを作ることにした理由がわかるかもしれないよ。

もしWaylandのサポートがあったら、今すぐXFCEを使ってると思う。ほんとに素晴らしいと思うし、こういう進展があるのは嬉しい。プロジェクトがスピーディーに進むことを願ってる。DEがハードなsystemdサポートを要求する中、XFCEみたいなものがあればいいな。

WaylandはLinux以外のシステム(例えば*BSD)でも動くの?Wayland用に書かれたアプリケーションのウィンドウを、X11からXQuartzみたいにMacに送る方法はあるのかな?

WaylandはFreeBSDでかなりうまく動くし、少なくともwlrootsコンポジタはOpenBSDでも少し動くことは知ってる(ただ、OpenBSDの人は自家製のXenocaraを使いたがると思うけど)。Mac用のWaylandコンポジタもあって、YouTuberのBrodie Robertsonが数日前にそれについての良い概要を作ってたよ。

うん、でもまだちょっとWIPだね。 https://docs.freebsd.org/en/books/handbook/wayland/

「送信する」という意味によるね。Waylandにはネットワークの透明性がないから、ちゃんと動かすにはちょっとした手間がかかるよ。MacでのWaylandコンポジタの状態はよくわからないけど。

SmithayのRustクライアントツールキットを数ヶ月使ってるけど、アプリを作るのにはまだ時々安全なものに見えてるunsafeラッパーがあるね。内部の多くはArcでラップされてるけど、テストした限りでは、異なるスレッドから呼び出すのは安全じゃないみたい。そうすると変なクラッシュが起きるから、Wayland APIが実際にどう動いてるのかを深く知りたいと思ってる。ラッパーを「間違って」使うとクラッシュすることがあるから、何を避けるべきか知りたいんだ。

目標は、xfwl4がxfwm4と同じ機能と動作を提供することです... ここでの動作の解釈がどれだけ厳密なのか気になるな、アーキテクチャの違いを考えると。例えば、フォーカスを奪う防止策。xfwm4(および一般的なx11)では、これは複雑なヒューリスティックとタイムスタンプチェックが必要なんだ。x11クライアントは強力で、フォーカスを積極的に奪うことができるからね。Waylandでは、コンポジタがフォーカスの唯一の仲裁者だから、クライアントはフォーカスを奪うことはできず、xdg-activationを通じてリクエストすることしかできない。レガシーなx11のロジックを移植するには、古いヒューリスティックのように感じる新しいポリシーを実際に設計するという課題がある。これが、xfceの生の応答性に対する俺の主な興味につながる。ポテトハードウェアでは、xfwm4はコンポジタを無効にして独立したスタッキングウィンドウマネージャーとして動作できるから、すごくスナッピーに感じることが多い。Waylandは、定義上コンポジティングを強制するからね。rustとCのレイテンシーについては心配してないけど(smithayはGCなしで機械語にコンパイルされるから)、必須のコンポジティングオーバーヘッドについては気になる。コンポジタは、低スペックのデバイスで非コンポジットのx11の入力からピクセルまでのレイテンシーを再現できるのか、それともWaylandのフレームパーフェクトなレンダリングのために犠牲にしなきゃいけない性能のクラスなのか?

...それともWaylandのフレームパーフェクトなレンダリングのために犠牲にしなきゃいけない性能のクラスなのか?「フレームパーフェクト」が何を意味するのかは分かってるし、X11ではずっと前からそれが得られてたと思うよ…少なくともAMD/ATiのハードウェアではね。TearFreeオプションを有効にすれば(またはディストリビューションに有効にしてもらえば)、それでいける。どこかでTearFreeはトリプルバッファリングだと読んだことがあるから、もし本当なら、これはレイテンシーが1フレーム追加されるっていう俺の(おそらく間違った)理解だね。

コンポジタは、低スペックのデバイスで非コンポジットのx11の入力からピクセルまでのレイテンシーを再現できるのか、それともWaylandのフレームパーフェクトなレンダリングのために犠牲にしなきゃいけない性能のクラスなのか? まあ、答えは「ノー」だね。Waylandは一貫してX11より遅いし、その上で動いているものは本当にそれを回避できないよ。

少なくとも理由については正直だよね。「だって好きだから」っていうのを正当化するための長文じゃないし。こういう言語の島があると、ビルドツールや既存のエコシステムとの統合、誰が何に貢献できるかに関して、ちょっとした摩擦が生まれるんだよね。だから、どう進化するか見てみよう。C言語を批判しても、俺はGNOMEやGJSがごちゃごちゃしてるより、XFCEを使ってる方がずっと幸せだった。

Xfce / xfwm4はフォーカス奪取防止を提供してないよ。

コンポジタは、低スペックのデバイスで非コンポジットのx11の入力からピクセルまでの遅延を再現できるのか、それともフレームパーフェクトなWaylandのために犠牲にしなければならない性能のクラスなのか?これは最終的には正しいと思う。コンポジタはVBlank信号の後にフレームをレンダリングしなければならず、その時点で画面上にあるバッファをレンダリングする必要がある。これは、最後にレンダリングされたものからのものになる。とはいえ、これをある程度軽減することは可能だ。KDEとGNOMEは、より多くの状況でハードウェアアクセラレーションされたDRMプレーンに「アンリダイレクト」することに対してますます積極的になっている。こういう状況では、アンリダイレクトされたプレーンはコンポジティングの遅延を受けず、そのバッファはスキャンアウト時にGPUによってスキャンアウトされる。現代のWaylandでは、これがアンダーレイとオーバーレイを通じて実現されている。また、アトミックDRMコミットを使用することでマウスカーソルの動きにわずかな遅延が生じる。現代のWaylandでアトミックDRMを使うのは非常に一般的だから、カーソルには少なくともフレームの一部の遅延が加わるのが普通だ(多くの要因によるけど)。これについては二つの考えがある。一つは、やっぱり悲しいことだ。古いハードウェアは完璧に動いていて、こんな遅延問題なんてなかった。Waylandをフルコンポジティングなしで実装することは可能かもしれないけど、実際に試みる人はいないだろうね。みんな、デスクトップで少し遅延があるのは受け入れちゃったから。でも「古い」ハードウェアは今や、デスクトップで高リフレッシュレートをうまく扱えることが多い。60Hzでの平均的な遅延が半フレーム増えるのはかなり悪いけど、144Hzでの半フレームは約3.5msの遅延で、これはもっと受け入れやすいと思う。アグレッシブなアンダーレイ/オーバーレイの使用とダイナミックトリプルバッファリングを組み合わせることで、コンポジティング体験は受け入れられる妥協点になると思う。144Hz以上の出力が本当に扱えないコンピュータはどうなるの?うーん、難しいところだね。古いコンピュータでも、デスクトップで少なくとも100Hzはうまく扱えるものがある。Pentium 4の古いGeForceカードのマシンのことを言ってるんだけど。Linuxは確かに古いハードウェアでも動くけど(ベースラインは少しずつ上がってきてるけど、今は少なくともPentiumが必要かな?)、やっぱり「うまく動くこと」を求めるのが難しいラインを越えるポイントがあると思う。その時点では、開発者に無駄なリソースを使わないように頼むのではなく、最近のマシンだけでなく30年前のマシンにも最適化するように頼むことになる。ある時点で、手放さなきゃいけない気がする。コンピュータが完全に時代遅れだからではなく、サポートするマシンの範囲が広すぎるからだ。もちろん、高リフレッシュレートを追求するだけではすべての問題を解決できるわけじゃない。多くのノートパソコンは60Hz以上の画面がないし、コンポジタを使うときには数ミリ秒の遅延が永遠に残る。理想的ではないけど、どうしようもないよね。コンポジタには多くの利点があるし、常にオンの未来を設計するのは簡単そうだ。

一つ覚えておくべきことは、コンポジションはvsyncで行う必要はないということだ。クライアントがウィンドウに新しい内容があると教えてくれた瞬間に画面を更新すればいい。

X11からWaylandへの移行って、Linux界で一番痛い移行じゃない?Python 2から3への移行よりもひどくはなかったよね。

systemdについてはどう思う?

X11からWaylandへの移行は、俺には全然苦じゃなかったな。必要なものによるんじゃないかな。

待ってみて。8年後には、WaylandはWaylandが作られた時のX11と同じくらい古くなるから。その時にはWayland 2を作るよ。

KDE3からKDE4に泣く。

カーネル2.4.xから2.6.xへの移行はかなり苦痛だったよ。2.6から3.0への絶対的な苦行と、今の開発モデルに少しでも似たものを使うのは本当に疲れた。もしその時代にいなかったら言っておくけど、「偶数」カーネル(例えば2.0、2.2、2.4、2.6)は安定版で、「奇数」カーネル(例えば2.1、2.3、2.5)は開発版だったんだ。開発モデルは本当に頭おかしいくらいで、開発の進み具合は今の超スピードに比べると氷河のように遅かった。プレGit時代はあまり理想的じゃなかったし、BitKeeperの時代は…政治的にも哲学的にも面白かったね。それに、KDE4は本当に暗黒の時代だった。

私にとって最も痛かったのはGnome 2からGnome 3への移行だった。Gnome 2が恋しいよ。Gnome 3を離れて他のウィンドウマネージャに移ったけど(最終的にはCinnamonに落ち着いた)、たまにGnome 3を試してみることにしても、また失望するだけだった。まるで虐待的な恋愛関係にいる人たちが何度も戻って離婚するみたいな気分だった。「ああ、Gnomeは本当に変わった、今度は私を殴らないはず!」

私の見解では、このプロジェクト自体がWaylandが正しい進むべき道である理由のいくつかを示していると思う。XではXorgしかなかった。でも、少なくともXorgは多くの作業をしてくれた。Waylandでは、理論的にはコンポジタを構築する際に自分で多くの作業をしなければならない。しかし、今見ているのは、これを代わりにやってくれるライブラリ(wlroots、Smithay、Louvre、aquamarine、SWCなど)が出てきていることだ。だから、この一人プロジェクトが数ヶ月以内に開発リリースを提供することを期待している。2026年の中頃は今から4ヶ月後だ。でも、Waylandの反論に対処しただけではない。このプロジェクトは代替案を評価し、機能とプログラミング言語の選択においてSmithayが最適であると判断できた。時間が経つにつれて、品質や機能で競い合う実装が増えていくと思う。これが全体のエコシステムを前進させる。これがオープンソースのあるべき姿だ。

Waylandは表示やグラフィックスなどの基本的な低レベルのことしかやらないから、人々は何もないところから共通のLinuxデスクトップ(プログラミング)インターフェースを考え出さざるを得なくなった。これによって、すべてをつなぎ合わせてプログラムが少なくとも相互運用できるようにする必要があった。このLinuxデスクトップを再考するための努力だけでも大きなプロジェクトになり得たけど、Waylandによって何かを持つ必要が生じたため、すべてが急いでいて制御が欠けている。より大きく包括的なプロジェクトに似たものは、せいぜい初期段階にある。Waylandが約10年続いているなら、再び何らかの確立された一貫したデスクトップAPIがLinuxに登場するまでにあと10年はかかるだろう。X11はデスクトップ環境のために非常に基本的な機能を提供していたので、異なるツールキットを使用するプログラムが一緒に動作できるようになっていたし、ウィンドウマネージャなどで実装するための十分なフックもあった。しかし、他のオペレーティングシステムのデスクトップのように、すべてを中央で一貫して結びつけるようなより完全なインターフェースはなかった。だから、Linuxのデスクトップインターフェースは再構築が必要だったけど、その進め方は本当に落胆させられる。

「機能の均等性」って言葉が見えるね。これが真剣に受け止められることを願ってる。Waylandの支持者たちは、この言葉をもっと真剣に考えた方がいいと思うな。