メインコンテンツへスキップ

Waylandへ切り替えてX Window Systemを捨てるべきか(2024年版)

·
カテゴリー Linuxシステム FOSSをめぐる問題
タグ Wayland X Window Linux
目次

この記事ではIvonがLinuxシステムの「X Window System」と「Wayland」の発展状況を議論し、Waylandの長所と短所を検討して、あなたがWaylandへ切り替えるべきかどうかを決められるようにする。最後には最新のWayland技術を最速で体験できるLinuxディストリビューションも付けておく。

事態は変化しつつある。Linuxコミュニティでは、X11を捨ててWaylandセッションへ切り替えるべきかがよく議論される。では、X11とは何か?Waylandとは何か?

X Window Systemは、あなたのLinuxコンピューターの画面をどのように表示するかを決めるソフトウェア群である。しかしそれは古すぎて問題が多い。現在はWaylandプロトコルを採用したソフトウェアがあり、現代的なコードでこの古いソフトウェアを置き換えようとしている。ただしWaylandにも問題が山積みで、Linuxシステムで採用が増えているにもかかわらず、発展から10年経った今もX Window Systemは完全には置き換えられていない。以下でその理由を探る。

1. 変化の契機:X11とWaylandの比較
#

X Window SystemとWaylandはいずれもLinuxの画面表示を担当するソフトウェア群である。両者の低層原理比較については、私の知識が浅いため恥をさらすのはやめておく。ネット上にはすでに多くの資料があり、文末の「関連読書」にも詳しく読める面白い記事を多く載せている。ここでは私個人の理解を簡単に述べる。

X Window System、略してXは、Linuxより早く生まれた。X Window Systemは1987年に登場し、グラフィカル環境の表示に使われた。当時はまだUnixの時代だった!今ではすでに30年以上の歴史がある。

なぜLinuxには「X Window System」をインストールしないと画面が出ないのか?それはLinuxカーネルには本当に画面表示のソフトウェアがないからだ。

Linuxユーザーが見るデスクトップ環境(たとえば GNOME、KDE Plasma、XFCE)は、画面を直接制御しているわけではなく、X Window Systemが提供するグラフィック表示機構の上に構築されている。X Window Systemは最下層のウィンドウ表示と入力イベントを担当し、デスクトップ環境はユーザーインターフェースと操作体験を担当する。

ここで、X Window Systemは各デスクトップ環境が従う低層の共通標準となった。

当初の設計者はXの通信プロトコル(protocol)標準だけを制定し、Xの実装方式(implementation)を詳しく規定しなかった。そのため各社のXウィンドウソフトウェアが登場した。2000年頃、X.org組織が開発したX.orgソフトウェアがXFree86を置き換え、徐々に公認の標準となり、APIなども彼らが決めた。X.orgはこうして各大デスクトップ環境に採用された。X.orgが採用したX通信プロトコルがX11版だったため、彼らが開発したXサーバーもX11と呼ばれる。

X Window Systemがサーバー(server)と呼ばれる理由は、複数のXクライアント(client)の同時接続を受け付けられるからだ。つまり「クライアントサーバー構造」であり、昔のメインフレーム時代の需要に応え、ネットワーク透過性(Network Transparency)を通じて通信する。原理は下図を参照。

ネットワーク透過性とは何か?Xサーバーを通じて、別のコンピューターのウィンドウをネットワーク経由で転送し、あなたのコンピューターに表示できる。これにより、多くの人が同時に同じホストへ接続して作業できるわけだ。

さらにX Window Systemは個人コンピューター上でもクライアントサーバー構造に従って通信する。各ソフトウェアのウィンドウは一つのXクライアントであり、あなたのコンピューター上のXサーバーと通信し、その結果画面を表示する。

デスクトップのウィンドウがどんな見た目になるべきかについて、X Window Systemのプロトコルは詳細に規定していない。これがデスクトップ環境開発者に大きな操作空間を与えた。開発者はcompositorを通じてウィンドウの外観を決められる。閉じるボタンの位置、タイトルバー、アニメーション効果なども含まれる。だからCompizのようなクールな3Dアニメーションデスクトップが登場した。

クライアントサーバー構造はX Window System設計の長所でもあり短所でもある。長所はリモート作業が非常に便利で、柔軟性が大きいことだ。

短所は、この方式では安全性が高くないことだ。誰が「サーバー」は必ずリモートで実行されると言った?Xサーバーはあなたのコンピューター上でもクライアントサーバー構造の関係を維持しており、プログラム間の転送は暗号化されていない。他のプログラムに簡単に傍受され、たとえばキーロガーに使われうる。しかもクライアントとサーバー間の頻繁な転送はグラフィック効率の悪化を招き、画面 tearing を引き起こす。

tearing問題は大部分のデスクトップ環境とGPUドライバーが回避策を講じているが、Nvidiaはなお放置している。彼らのドライバーはオープンソースではなく、しょっちゅう問題を起こすからだ。


X Window Systemの問題には、もっとよい解決策があるべきだ…そこでWaylandが登場した。Waylandは2008年に現れ、かつてX11プロジェクトに参加していた開発者によって始められた。

WaylandはX Window Systemのクライアントサーバー構造を徹底的に変え、プログラムがグラフィックハードウェアをより効率的に利用できるようにする。Wayland自体は通信プロトコル仕様であり、実際にウィンドウを描画するソフトウェアはWayland compositorと呼ばれる。

つまりWayland開発者は通信プロトコルの仕様だけを規定し、compositorをどう実装するかについて詳細には規定していない。彼らは"Weston"という参考実装を一つ出しただけである。

こちらがWaylandの原理図だ。Xサーバーが消え、すべてがcompositorによって担当され、通信過程全体がかなり簡略化され、ネットワーク透過性も切り落とされていることが分かる。

では「X」Waylandとは何なのか?大量のXサーバー下の古いプログラムが使えなくなることを防ぐため、Wayland開発者はXWaylandという過渡的方案を提出した。Wayland下でXサーバーを一つ走らせ、それらの古いプログラムがWayland下で動作できるようにするものだ。とはいえ、XWaylandは古いXプログラムとの100%互換性を保証しない。一部の奇妙なAPIは使えない可能性があり、開発者はやはりプログラムを書き直し、ネイティブWaylandプログラムへ修正するほうがよい。

Waylandが出たなら、X11はどうなるのか?X11はすでに基本的に開発停止していることを知っておくべきだ。Linux世界の多くの新機能はWayland側へ発展を移しており、たとえばHDRコンテンツ対応のコードがそうだ。

Phoronixの報道によれば、近年X11の開発速度は史上最低に達し、基本的に動いていない。

なぜか知っているか?全世界でX Window Systemの全コードを読める人は三人しかいないらしい。あなたも知っている、私も知っている、しかし独眼竜は知らない。独眼竜ですら知らないものなら、開発者も古びたXサーバーのコードをどう修正すればよいか手の付けようがない。多くのXサーバーの設計は現代では時代の需要に合わない。Xを捨てる時が来たので、開発者はいっそ新しいものを作った。

しかしさまざまな問題により、執筆時点の2024年になってもWaylandはまだXを置き換えられていない。

2. なぜWaylandを使うのか?
#

Waylandの比較的明らかな長所は以下の通り:

  • GNOMEでもKDEでも、WaylandのアニメーションはX11よりずっと滑らかに見える。
  • グラフィック性能がよりよい。画面tearing問題を徹底的に解決し、Nvidiaプロプライエタリドライバーのユーザーにも恩恵がある。
  • HiDPI画面の非整数スケーリング、異なる画面で異なる解像度、HDR映像、VRR可変リフレッシュレート……など現代的なグラフィック機能をサポートする。
  • ブラウザが二本指ズームをサポートする。
  • タッチジェスチャー対応がよりよい。GNOMEとKDE Plasmaではタッチパッドジェスチャーでデスクトップを切り替えられ、FirefoxとGoogle Chromeでは二本指ズームや左右スワイプで前のページへ戻ることができる。これらはWaylandでのみ使える。
  • PipeWireとXDG Desktop Portal技術を活用し、スクリーンショット、画面録画、音声処理、画面共有、リモートデスクトップ、ファイル選択の経路を統一する。
  • システム安全性を強化し、キーロガープログラムを根絶する。

現段階では、Waylandが好きでなくても、ログイン画面(Display Manager)でいつでもX11セッションへ切り替えられ、両者は共存できる。

3. なぜWaylandを使わないのか?
#

Waylandの短所を語り始めると終わらない。

Linuxコミュニティでこの画像を貼ると殴られるらしい。

最も乱暴な理由:Waylandにはキラーアプリケーションが欠けており、「Waylandでなければならない」プログラムがほぼない。

probonopd(AppImage形式の提唱者)が書いたこの記事は非常によくまとまっており、Waylandでまだ解決されていない問題を一つ一つ列挙し、リアルタイムで更新している。毎日その下で誰かが喧嘩しているXD

最初この文章のタイトルは"Boycott Wayland. It breaks everything.“だったと記憶している。最初は人々にWaylandをボイコットしろと言っていたが、後にWayland採用前に必ず三思せよへ変わった。

より具体的なWayland問題を見るなら、KDE開発者が整理した一覧を参照してほしい:Plasma/Wayland Known Significant Issues

なぜWaylandの争議はこれほど大きいのか?それはユーザーインターフェースと密接に関わるからだ。Waylandが引き起こす問題は肉眼で見えるものであり、ユーザーがLinuxシステムを操作する体験に大きく影響する。上のprobonopdリンク内で語られていることは、あなたがLinuxの日常ユーザーなら必ず遭遇する。

より実際的な問題を語るなら、ブラウザから始めよう。Firefox最新版はデフォルトでWaylandセッションを使い、ほぼ問題がなくなった。しかしChromium系ブラウザ(Chrome、Brave、Edge、Vivaldi、Opera)は、現時点のv131版でもWayland対応がまだよくない。ChromiumはWayland下でもデフォルトでXWaylandモードで動いている!その結果、性能が振るわない。

起動パラメータを強制的に追加し、chromium --ozone-platform-hint=autoコマンドで純Waylandモードへ入ると、何が起きると思う?Fcitx5で中国語入力ができなくなる!Fcitx5 Wikiの説明によれば、さらに--gtk-version=4パラメータを追加して起動すれば正常になるらしい。うん、問題は私が追加してもまだ駄目だったことだ。実は--enable-wayland-imeパラメータもあるのだ!たとえChromiumが純Waylandモードをきちんと設定してくれたとしても、なんとVA-APIハードウェアアクセラレーションに対応していない?この機能は2024年1月になってようやく直った。

善意の注意:Electronで書かれた多くのプログラムもChromiumの影響を受ける。Chromiumのbugは同じくElectronプログラムにも反映される。たとえばVisual Studio Codeだ。開発者がElectronコアバージョンを更新しないなら、この問題はさらに深刻になるだけだ。

別のプログラムを例に取ると、OBS StudioはWayland下でのウィンドウキャプチャに時々問題があり、ポップアップでウィンドウを選ぶとき真っ黒になる。何らかのworkaroundを使わないと正常に作業できないかもしれない。GNOMEでもKDEでも、Waylandを使う限りこの種の問題は時々発生する。しかしX11セッションではほとんどこの問題は起きない。

さらに、Wayland下では多くのリモートデスクトップソフトウェアが問題を起こす。WayVNCとWayPipeは登場しているものの性能はあまりよくなく、RustDeskとSunshineだけがWayland対応を追加している。

Windowsプログラムを変換するWine(Steam Deck Protonの上流プロジェクト)は、今年の最新9.0版でようやく実験的なWaylandドライバーを追加した。今でもSteamでは、ネイティブゲームでWaylandに対応するものは少なく、多くのゲームは依然としてXWaylandで動いている。そのためWayland環境でゲームをすると性能問題が出る。

WaylandはHiDPI画面の問題を改善し、任意のスケーリング係数を指定できる。しかし旧版XWaylandプログラムはそれに合わせてスケーリングされない。XWaylandプログラムを強制的にスケーリングすればぼやける。GNOMEもKDEも、この問題を処理するよい方法を持っていない。

KDE 6.0はWayland対応に重大な改善があると称しているが、KDE自身のプログラムでさえ、今でもGwenviewウィンドウが超巨大になる、マウスが超巨大になる、Kateが意味不明なフローティングウィンドウを出すなどの奇妙なbugが出る。KDEフォントビューアは今でもWaylandに対応していない。

X11下で長年使われてきたカラーマネジメントシステムも、Waylandではまだ実現されておらず、KDE 6になって初めてある。

ああもう。X11デスクトップは開封即用だが、Waylandデスクトップは問題だらけである。

もしプログラムがWayland下で正常に使えるようになるために、ユーザーが手動で大量の作業をしなければならないなら、それはWaylandが根本的にまだ準備できていないということだろう!

ああ、これはデスクトップ開発者のミスだと押しつけてもいいだろう。彼らがcompositorを書ききれていないのが悪いのだから。

そう!標準の不一致こそWayland最大の問題の一つだ!

この図はうまく説明している:

Waylandは実はX11の直接的な代替品ではなく、ほぼ別物になっている!多くの旧来のプロトコルにはWayland上で対応するものがなく、開発者が一つずつ実現するのを待たなければならない。

ソフトウェア開発者にとっても、Waylandの変化に適応しなければならない。もっとはっきり言えば、プログラム全体を書き直す必要がある。

過去、皆が使っていたのはX.orgのX Window System実装であり、従うべき統一APIがあった。各社はそれに基づいてウィンドウcompositorを開発した。しかしWaylandへ入るとXサーバーはなくなり、各社は自分でWayland compositorを作る方法を考えなければならない。

Linux世界には中央集権的な開発というものがない。これが各社標準不一致の状況を引き起こした。前に述べたように、Wayland開発者は通信プロトコルだけを規定し、compositorをどう実装するかについては詳細に規定していない。今やWayland compositorは少なくとも10種類以上あるだろう。GNOMEのMutterにはMutterの実装があり、KDEのKwinにはkwinの実装があり、Hyprlandにも自分の実装がある。

オープンソース組織同士は標準を調整し、GTKやQTのような有名ライブラリもWayland対応に追随し、システム下層のものを抽象化して開発者の負担を減らしている。しかしどうしても統一できない標準がある。

Fcitx5の開発者はBlogでこの問題を愚痴ったことがある。彼は各大デスクトップ環境をサポートするため、4種類の入力メソッドプロトコルを実装し、さらにはKDEへPRを提出して彼らのcompositorを改善した。

プログラムがXWaylandモードで動いていても、100%完璧な解決策ではない。それはアプリケーション性能低下を招き、スケーリングもぼやける。中にはクリップボード共有やドラッグ&ドロップ貼り付けすらできないものもある。しかしWayland開発が不完全なため、多くの開発者はなおこの折衷的な解決方法を選び、ネイティブWaylandプログラムを開発せず、XWaylandで放置している。


以上をまとめると、もしWaylandの問題を本当に細かく掘り下げれば、最終的にあなたは半分Linux開発者になる。

才能があるなら、wlrootsというライブラリを見つけ、自分のWayland compositorを書き始めるかもしれない!Sway、Hyprland、river、Wayfireなどの開発者たちの列に加わるのだ。

4. しかし、Waylandは依然として未来の趨勢
#

事態は変化しつつある。WaylandはSystemd、PulseAudio、PipeWire、Avahiと同じで、出たばかりの頃は罵声だらけだったが、彼らは最後には徐々に大衆に受け入れられた。

なぜか?上で語ったWaylandの短所、bug、欠陥は、未来にゆっくり解決されるからだ。この記事で触れたWaylandの問題は、数か月後には消えているかもしれない。

Kansasの歌があなたに教えてくれている:CARRY ON MY WAYLAND SON!

Waylandは問題だらけとはいえ、世界各地の開発者が非常に真剣にbugを修正している。各大Linuxディストリビューションも徐々にWaylandをデフォルト選択肢にしている。

商業会社RedHat、Canonical、SUSEはWaylandをデフォルト選択肢として強く推進しており、RedHatは RHEL 10でX.orgを完全に削除する準備さえしている。

ValveとAMDは協力してSteam Deck上のWaylandにHDRを対応させた。ドライバーを死んでもオープンソースにしないNvidiaでさえ、Wayland対応を徐々に改善しており、さらに多くの新特性が進行中である。

今後数年で、GNOMEはX11のログイン選択肢を徹底的に削除し、純Wayland環境になる可能性がある。連動してGTKも正式にX11サポートを放棄するだろう。ただし、ここで私が語っているのはローリングリリースのスケジュールであり、Ubuntu LTSやDebian Stableのような安定更新のディストリビューションは、純Wayland環境に入るまでさらに時間がかかるかもしれない。

X11が完全に死ぬには何年かかるのか?私はさらに十年待つと予想する。Debian StableとUbuntu LTSの「デフォルト」もWaylandになって初めて、本当に成熟したと言える。現在Ubuntu 24.04のデフォルトはなおX11セッションである。

5. Waylandへ切り替えるには?
#

上述の通り、Waylandは単一のソフトウェアではなく、デスクトップ環境が個別に実装するものだ。

最大の考慮要因は、常にあなたのLinuxディストリビューションの更新速度、そしてデスクトップ環境のWayland対応度である。

自分がX11を使っているのかWaylandを使っているのかをどう知るか?端末を開き、以下のコマンドを入力すれば多少分かる。

echo $XDG_SESSION_TYPE

X11とWaylandの間で切り替えたいなら、通常システムのログイン画面(Display Manager)に選択肢がある。

執筆時点の各デスクトップ環境のWayland対応状況:

  • GNOME 48:Linux界のデスクトップの兄貴分。GNOME 42以後は対応が良好で、ほぼbugがない。ただしbugがないことは、X11の機能を完全に置き換えられることを意味しない。
  • KDE Plasma 6.4:どんどん良くなっているが、問題はまだ多い。KDE 5.27以前のバージョンについては、まあ、戒慎恐懼。KDEは最初に5.4版でWaylandに対応したとはいえ、私はまだあまり使う勇気がない。画面崩れ、タスクバークラッシュ、何でも来る。
  • XFCE 4.20:すでにWaylandを初歩的にサポートしている。
  • Cinnamon 6.0:すでにWaylandを初歩的にサポートしている。
  • LXQT 1.4:2024年にWayland対応予定を発表した。
  • i3wm、dwmなどのタイル型ウィンドウマネージャー:移植できない。Sway、Hyprlandで置き換えられる。この種のタイル型ウィンドウマネージャーを使う高手なら、私が言わなくても自分で適不適を判断できるはずだ。

Wayland環境へ切り替えたいなら、まず「GNOME」デスクトップ環境を搭載したLinuxディストリビューションを試すとよい。GNOMEはLinuxデスクトップ環境の兄貴分であり、Wayland対応度が最良だ。

Linuxディストリビューション部分については、Wayland更新とバグ修正を早く受け取りたいなら、ローリングリリース(Arch Linux、Fedora、openSUSE Tumbleweed、Debian Sid、Gentoo)ユーザーのほうが有利で、安定リリース(Debian Stable、Ubuntu LTS、openSUSE Leap、Rocky Linux)ユーザーはより長く待つ必要がある。

関連読書:Wayland開発進捗を追跡する
#

関連記事


最後までお読みいただきありがとうございます。本サイトでは公開コメント欄を設けていません。私はソーシャルな反応やアクセス数を追い求めるためではなく、自分の考えを誠実に探求するために文章を書いています。記事を丁寧にお読みいただいたうえで、ご感想やご意見をお寄せいただければ幸いです。誤字・誤り・技術的な問題などを見つけた場合、またはフィードバックを共有したい場合は、Aboutページに記載しているメールアドレスまでお気軽にご連絡ください。