Port GNOME to Wayland

Status: In progress

Description

We want to make GNOME work on top of Wayland instead of X. This is a multi-cycle effort that can be broken into several mostly independent steps:

  • Complete the GTK+ Wayland backend
  • Turn GNOME shell into a Wayland compositor
  • Replace X dependencies in the rest of the desktop with Wayland equivalents
  • Port applications to run as Wayland clients instead of X clients

For proposal for 3.10 is to focus on the first two steps and have a tech preview of GNOME shell as a Wayland compositor.

A lot more details and background information can be found here.

For the continuation of this feature, see ThreePointEleven/Features/WaylandSupport.

Owner

Matthias Clasen

Involved Parties

GNOME Shell team (Owen Taylor, Jasper St.Pierre, Giovanni Campagna, ...),
GTK+ team (Matthias Clasen, Benjamin Otte, Alexander Larsson, Emmanuele Bassi, ...),
Wayland developers (Kristian Høgsberg, Rob Bradford, Neil Roberts, ...)

Current Status

Detailed information for the state of GTK+/Wayland and the GNOME shell port has been collected. Initial testing of GNOME applications has been done. The GTK+ backend has recently made significant progress, with client-side decorations and settings support.

Initial work on mutter is in the wayland branch.

At GUADEC in Brno, we had several meetings to discuss the short term strategy for getting a tech preview together for 3.10.

We talked about running nested vs. kms: kms is much less stable, and running nested is very useful for development. But the tech preview should be close to the actual desired experience, so kms is preferred for it.

If we can't get gdm to support lauching a Wayland-based session, then just switching to a vt, and running mutter-launch from there would be acceptable for a tech preview.

For the GTK+ backend, we talked about the need for an xdg_shell interface to extend and replace wl_shell - this will not be ready for 3.10, and the current wl_shell-based backend works well enough for a tech preview.

Tasks for 3.10

  • (./) Set up mutter wayland branch (Owen, Jasper, Rob, Robert)

    • (./) Create mutter branch, stop rebasing

    • (./) 705496 Set up jhbuild module for the mutter wayland branch (Matthias)

    • (./) 705497 Make parallel installable (library, translations, headers, pkgconfig files)

    • (./) Build tarballs for mutter-wayland from the wayland branch

  • (./) 705861 Sort out mutter-launch vs. wayland-lauch (Giovanni, Kristian)

  • (./) 705861 Add support for running on bare metal (Giovanni)

  • (./) 705497 Change gnome-shell to build two binaries (Owen, Jasper)

  • (./) Merge display configuration work in various modules (Giovanni)

  • (./) Merge idle tracking work in various modules (Giovanni)

  • (./) 705506 Add xwayland to jhbuild (Matthias)

  • Build xwayland in fedora (Adam)
  • (./) Build mutter-wayland in fedora (Jasper)

  • (./) 705498 Make GTK+ default to wayland (Matthias)

  • (./) 672358 Add GtkClipboard vfuncs (Benjamin)

  • (./) Make client-side decorations work (Jasper, Matthias)

  • (./) Make appmenu work under Wayland

  • (./) 706308 Add a kms display backend

Known regressions in 3.10

  • Input handling tweaks (e.g. touchpad behaviours)
  • Keyboard accessibility may not be there
  • Performance not up to par yet
  • 705515 Some fullscreen behaviours not implemented (scaling)

  • 707401 Resizing and maximization may not work perfectly

  • 705502 Subsurfaces not implemented

  • Totem and clutter-gtk apps will not work without subsurfaces
  • 705514 YUV surfaces not implemented

  • Direct accelerated rendering in X will not work
  • Status icons may or may not work
  • 697855 DND won't work

  • 705523 No clipboard manager

  • 707079 Always on top won't work

  • 707080 Always on current workspace won't work

  • 707080 Moving between workspaces from window menu won't work

  • 707446 Keymaps may not be synced between X and Wayland clients

  • 706963 Global and window keybindings may not work

  • 707863 Popup surfaces are missing

  • 706655 Hot corner and pointer barriers don't work

  • Touchpad support is very minimal

How you can help

Eliminating X dependencies in applications can be very easy; just find an application on the list, and investigate why it is failing. If you want to get more involved, there's lots of things in the GTK+ Wayland backend or in Wayland itself that could use your help.

ThreePointNine/Features/WaylandSupport (last edited 2013-09-19 13:54:40 by MatthiasClasen)