The state of Wayland vs X (esp. in regard to to the next LTS)

My recent experience using Wayland in Gnome 3.36 (Arch):

  • Animation performance was great (Intel620+NVidia).
  • The new gestures are really nice
  • Most Qt apps are broken some way or another, font rendering is too bold and dark (but I reported that and was promptly fixed upstream). As a workaround apps can be launched in XWayland as QT_QPA_PLATFORM=xcb <cmd>.
  • Screen sharing is a YMMV experience: Chromium uses the xdg portal to share the entire screen through pipewire (but you can’t share specific windows and there is some “dialog hell” in order to allow sharing), Zoom works out-of-the-box but then the mouse pointer is not shared which is pretty bad considering you usually do want to point stuff.
  • Apps based on Eclipse platform (I use DBeaver) work like s**t, again QT_QPA_PLATFORM=xcb is your friend here.
  • Apps running in XWayland can be the target of xdotool, xwininfo, xprop and those xorg tools you’ve grown to love.

All in all, a pretty decent experience if you “XWaylandify” offending apps and don’t depend a lot on screen sharing (which isn’t very probable in these times we’re living, I guess).

2 Likes

Did you have to do any setup to get chromium to use xdg portal and pipewire for screen sharing?

In Arch and in Fedora you need to install the libpipewire2 (or something-like-that compatibility package). Chromium is compiled against an older version of pipewire but, other than that, both versions can coexist (the new one running as a service, the other one used as a library). I was unable to make it work in Ubuntu 19.10, even though it ships the old pipewire version. Never tried with 20.04.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/798#note_786164

The Wayland fullscreen redirect will not hit the 3.36 stable branch too soon because it depends on a fairly new Xserver (not a problem for Ubuntu because the new one made it for Focal). Upstream wants the distros to cherrypick it, @3v1n0, @laney

There’s a mesa bug in 20.04 that breaks some apps on Wayland. For me it was mpv, but I found a workaround (export MESA_LOADER_DRIVER_OVERRIDE=i965).

1 Like

https://github.com/PipeWire/pipewire/blob/ba215efed0da8d6c9f3f2414d76a8e2c75352501/NEWS

PipeWire 0.3.0

The 0.3 release is a major milestone in the developement of
PipeWire. It features a complete redesign of the scheduling
mechanisms that make it possible to run a JACK compatibility
layer with comparable performance to JACK2.

The API has been reworked and is declared stable now. All
developement files and runtime paths are versioned so that
future incompatible changes can be done without breaking
exising applications.

PipeWire 0.3 also includes a (now mandatory) session manager
that populates and controls the PipeWire graph. This example
session manager is very simple and not configurable. It is
expected that future version will either switch to a more
flexible session manager (like WirePlumber) or improve the
configuration options of the example session manager.

PipeWire 0.3 includes both PulseAudio, JACK and ALSA
compatibility libraries that are known to support a wide range
of applications. The ALSA library is pretty complete at this
point. The JACK and mostly the PulseAudio compatibility
libraries need more work. See the Wiki pages for the current
compatibility problems. We do not yet encourage people to
switch away from their existing audio solutions (PulseAudio
or JACK) but we would love to hear from people who try it
anyways. Future versions will mostly focus on improving
compatibility further to make PipeWire a drop-in replacement.

PipeWire comes with some GStreamer plugins to consume and
produce data for PipeWire. The consumer (pipewiresrc) is
working well in most cases. The sink (pipewiresink) is known
to be somewhat problematic for now.

The latest Pipewire has now a stable API. Which will probably make it more acceptable for the Ubuntu security team to MIR it into main.

The graphical desktop remote stuff seems to be done by now and the new focus is turning Pipewire into a JACK and Pulseaudio drop-in replacement. PulseAudio seems to be not quite ready yet, but JACK doesn’t sound to be too far off.

This could be a potential roadmap for the future:

Groovy Gorrilla cycle:

  • Make Wayland the default session again for GG early in the circle. Just like you did for AA. After all it can be reverted again two weeks before release. Maybe it can be made the default for everything but the nVidia binary blob? That installing the binary blob removes the Wayland session option in GDM and removing the blob adds it again?
  • MIR Pipewire and compile Mutter with it. Thus the Wayland people finally get working remote-desktop-support for GG.

HH cycle:

  • Turn on Pipewire JACK support, maybe even try PulseAudio support

II cycle:

  • Cycle: Turn on PW-PulseAudio early and iron out the kinks to have that going well for the next LTS.
4 Likes