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)
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.