Wayland は、同じカーネル上のローカルクライアントとコンポジター向けに設計された
ディスプレイプロトコルです。ツールキットの Wayland バックエンドは libwayland-client を使用して、
Unix ソケットに接続します。通常は、/run/user/1000/wayland-0 のような
$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY です。
プロトコルモデル #
クライアントとコンポジターは、サーフェス、バッファ、入力シートなど、番号が付けられた オブジェクトに対する型付きのリクエストとイベントを交換します。XML プロトコル定義から マーシャリングスタブが生成されます。クライアントは共有メモリまたは DMA-BUF を基盤とする バッファにレンダリングし、それらのバッファをコンポジターに送信します。コンポジターは サーフェスを合成し、出力と入力を制御します。したがって Wayland コンポジターは、 X11 サーバー、ウィンドウマネージャー、およびコンポジターでは別々であることが多かった役割を 統合します。
コアプロトコルには TCP トランスポートがありません。リモートディスプレイソリューションは、 独自のトランスポートとセキュリティモデルを提供します。ランタイムディレクトリと ディスプレイソケットはセキュリティ境界であるため、信頼できないコンテナにマウントすべきではありません。
Xwayland 互換性 #
Xwayland は、Wayland コンポジターの配下にネストされた X サーバーとして動作します。 X11 Unix ソケットで従来の X11 クライアントを受け入れ、そのウィンドウを Wayland サーフェスに 変換します。ネイティブ Wayland アプリケーションには Xwayland は不要ですが、libX11 または その他の X11 専用ツールキットバックエンドを使用するアプリケーションでは、今なお重要です。
コメント
GitHub で閲覧・コメントする(投稿にはログインが必要です)