Complete the GNOME Wayland port

Status: Planning


In 3.10, we started the effort to make GNOME work on top of Wayland instead of X. As a result, GNOME shell can now operate as a Wayland compositor, the display panel is using mutter D-Bus interfaces to configure displays under both X and Wayland, and many GNOME applications have started to use client-side decorations and header bars.

The 3.10 feature was tracked in ThreePointNine/Features/WaylandSupport.

For 3.12, the focus is to

  • Replace remaining X dependencies in the desktop with Wayland equivalents
  • Port applications to run as Wayland clients instead of X clients

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


Matthias Clasen

Involved Parties

GNOME Shell team (OwenTaylor, JasperStPierre, GiovanniCampagna, Florian Muellner, ...),
GTK+ team (MatthiasClasen, Benjamin Otte, Alexander Larsson, EmmanueleBassi, ...),
Wayland and cogl developers (Kristian Høgsberg, Rob Bradford, NeilRoberts, ...)
gdm developers (Ray Strode, ...)
Happy volunteers (Rui Matos, David King, Richard Hughes, Bastien Nocera...)
Application developers

Current Status

Detailed information for the state of GTK+/Wayland and the GNOME shell port has been collected.

The Wayland compositor is being developed in the mutter wayland branch.

Information on trying GNOME / Wayland with jhbuild can be found here.

Remaining tasks for 3.10

Known limitations and regressions in 3.10/3.12

  • Can't launch Wayland sessions from gdm
  • Global keyboard shortcuts don't work
  • Input handling tweaks (e.g. touchpad behaviours)
  • Keyboard accessibility may not be there
  • Performance not up to par yet
  • Totem and clutter-gtk apps will not work without subsurfaces
  • Direct accelerated rendering in X will not work
  • Status icons may or may not work
  • Hot corner and pointer barriers don't work
  • Limited touchpad support

Tasks for 3.14

  • Implement DND
  • (./) 707573 Implement HW cursors in GNOME shell

  • (./) 706963 Implement global and window keybindings

  • 705523 No clipboard manager

  • Implement startup notification
  • Implement remaining window management functions
    • 705515 Some fullscreen behaviours not implemented (scaling)

    • Resizing and maximization may not work perfectly (707401 implemented initial support, but we need to improve to get fully flicker-free maximization)

    • (./) 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

    • (./) Switch to xdg_shell instead of wl_shell

  • Implement remaining Wayland protocol pieces
    • 705514 YUV surfaces not implemented

    • (./) 705502 Subsurfaces not implemented

    • (./) 707863 Popup surfaces not implemented

  • Support for Wayland sessions
  • Color management in GNOME shell (basic per-screen color correction already works)
  • Wayland text protocol support in GNOME shell
    • OSK
    • Input methods
    • (./) 707446 Keymaps may not be synced between X and Wayland clients

    • 698307 Merge gtk text protocol patch (Matthias, Rui)

    • 705504 Make the on-screen keyboard send keysyms on wayland (David, Rui)

  • Accessibility support in GNOME shell
    • Visual bell
    • slow, sticky, bounce keys (this may benefit from libinputcommon)
    • mousetweaks
    • locate pointer
  • (./) hot corner

  • 706655 Pointer barriers

  • Full touchpad support (this may benefit from libinputcommon)
  • Wacom support
  • (./) 695737 Make clutter-gtk work under Wayland (needs subsurfaces)

  • Make gstreamer work well under Wayland
  • 712775 Move gsd cursor plugin functionality into mutter

A recent status update on the Wayland port can be found here:

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.

ThreePointEleven/Features/WaylandSupport (last edited 2014-08-27 17:29:47 by MatthiasClasen)