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

Waylandコンポジタとウィンドウマネージャの分離

2026年3月16日原文(isaacfreund.com)

概要

Wayland の従来型コンポジタは モノリシック構造 で、コンポジタとウィンドウマネージャを一体化。 新しい river 0.4.0 はこれを分離し、ウィンドウマネージャを独立したプログラムに。 river-window-management-v1 プロトコルにより、ウィンドウ管理の柔軟性と パフォーマンス を両立。 開発体験の向上や多様なウィンドウマネージャ実装が可能に。 今後の課題やロードマップについても解説。

river 0.4.0:非モノリシックWaylandコンポジタの設計

  • 従来のWaylandコンポジタは コンポジタウィンドウマネージャ を単一プロセスで実装
  • river 0.4.0ではウィンドウマネージャを 独立プロセス として分離
  • 複数のウィンドウマネージャがriverと 互換性 を持ち、選択肢が拡大
  • river-window-management-v1 プロトコルがウィンドウ管理の全権限をウィンドウマネージャに委譲
  • river本体は 描画 や低レベル処理、フレームパーフェクトなレンダリングを担当

WaylandとX11のアーキテクチャ比較

  • X11は ディスプレイサーバコンポジタウィンドウマネージャ が別プロセス
    • 入力イベントやバッファのやり取りに ラウンドトリップ が発生し、遅延の原因
  • Waylandは ディスプレイサーバコンポジタ を統合し、 入力遅延 を解消
  • 伝統的なWaylandはさらに ウィンドウマネージャ も統合
    • riverはここを分離し、 設計の柔軟性実装の容易さ を実現

river-window-management-v1 プロトコルの設計

  • ウィンドウマネージャに 最大限の制御権限 を付与しつつ、Waylandの 低遅延フレームパーフェクト な描画を維持
  • 毎フレームや毎入力イベントでのラウンドトリップ 不要、入力遅延の増加なし
  • フレームパーフェクト :ウィンドウのレイアウト変更時も、隙間や重なりが発生しない描画
    • ウィンドウのバッファ提出を 短時間待機 し、応答なければ即描画でレスポンス確保

ウィンドウ管理状態マシン

  • 管理する状態を ウィンドウ管理状態 (サイズ、フォーカス等)と 描画状態 (位置、装飾等)に分離
  • river-window-management-v1はこれらの変更を アトミックにバッチ処理
  • manage sequence でウィンドウ管理状態、 render sequence で描画状態を更新
  • 変更がなければウィンドウマネージャは アイドル状態、必要時のみ起動
  • この仕組みはriver以前から存在し、 river-classicやsway にも類似実装あり

riverの分離設計による利点

  • ウィンドウマネージャ開発の敷居 を大幅に低減
    • ウィンドウ管理ポリシーに集中でき、Waylandコンポジタ全体の実装不要
  • クラッシュしてもセッションが維持 され、再起動や切替が容易
  • 高水準言語やGC搭載言語 での実装もパフォーマンスに影響しにくい
  • 多様なウィンドウマネージャ の登場を促進し、X11時代の多様性に近づく

現時点の制約と今後の展望

  • VRや3Dデスクトップ など、従来の2Dデスクトップから逸脱した用途は未対応
  • 複雑な視覚効果 (例:wobbly windows)は現状非対応、今後の課題
  • ウィンドウ管理ポリシーの制約はプロトコル拡張で対応可能
  • river 1.0.0 に向けて、ウィンドウマネージャの起動・切替UX改善を検討中
  • river 0.4.0対応のウィンドウマネージャは今後も 後方互換性 を維持予定

サポートと寄付のお願い

  • riverの開発は 持続的な資金支援 が必要
  • liberapay による定期寄付や、 GitHub Sponsorsko-fi での支援を歓迎

river対応ウィンドウマネージャの例(ギャラリー)

  • Canoe :クラシックな外観のスタッキング型ウィンドウマネージャ
  • reka :Emacsベースのriver用ウィンドウマネージャ(EXWM類似)
  • tarazed :集中力を重視したパワフルなデスクトップ体験
  • rhine :再帰的・モジュラー設計とアニメーション対応

river の非モノリシック設計により、Waylandデスクトップの多様性と開発体験が大きく進化。今後の発展にも注目。

Hackerたちの意見

Waylandがプラグイン可能なWMを他の無関係なインフラを変えずに入れ替えられないっていうのは、X11に対してユーザーにとっての大きな損失だと思う。これを改善しようとしてる人たちは、まさに神の仕事をしてるね。

それはもう、wlrootsやSmithayみたいなライブラリでできるよ。

新しいWMやDEの開発にも影響が出るよね。自分のデスクトップのアイデアもあるから、いつか試してみたいんだけど、最初はX11ベースになると思う。だって、理解しやすくて、すぐに試行錯誤できるから。Waylandに反対してるわけじゃないし、X11にも問題があるから、もっと良いものに移行する価値はあると思うけど、これはWaylandの設計上の致命的な弱点だよ。

WMを拡張として実行するためのAPIを公開する単一の実装があればいいだけだと思う。なんで標準から特定のアーキテクチャデザインを強制するのが良いアイデアなのか、全然理解できない。

ただの損失じゃなくて、重要な機能が無効化されてる感じ。数十年同じカスタマイズしたウィンドウマネージャを使ってきたから、ウィンドウ管理のための完全に同等なインターフェースがない限りWaylandに移行するのは無理だよ。マウスクリックからキーボードショートカットまで、すべてが思い通りに動く必要があるからね。もしかしたら、Riverをサポートする既存のウィンドウマネージャや、最小限のWaylandコンポジタの上にX11デスクトップルートを再実装するWaybackレイヤーが必要かもしれないけど、今のWaylandコンポジタはその表面すらも触れてないよ。

正直言って、最高のLinux GUIスタックは、ルートWaylandサーバー(もちろんルートとしては動いてないけど)の中に、ユーザーごとのWaylandサーバーが入れ子になっていて、モニターにレンダリングするかオフスクリーンでリモートログインするかを切り替えられるようになってるって感じかな。その中にX11サーバーがあって、ハードウェアのことを気にしなくていい状態になってる。そしてその中で普通のウィンドウマネージャーが動いてるっていう。

Waylandがこれを解決できなかったら、ずっとX11を使い続けるつもり。必要なら、動かすためのコーディングエージェントも作るし。

xlibreを使う手もあるけど、冗談だって言う人もいるよ。

今は、自分好みに完全にコーディングしたRiverウィンドウマネージャを使ってる。Hyprlandではやりたいことができなかったから、これに切り替えたんだ(例えば、デフォルトでBSPじゃなくて、ウィンドウを均等にタイルすることとか)。この分離がどれだけ影響を与えたかの簡単な例だね。

BSP?

Waylandを使ったことはないけど(i3を約15年使ってる)、こういうプロジェクトが出るたびに、なんでWaylandが存在するのか疑問に思う。簡単なことに対して、いろいろと面倒なことが多すぎる。確かにX11には問題があるけど、基本的にやりたいことは何でもできる。Waylandは、切り替えることを考えるには摩擦が多すぎる気がする。

Swayは基本的にWayland上のi3だね。設定ファイルはほとんどそのままで(ちょっとした修正は必要だけど)、特にストレスは感じないよ。もちろん、それが理由ってわけじゃないけど、俺にとっては異なるスケーリング要件を持つ複数のモニターのサポートが決め手だった。

Hacker Newsで議論の続きを見る