[PATCH wayland] doc: start documenting Xwayland

Pekka Paalanen ppaalanen at gmail.com
Tue Nov 22 09:58:33 UTC 2016


On Tue, 22 Nov 2016 09:20:48 +0000
Daniel Stone <daniel at fooishbar.org> wrote:

> Hi,
> 

Hi Daniel,

nice comments, I'll revise the patch later. Some replies below.

> On 21 November 2016 at 15:06, Pekka Paalanen
> <pekka.paalanen at collabora.co.uk> wrote:
> > On Mon, 21 Nov 2016 14:31:43 +0200
> > Pekka Paalanen <ppaalanen at gmail.com> wrote:  
> >> +    <para>
> >> +      X11 and Wayland are different enough that there is no "simple" way to
> >> +      translate between them. Most of X11 is uninteresting to a Wayland
> >> +      compositor. That combined with the gigantic implementation effort needed
> >> +      to support X11 makes it untractable to just write X11 support directly in  
> 
> Nit: intractable.
> 
> >> +    <para>
> >> +      Therefore Wayland compositors should use Xwayland, the X11 server that
> >> +      lives in the Xorg server source code repository and shares most of the
> >> +      implementation with the Xorg server. Xwayland is a complete X11 server,
> >> +      just like Xorg is, but instead of talking to hardware and device drivers,
> >> +      it acts as a Wayland client. The rest of this chapter talks about how
> >> +      Xwayland works.
> >> +    </para>  
> 
> Hm, Xwayland still talks to hardware when running Glamor; it just
> doesn't drive KMS / display controllers directly.
> 
> >> +    <para>
> >> +      The X11 window manager (XWM) is an integral part of the Wayland
> >> +      compositor. XWM uses the usual X11 window management protocol to manage
> >> +      all X11 windows in Xwayland. Most importantly, XWM acts as a bridge
> >> +      between Xwayland window state and the Wayland compositor's window manager
> >> +      (WWM). This way WWM can manage all windows, both native Wayland and X11
> >> +      (Xwayland) windows. This is very important for a coherent user
> >> +      experience.
> >> +    </para>  
> 
> Probably worth pointing out explicitly that XWM is, like other
> windows, a real genuine X11 client. And that this creates a dependency
> loop which requires careful handling: Xwayland is a Wayland client of
> the compositor, which is an X11 client of Xwayland.
> 
> >> +    <para>
> >> +      Xwayland uses Wayland core protocol and some extensions for input and
> >> +      output. The used protocol is all generic and public, there are no
> >> +      Xwayland-specific or private Wayland extensions being used.  
> 
> This is true, strictly speaking, but maybe misleading by omission as
> the WL_SURFACE_ID X11 property is essentially private protocol between
> Xwayland and XWM / the compositor. Even without that, I'm not sure we
> want to paint ourselves into a corner by disallowing the use of
> private protocol in the future.
> 
> >> +      Xwayland is
> >> +      just a regular Wayland client, except it is specially handled by the WWM.  
> 
> WWM?

Introduced in the previous paragraph: Wayland window manager; by that I
mean the proper window manager in a Wayland compositor, to
differentiate from the component that acts as a X11 WM, even if you
count XWM as a part of WWM.

Does any better terminology come to mind?

Or is the split between XWM and WWM just a Weston thing?

> >> +<!-- TBD
> >> +  <section id="sect-X11-Application-Support-output">
> >> +    <title>Output Characteristics</title>
> >> +    <para>
> >> +      Output restrictions?
> >> +      Absolute window positioning?
> >> +      Front buffer rendering?
> >> +      Does Xwayland draw to buffers that are reserved by the Wayland compositor?
> >> +      GLAMOR?
> >> +      Each window drawn to separate off-screen buffer.  
> 
> Hm, some of these are essentially implementation details (and bugs),
> rather than anything conceptual.

Right. It's a bit hard to draw the line between the implementation and
the description, since there is and likely ever will be just one
implementation. I would also like to document some implementation
details somewhere (where?).

> >> +    <para>
> >> +      There are two separate, asynchronous communication channels between
> >> +      Xwayland and a Wayland compositor: one uses the Wayland protocol, and the
> >> +      other one solely for XWM uses X11 protocol. This setting demands great
> >> +      care from the XWM implementation to avoid (random) deadlocks with
> >> +      Xwayland. It is often nearly impossible to prove that synchronous or
> >> +      blocking X11 calls from XWM cannot cause a deadlock, and therefore it is
> >> +      strongly recommended to make all X11 communications asynchronous. All
> >> +      Wayland communications are already asynchonous by design.
> >> +    </para>  
> 
> Oh cool, you do mention this. Still might be worth a small shout in
> the intro though.
> 
> >> +    <para>
> >> +      The Wayland connection carries window content and input events, while the
> >> +      X11 connection carries window management messages. This design avoids the
> >> +      need to create a Wayland protocol extension specific to Xwayland. It also
> >> +      lets Xwayland to be agnostic of any Wayland shell protocols, allowing  
> >
> > ok, I see I lied here. Xwayland does use wl_shell. Not in the usual
> > case of rootless operation though.
> >
> > I see that xwl_realize_window() creates a wl_shell_surface if the
> > screen is rootful (not rootless). I assume that means that
> > xwl_realize_window() will be called only for the root window in that
> > case, and wl_shell allows it to appear on screen.
> >
> > It does indeed seem to work. Manually starting 'Xwayland :2' brings up
> > a black surface, and I can run fluxbox and xterm on DISPLAY=:2, and get
> > fluxbox to decorate the xterm.
> >
> > I wrote the documentation only for the rootless case, it seems. I might
> > fix the text to acknowledge the existence of the rootful mode later,
> > either as follow-up or revised, depending.
> >
> > Unless you think the rootful mode should get culled?  
> 
> I'd be fine with jettisoning it. I don't think anyone uses it, and if
> anyone actually wants a rootful X server, I can't imagine a usecase
> which would be better served with Xwayland than with Xephyr (X11
> client -> Xephyr -> Xwayland -> Wayland, ha).

Yeah, and one problem with rootful Xwayland is that it has no
decorations and is not a usable window by much any standards.

> The rest looks good to me.

As do the comments.


Thanks,
pq
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 801 bytes
Desc: OpenPGP digital signature
URL: <https://lists.x.org/archives/xorg-devel/attachments/20161122/74550b1d/attachment-0001.sig>


More information about the xorg-devel mailing list