Wayland (display server protocol)

Wayland

Screenshot of a Wayland demonstration
Original author(s) Kristian Høgsberg
Developer(s) freedesktop.org et al.
Initial release 0.85 / 9 February 2012 (2012-02-09)[1]
Stable release 1.10.0 / 17 February 2016 (2016-02-17)[2]
Preview release 1.9.92 / 2 February 2016 (2016-02-02)[3]
Development status Active
Written in C
Operating system Linux
Size c.100 KB
Type
License MIT License[4][5][6]
Website wayland.freedesktop.org

Wayland is a computer protocol that specifies the communication between a display server (called Wayland compositor) and its clients, as well as a reference implementation of the protocol in the C programming language.[7]

Wayland is developed by a group of volunteers led by Kristian Høgsberg as a free and open community-driven project with the aim of replacing the X Window System with a modern, simpler windowing system in Linux and Unix-like operating systems.[8] The project's source code is published under the terms of the MIT License, a permissive free software licence.[4]

As part of its efforts, the Wayland project also develops a reference implementation of a Wayland compositor called Weston.

Overview

① The evdev module of the Linux kernel gets an event and sends it to the Wayland compositor.
② The Wayland compositor looks through its scenegraph to determine which window should receive the event. The scenegraph corresponds to what's on screen and the Wayland compositor understands the transformations that it may have applied to the elements in the scenegraph. Thus, the Wayland compositor can pick the right window and transform the screen coordinates to window local coordinates, by applying the inverse transformations. The types of transformation that can be applied to a window is only restricted to what the compositor can do, as long as it can compute the inverse transformation for the input events.
③ As in the X case, when the client receives the event, it updates the UI in response. But in the Wayland case, the rendering happens by the client via EGL, and the client just sends a request to the compositor to indicate the region that was updated.
④ The Wayland compositor collects damage requests from its clients and then re-composites the screen. The compositor can then directly issue an ioctl to schedule a pageflip with KMS.

In recent years, Linux desktop graphics has moved from having "a pile of rendering interfaces... all talking to the X server, which is at the center of the universe" towards putting the Linux kernel and its components (i.e. DRI, DRM) "in the middle", with "window systems like X and Wayland ... off in the corner". This will be "a much-simplified graphics system offering more flexibility and better performance".[9]

Kristian Høgsberg could have added an extension to X as many recent projects have done, but preferred to "[push] X out of the hotpath between clients and the hardware" for reasons explained in the project's FAQ:[10]

What’s different now is that a lot of infrastructure has moved from the X server into the kernel (memory management, command scheduling, mode setting) or libraries (cairo, pixman, freetype, fontconfig, pango, etc.), and there is very little left that has to happen in a central server process. ... [An X server has] a tremendous amount of functionality that you must support to claim to speak the X protocol, yet nobody will ever use this. ... This includes code tables, glyph rasterization and caching, XLFDs (seriously, XLFDs!), and the entire core rendering API that lets you draw stippled lines, polygons, wide arcs and many more state-of-the-1980s style graphics primitives. For many things we've been able to keep the X.org server modern by adding extension such as XRandR, XRender and COMPOSITE ... With Wayland we can move the X server and all its legacy technology to an optional code path. Getting to a point where the X server is a compatibility option instead of the core rendering system will take a while, but we'll never get there if [we] don’t plan for it.

Wayland consists of a protocol and a reference implementation named Weston. The project is also developing versions of GTK+ and Qt that render to Wayland instead of to X. Most applications are expected to gain support for Wayland through one of these libraries without modification to the application.

Wayland does not currently provide network transparency, but it may in the future.[11] It was attempted as a Google Summer of Code project in 2011, but was not successful.[12] Adam Jackson has envisioned providing remote access to a Wayland application by either "pixel-scraping" (like VNC) or getting it to send a "rendering command stream" across the network (as in RDP, SPICE or X11).[13] As of early 2013, Høgsberg is experimenting with network transparency using a proxy Wayland server which sends compressed images to the real compositor.[14]

Software architecture

Protocol architecture

In the Wayland protocol architecture, a client and a compositor communicate through the Wayland protocol using the reference implementation libraries.

Wayland protocol follows a client–server model in which clients are the graphical applications requesting the display of pixel buffers on the screen, and the server (compositor) is the service provider controlling the display of these buffers.

The Wayland reference implementation has been designed as a two-layer protocol:[15]

While the low-level layer was written manually in C language, the high-level layer is automatically generated from a description of the elements of the protocol stored in XML format.[17] Every time the protocol description of this XML file changes, the C source code that implements such protocol can be regenerated to include the new changes, allowing a very flexible, extensible and error-proof protocol.

The reference implementation of Wayland protocol is split in two libraries: a library to be used by Wayland clients called libwayland-client and a library to be used by Wayland compositors called libwayland-server.[16]:57

Protocol overview

The Wayland protocol is described as an "asynchronous object-oriented protocol."[16]:9 Object-oriented means that the services offered by the compositor are presented as a series of objects living on the same compositor. Each object implements an interface which has a name, a number of methods (called requests) as well as several associated events. Every request and event has zero or more arguments, each one with a name and a data type. The protocol is asynchronous in the sense that requests do not have to wait for synchronized replies or ACKs, avoiding round-trip delay time and achieving improved performance.

The Wayland clients can make a request (a method invocation) on some object if the object's interface supports that request. The client must also supply the required data for the arguments of such request. This is the way the clients request services from the compositor. The compositor in turn sends information back to the client by causing the object to emit events (probably with arguments too). These events can be emitted by the compositor as a response to a certain request, or asynchronously, subject to the occurrence of internal events (such as one from an input device) or state changes. The error conditions are also signaled as events by the compositor.[16]:9

For a client to be able to make a request to an object, it first needs to tell the server the ID number it will use to identify that object.[16]:9 There are two types of objects in the compositor: global objects and non-global objects. Global objects are advertised by the compositor to the clients when they are created (and also when they are destroyed), while non-global objects are usually created by other objects that already exist as part of their functionality.[18]

The interfaces and their requests and events are the core elements that define the Wayland protocol. Each version of the protocol includes a set of interfaces, along with their requests and events, which are expected to be in any Wayland compositor. Optionally, a Wayland compositor may define and implement its own interfaces that support new requests and events, thereby extending functionality beyond the core protocol.[16]:10 To facilitate changes to the protocol, each interface contains a "version number" attribute in addition to its name; this attribute allows for distinguishing variants of the same interface. Each Wayland compositor exposes not only what interfaces are available, but also the supported versions of those interfaces.[16]:12

Wayland core interfaces

The interfaces of the current version of Wayland protocol are defined in the file protocol/wayland.xml of the Wayland source code.[17] This is an XML file that lists the existing interfaces in the current version, along with their requests, events and other attributes. This set of interfaces is the minimum required to be implemented by any Wayland compositor.

Some of the most basic interfaces of the Wayland protocol are:[16]:10-12

A typical Wayland client session starts by opening a connection to the compositor using the wl_display object. This is a special local object that represents the connection and does not live within the server. By using its interface the client can request the wl_registry global object from the compositor, where all the global object names live, and bind those that the client is interested in. Usually the client binds at least a wl_compositor object from where it will request one or more wl_surface objects to show the application output on the display.[18]

Wayland extension interfaces

A Wayland compositor can define and export its own additional interfaces.[16]:10 This feature is used to extend the protocol beyond the basic functionality provided by the core interfaces, and has become the standard way to implement Wayland protocol extensions. Certain compositors can choose to add custom interfaces to provide specialized or unique features. The Wayland reference compositor, Weston, used them to implement new experimental interfaces as a testbed for new concepts and ideas, some of which later became part of the core protocol (such as wl_subsurface interface added in Wayland 1.4[19]).

Extension protocols to the core protocol

XDG-Shell protocol

XDG-Shell protocol (see freedesktop.org for XDG) is an extended way to manage surfaces under Wayland compositors (not only Weston). The traditional way to manipulate (maximize, minimize, fullscreen, etc.) surfaces is to use the wl_shell_*() functions, which are part of the core Wayland protocol and live in libwayland-client. An implementation of the xdg-shell protocol, on the contrary, is supposed to be provided by the Wayland compositor. So you will find the xdg-shell-client-protocol.h header in the Weston source tree. Each Wayland compositor is supposed to provide its own implementation.

As of June 2014, XDG-Shell protocol was not versioned and still prone to changes.

xdg_shell is a protocol aimed to substitute wl_shell in the long term, but will not be part of the Wayland core protocol. It starts as a non-stable API, aimed to be used as a development place at first, and once features are defined as required by several desktop shells, it can be finally made stable. It provides mainly two new interfaces: xdg_surface and xdg_popup. The xdg_surface interface implements a desktop-style window that can be moved, resized, maximized, etc.; it provides a request for creating child/parent relationship. The xdg_popup interface implements a desktop-style popup/menu; an xdg_popup is always transient for another surface, and also has implicit grab.[20]

IVI-Shell protocol

IVI-Shell protocol is an extension protocol to the Wayland core protocol by the IVI-people.

Rendering model

Wayland compositor and its clients use EGL to draw directly into the framebuffer; X.Org Server with XWayland and Glamor.

The Wayland protocol does not include a rendering API.[21][16]:7[22][23] Instead, Wayland follows a direct rendering model, in which the client must render the window contents to a buffer shareable with the compositor.[16]:7 For that purpose, the client can choose to do all the rendering by itself, use a rendering library like Cairo or OpenGL, or rely on the rendering engine of high-level widget libraries with Wayland support, such as Qt or GTK+. The client can also optionally use other specialized libraries to perform specific tasks, such as Freetype for font rendering.

The resulting buffer with the rendered window contents are stored in a wl_buffer object. The internal type of this object is implementation dependent. The only requirement is that the content data must be shareable between the client and the compositor. If the client uses a software (CPU) renderer and the result is stored in the system memory, then client and compositor can use shared memory to implement the buffer communication without extra copies. The Wayland protocol already provides natively this kind of shared memory buffers through wl_shm and wl_shm_pool interfaces .[16]:11, 20-21 The drawback of this method is that the compositor may need to do additional work (usually to copy the shared data to the GPU) to display it, which leads to slower graphics performance.

The most typical case is for the client to render directly into a video memory buffer using a hardware (GPU) accelerated API such as OpenGL, OpenGL ES or Vulkan. Client and compositor can share this GPU-space buffer using a special handler to reference it.[24] This method allows the compositor to avoid additional copies of data to the GPU, resulting in faster graphics performance than using shm buffers, and therefore the preferred one. The compositor can further optimize the composition of the final scene to show on the display by using the same hardware acceleration API that the client.

When the rendering is done and the buffer shared, the Wayland client should instruct the compositor to present the rendered contents of the buffer on the display. For this purpose, the client binds the buffer object that stores the rendered contents to the surface object, and sends a "commit" request to the surface, transferring the effective control of the buffer to the compositor.[15] Then, the client waits for the compositor to release the buffer (signaled by an event) if it wants to reuse the buffer to render another frame, or it can use another buffer to render the new frame and, when the rendering is finished, to bind this new buffer to the surface and commit its contents.[16]:7 The procedure used for rendering, including the number of buffers involved and their management, is entirely under the client control.[16]:7

Comparison with other window systems

Differences between Wayland and X

There are several differences between Wayland and X in regards to performance, code maintainability, and security:[25]

Some of the differences can also be easily understood by comparing the architecture diagrams of both protocols.[33]

Compatibility with X

A screenshot showing xwayland

XWayland is an X Server running as a Wayland client, thus capable of displaying native X11 client applications in a Wayland compositor environment.[34] This is similar to the way XQuartz runs X applications in OS X’s native windowing system. The goal of XWayland is to facilitate the transition from X Window System to Wayland environments, providing a way to run unported applications in the meantime. XWayland was mainlined into X.Org Server version 1.16[35]

Widget toolkits such as Qt 5 and GTK+ 3 can switch their graphical back-end at run time,[36] allowing users to choose at load time whether they want to run the application over X or over Wayland. Qt 5 provides the -platform command-line option[37] to that effect, whereas GTK+ 3 lets users select the desired GDK back-end by setting the GDK_BACKEND Unix environment variable.[36][38]

Wayland compositors

Typical elements of a window. Neither Wayland nor X11 specifies what software is responsible for rendering the window decoration. Weston requires that they are drawn by the client, but KWin will implement server-side decoration.[28]

Display servers that implement the Wayland display server protocol are also called Wayland compositors because they additionally perform the task of a compositing window manager.

Weston

Weston is the reference implementation of a Wayland compositor. It is written in C and was initially published under GPLv2, but is currently published under the Historical Permission Notice and Disclaimer license. Weston is written for the Linux kernel API; that is, Weston only has official support for the Linux kernel due to dependence on certain features, such as Linux's kernel mode-setting, Graphics Execution Manager (GEM), and udev, which have not yet been implemented in other Unix-like operating systems.[43] When running on the Linux kernel, handling of the input hardware relies on evdev, while the handling of buffers relies on Generic Buffer Management (GBM).

Weston is written for the Linux kernel; as of February 2013, a prototype port of Weston to FreeBSD was announced.[44]

Weston relies on GEM to share application buffers between the compositor and applications. It contains a plugin system, external "shells" for WM/dock/etc, and Weston supports X clients. Clients are responsible for the drawing of their window borders and their decorations. For rendering, Weston can use OpenGL ES or software (pixman[45]).[46] The full OpenGL implementation is not used, because on most current systems, installing the full OpenGL libraries would also install GLX and other X Window System support libraries as dependencies.[47]

Maynard is a graphical shell and has been written as a plugin for Weston, similar as the GNOME Shell has been written as a plugin to Mutter.[48]

A remote access interface for Weston was proposed in October 2013 by a RealVNC employee.[49]

libinput

libinput was created to consolidate the input stack across multiple Wayland compositors.

Libinput handles input devices for multiple Wayland compositors and also provides a generic X.Org Server input driver. It aims to provide one implementation for multiple Wayland compositors with a common way to handle input events while minimizing the amount of custom input code compositors need to include. libinput provides device detection (via udev), device handling, input device event processing and abstraction.[50][51]

Version 1.0 of libinput followed version 0.21, and included support for tablets, button sets and touchpad gestures. This version will maintain stable API/ABI.[52]

As GNOME/GTK+ and KDE Frameworks 5[53] have mainlined the required changes, Fedora 22 will replace X.Org's evdev and Synaptics drivers with libinput.[54]

The Weston code for handling input devices (keyboards, pointers, touch screens, etc.) was split into its own separate library, called libinput, for which support was first merged in Weston 1.5.[55][56]

With version 1.16, the X.Org Server obtained support for the libinput library in form of a wrapper called xf86-input-libinput.[57][58]

Wayland Security Module

Wayland Security Module is a proposition that resembles the Linux Security Module interface found in the Linux kernel.[59]

Some applications (especially the ones related to accessibility) require privileged capabilities that should work across different Wayland compositors. Currently, applications under Wayland are generally unable to perform any sensitive tasks such as taking screenshots or injecting input events. Wayland developers are actively looking for feasible ways to handle privileged clients securely and then designing privileged interfaces for them.

Wayland Security Module is a way to delegate security decisions within the compositor to a centralized security decision engine.[59]

Adoption

As explained in the "Software architecture" section above, the Wayland protocol is designed to be simple so that additional protocols and interfaces need to be defined and implemented to achieve a holistic windowing system. As of July 2014, these additional interfaces are actively being worked on. So, while the toolkits already fully support Wayland, the developers of the graphical shells are cooperating with the Wayland developers creating the necessary additional interfaces.

Linux distributions

In general, out of the box support for a full desktop running Wayland in major Linux distributions is still in early stages. However, many distributions are highly interested in eventually switching from X.org to Wayland.

Toolkit support

Toolkits supporting Wayland include the following:

Desktop environments

Desktop environments in process of being ported from X to Wayland include GNOME,[73] KDE Plasma 5[74] and Enlightenment[75]. The Hawaii desktop environment is a desktop environment that exclusively supports Wayland.

In November 2015 Enlightenment e20 was announced with "full Wayland support".[76][40][77] GNOME plans that 3.20 will be the first version "to have a full Wayland session".[78] Wayland support for KDE was delayed until the release of Plasma 5[79], though previously KWin 4.11 got an experimental Wayland support.[80]. The version 5.4 of Plasma was the first with a Wayland session.[81]

Other software

Other software supporting Wayland includes the following:

Mobile and embedded hardware

Mobile and embedded hardware supporting Wayland includes the following:

History

Wayland uses direct rendering over EGL.

Kristian Høgsberg, a Linux graphics and X.Org developer who previously worked on AIGLX and DRI2, started Wayland as a spare-time project in 2008 while working for Red Hat.[97][98][99][100] His stated goal was a system in which "every frame is perfect, by which I mean that applications will be able to control the rendering enough that we'll never see tearing, lag, redrawing or flicker." Høgsberg was driving through the town of Wayland, Massachusetts when the underlying concepts "crystallized", hence the name.[99][101]

In October 2010, Wayland became a freedesktop.org project.[102][103] As part of the migration the prior Google Group was replaced by the wayland-devel mailing list as the project's central point of discussion and development.

The Wayland client and server libraries were initially released under the MIT License,[104] while the demo compositor and clients originally were under the GNU General Public License version 2.[105] Later all the GPL code was relicensed under the MIT license "to make it easier to move code between the reference implementation and the actual libraries".[106] In 2015 it was discovered that the license text used by Wayland was a slightly different and older version of the MIT license, and the license text was updated to the current version used by the X.Org project (known as MIT Expat License).[4]

Wayland works with all Mesa-compatible drivers with DRI2 support[89] as well as Android drivers via the Hybris project.[107][108][109]

The developers of Wayland are largely present X.Org Server developers.[32]

Releases

Major Wayland/Weston releases[110]
Version Date Wayland main features Weston main features
Old version, no longer supported: 0.85 9 February 2012[1] First release
Old version, no longer supported: 0.95 24 July 2012[111] Began API stabilization
Old version, no longer supported: 1.0 22 October 2012[112][113] Stable wayland-client API
Old version, no longer supported: 1.1 15 April 2013[114][115] Software rendering.[116] FBDEV, RDP backends
Old version, no longer supported: 1.2 12 July 2013[117][118] Stable wayland-server API Color management. Subsurfaces. Raspberry Pi backend
Old version, no longer supported: 1.3 11 October 2013[119] More pixel formats. Support for language bindings Android driver support via libhybris
Old version, no longer supported: 1.4 23 January 2014[19] New wl_subcompositor and wl_subsurface interfaces Multiple framebuffer formats. logind support for rootless Weston
Old version, no longer supported: 1.5 20 May 2014[55] libinput. Fullscreen shell.
Old version, no longer supported: 1.6 19 September 2014[120] libinput by default
Old version, no longer supported: 1.7 14 February 2015[121][122] Support for the Wayland presentation extension and for surface roles. IVI shell protocol.
Old version, no longer supported: 1.8 2 June 2015[123][124] Separated headers for core and generated protocol Repaint scheduling. Named outputs. Output transformations. Surface-shooting API.
Older version, yet still supported: 1.9 21 September 2015[125][126] Updated license Updated license. New test framework. Triple-head DRM compositor. linux_dmabuf extension.
Current stable version: 1.10 17 February 2016[2][127] Drag-and-drop functionality, grouped pointer events[128] Video 4 Linux 2, touch input, debugging improvements[129]
Future release: 1.11 31 May 2016 scheduled[2]
Legend:
Old version
Older version, still supported
Latest version
Latest preview version
Future release

See also

References

  1. 1 2 Høgsberg, Kristian (9 February 2012). "[ANNOUNCE] Wayland and Weston 0.85.0 released". wayland-devel mailing list.
  2. 1 2 3 Harrington, Bryce (17 February 2016). "[ANNOUNCE] wayland 1.10.0". wayland-devel (Mailing list).
  3. Harrington, Bryce (3 February 2016). "[ANNOUNCE] wayland 1.9.92". wayland-devel (Mailing list).
  4. 1 2 3 Harrington, Bryce (15 September 2015). "[ANNOUNCE] wayland 1.8.93". freedesktop.org (Mailing list).
  5. "wayland/wayland: root/COPYING". freedesktop.org. Retrieved 14 June 2015.
  6. Larabel, Michael (10 June 2015). "Wayland's MIT License To Be Updated/Corrected". Phoronix.com. Retrieved 17 April 2016.
  7. "Wayland". Wayland is a protocol for a compositor to talk to its clients as well as a C library implementation of that protocol.
  8. "Wayland". Wayland is intended as a simpler replacement for X, easier to develop and maintain.
  9. Corbet, Jonathan (5 November 2010). "LPC: Life after X". LWN.net. Retrieved 17 April 2016.
  10. "Wayland FAQ". Retrieved 17 February 2011.
  11. Høgsberg, Kristian (9 November 2010). "Network transparency argument". Wayland isn't a remote rendering API like X, but that doesn't exclude network transparency. Clients render into a shared buffer and then have to tell the compositor (...) what they changed. The compositor can then send the new pixels in that region out over the network. The Wayland protocol is already violently asynchronous, so it should be able to handle a bit of network lag gracefully. Remote fullscreen video viewing or gaming isn't going to work well, [but] I don't know any other display system that handles that well and transparently.
  12. Larabel, Michael (18 August 2011). "Remote Wayland Server Project: Does It Work Yet?". Phoronix.com. Retrieved 17 April 2016.
  13. Jackson, Adam (9 November 2010). "[Re:] Ubuntu moving towards Wayland".
  14. Stone, Daniel (1 February 2013). The real story behind Wayland and X (Presentation at linux.conf.au 2013). 42:00 minutes in. [W]e think it's going to better at remoting than X.
  15. 1 2 "The Hello Wayland Tutorial". Retrieved 25 July 2014.
  16. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Høgsberg, Kristian. "Wayland Documentation 1.3" (PDF). Retrieved 16 March 2016.
  17. 1 2 Høgsberg, Kristian. "protocol/wayland.xml". FreeDesktop.org. Retrieved 25 July 2014.
  18. 1 2 Paalanen, Pekka (25 July 2014). "Wayland protocol design: object lifespan". Retrieved 6 April 2016.
  19. 1 2 Høgsberg, Kristian (24 January 2014). "Wayland and Weston 1.4 is out". wayland-devel mailing list.
  20. "xdg_shell: Adding a new shell protocol". freedesktop.org. 3 December 2013. Retrieved 14 June 2014.
  21. Høgsberg, Kristian. "Wayland" (PDF). Retrieved 5 September 2014. No rendering API, all direct rendering
  22. "Wayland FAQ". Wayland project. Wayland project. Retrieved 4 September 2014. Wayland doesn't render on behalf of the clients, it expects the clients to use whatever means they prefer to render into a shareable buffer.
  23. Barnes, Jesse. "Introduction to Wayland" (PDF). Intel Open Source Technology Center. Retrieved 18 April 2016. Does not include a rendering API – Clients use what they want and send buffer handles to the server
  24. Paalanen, Pekka (21 November 2012). "On supporting Wayland GL clients and proprietary embedded platforms". Retrieved 6 April 2016. Buffer sharing works by creating a handle for a buffer, and passing that handle to another process which then uses the handle to make the GPU access again the same buffer.
  25. Griffith, Eric (7 June 2013). "The Wayland Situation: Facts About X vs. Wayland". Phoronix.com. p. 2. Retrieved 17 April 2016.
  26. Edge, Jake (11 April 2012). "LFCS 2012: X and Wayland". LWN.net. Retrieved 17 April 2016.
  27. "Wayland/X Compositor Architecture By Example: Enlightenment DR19" (PDF). Retrieved 18 April 2016.
  28. 1 2 Graesslin, Martin (7 February 2013). "Client Side Window Decorations and Wayland". Retrieved 17 April 2016.
  29. 1 2 Kerrisk, Michael (25 September 2012). "XDC2012: Graphics stack security". LWN.net. Retrieved 13 April 2016.
  30. Peres, Martin (21 February 2014). "Wayland Compositors - Why and How to Handle Privileged Clients!". Retrieved 17 April 2016.
  31. Graesslin, Martin (23 November 2015). "Looking at the security of Plasma/Wayland". Retrieved 18 April 2016.
  32. 1 2 Stone, Daniel (28 January 2013). The real story behind Wayland and X (Speech). linux.conf.au 2013. Canberra. Retrieved 13 April 2016.
  33. "Wayland architecture". freedesktop.org. Retrieved 18 July 2013.
  34. "X Clients under Wayland (XWayland)". Wayland project. Retrieved 18 July 2014.
  35. "ANNOUNCE: xorg-server 1.16.0". freedesktop.org. 17 July 2014.
  36. 1 2 Høgsberg, Kristian (3 January 2011). "Multiple backends for GTK+". Retrieved 10 March 2016.
  37. "QtWayland". Qt Wiki. Retrieved 9 March 2016.
  38. "Full Wayland support in GTK+". GNOME wiki. Retrieved 10 March 2016.
  39. Edge, Jake (31 July 2013). "Jolla: Sailfish OS, Qt, and open source". LWN.net. Retrieved 17 April 2016.
  40. 1 2 Larabel, Michael (30 November 2015). "Enlightenment 0.20 Arrives With Full Wayland Support & Better FreeBSD Support". Phoronix.com. Retrieved 17 April 2016.
  41. Graesslin, Martin (21 April 2013). "The History on Wayland Support inside KWin". Retrieved 17 April 2016.
  42. "Mutter-wayland tarballs".
  43. "README file from the Wayland source code repository". freedesktop.org.
  44. Larabel, Michael (16 February 2013). "Wayland Begins Porting Process To FreeBSD". Phoronix.com. Retrieved 17 April 2016.
  45. "Pixman". pixman.org. Retrieved 16 April 2015.
  46. Stone, Daniel (1 February 2013). The real story behind Wayland and X (Presentation at linux.conf.au 2013). 38:46 minutes in. It doesn't require OpenGL. Nothing in Wayland requires OpenGL.
  47. Høgsberg, Kristian (9 December 2010). "Blender3D & cursor clamping.".
  48. "Maynard announcement". 16 April 2014. Retrieved 16 April 2014.
  49. 1 2 "[RFC weston] remote access interface module". freedesktop.org. 18 October 2013.
  50. "libinput". Freedesktop.org. Retrieved 21 May 2014.
  51. Hutterer, Peter (8 October 2014). Consolidating the input stacks with libinput (Speech). The X.Org Developer Conference 2014. Bordeaux. Retrieved 18 April 2016.
  52. "libinput: the road to 1.0".
  53. "Libinput support added to Touchpad KCM".
  54. "Libinput now enabled as default xorg driver for F-22 workstation installs".
  55. 1 2 Høgsberg, Kristian (20 May 2014). "Wayland and Weston 1.5.0 is released". wayland-devel mailing list.
  56. Ådahl, Jonas (12 November 2013). "[RFC] Common input device library". Wayland mailing list.
  57. Hutterer, Peter (24 September 2014). "libinput - a common input stack for Wayland compositors and X.Org drivers". Retrieved 17 April 2016.
  58. de Goede, Hans (1 February 2015). "Replacing xorg input - Drivers with libinput" (PDF). Retrieved 18 April 2016.
  59. 1 2 Dodier-Lazaro, Steve; Peres, Martin (9 October 2014). Security in Wayland-based Desktop Environments: Privileged Clients, Authorization, Authentication and Sandboxing! (Speech). The X.Org Developer Conference 2014. Bordeaux. Retrieved 18 April 2016.
  60. "Changes/WaylandByDefault". Fedora Project.
  61. 1 2 "The First Jolla Smartphone Runs With Wayland". LinuxG.net. 14 July 2013. Retrieved 8 October 2013.
  62. 1 2 "sailfishos main components diagram".
  63. 1 2 "our first Jolla will ship with wayland, yes".
  64. Bassi, Emmanuele (31 January 2011). "ANNOUNCE: Clutter 1.6.0 (stable)". clutter-announce (Mailing list).
  65. Bradford, Rob (16 December 2011). "Clutter & Cogl Wayland update". Retrieved 9 March 2016. The Clutter client side support is basically complete
  66. Bassi, Emmanuele (24 September 2013). "ANNOUNCE: Clutter 1.16.0 (stable)". clutter-announce (Mailing list).
  67. "Wayland – Enlightenment". Retrieved 6 March 2013.
  68. "GTK+ Roadmap". Retrieved 8 March 2016.
  69. Lantinga, Sam (8 March 2014). "SDL 2.0.2 RELEASED!". SDL Project. Retrieved 18 March 2014.
  70. Larabel, Michael (9 January 2016). "SDL 2.0.4 Was Quietly Released Last Week With Wayland & Mir By Default". Phoronix.com. Retrieved 17 April 2016.
  71. Berglund, Camilla (8 April 2014). "Implementation for Wayland · Issue #106 · glfw/glfw · GitHub". Retrieved 14 August 2014.
  72. "FreeGLUT Wayland support merged".
  73. "GNOME Initiatives - Wayland". GNOME Wiki. Retrieved 8 March 2016.
  74. "KWin/Wayland". KDE Community Wiki. Retrieved 8 March 2016.
  75. "Enlightenment - Wayland". Enlightenment.org. Retrieved 8 March 2016.
  76. "Enlightenment DR 0.20.0 Release". Enlightenment.org. Retrieved 8 March 2016.
  77. "The Enlightenment of Wayland". FOSDEM.org. Retrieved 8 March 2016.
  78. "ReleasePlanning/FeaturesPlans". GNOME Project. Retrieved 31 May 2015.
  79. "Plasma’s Road to Wayland". 25 July 2014.
  80. Larabel, Michael (14 June 2013). "KDE 4.11 Beta Released, Works On Wayland". Phoronix.com. Retrieved 17 April 2016.
  81. Graesslin, Martin (29 June 2015). "Four years later". Retrieved 17 April 2016.
  82. Schaller, Christian (3 July 2014). "Wayland in Fedora Update". blogs.gnome.org. Retrieved 17 April 2016.
  83. "VNC® Wayland Developer Preview". 8 July 2014.
  84. "RealVNC Wayland developer preview email". freedesktop.org. 9 July 2014.
  85. "Maliit Status Update". Posterous. 2 April 2013. Archived from the original on 17 May 2013. Retrieved 14 October 2013.
  86. "More Maliit Keyboard Improvements: QtQuick2". Murray's Blog. 2 April 2013. Retrieved 14 October 2013.
  87. "Maliit under Wayland". Retrieved 14 September 2013.
  88. "wlterm". Freedesktop.org. Retrieved 8 July 2014.
  89. 1 2 Hillesley, Richard (13 February 2012). "Wayland – Beyond X". The H Open. Heise Media UK. p. 3.
  90. "Eclipse now runs on Wayland". 18 August 2014.
  91. Stone, Daniel (16 February 2016). "Vulkan 1.0 specification released with day-one support for Wayland".
  92. "Wayland Backend DRM | IVI Layer Management". GENIVI Alliance. Retrieved 15 July 2013.
  93. "Raspberry Pi Case Study". Collabora. Retrieved 9 August 2013.
  94. "Wayland preview". Raspberry Pi. Retrieved 9 August 2013.
  95. "IVI/IVI Setup". Tizen Wiki. Retrieved 8 April 2013.
  96. VanCutsem, Geoffroy (10 July 2013). "[IVI] Tizen IVI 3.0-M1 released". IVI (Mailing list).
  97. Høgsberg, Kristian (3 November 2008). "Premature publicity is better than no publicity". Retrieved 6 April 2016.
  98. "Interview: Kristian Høgsberg". FOSDEM Archive. 29 January 2012. Retrieved 8 March 2016.
  99. 1 2 Hillesley, Richard (13 February 2012). "Wayland - Beyond X". The H Open. Heise Media UK. Retrieved 8 March 2016.
  100. Høgsberg, Kristian. "Wayland – A New Display Server for Linux". Linux Plumbers Conference, 2009.
  101. Jenkins, Evan (22 March 2011). "The Linux graphics stack from X to Wayland". Ars Technica. Retrieved 17 April 2016.
  102. Larabel, Michael (29 October 2010). "Wayland Becomes A FreeDesktop.org Project". Phoronix.com. Retrieved 17 April 2016.
  103. Høgsberg, Kristian (29 October 2010). "Moving to freedesktop.org". Retrieved 31 July 2013.
  104. Høgsberg, Kristian (3 December 2008). "Wayland is now under MIT license". wayland-display-server (Mailing list).
  105. Høgsberg, Kristian (22 November 2010). "Wayland license clarification". wayland-devel (Mailing list).
  106. Høgsberg, Kristian (19 September 2011). "License update". wayland-devel (Mailing list).
  107. Munk, Carsten (11 April 2013). "Wayland utilizing Android GPU drivers on glibc based systems, Part 1". Mer Project. Retrieved 3 July 2013.
  108. Munk, Carsten (8 June 2013). "Wayland utilizing Android GPU drivers on glibc based systems, Part 2". Mer Project. Retrieved 3 July 2013.
  109. Larabel, Michael (11 April 2013). "Jolla Brings Wayland Atop Android GPU Drivers". Phoronix.com. Retrieved 17 April 2016.
  110. "Wayland". Wayland.freedesktop.org. Retrieved 15 July 2013.
  111. Høgsberg, Kristian (24 July 2012). "Wayland and Weston 0.95.0 released". wayland-devel mailing list.
  112. Høgsberg, Kristian (22 October 2012). "Wayland and Weston 1.0". wayland-devel mailing list.
  113. Scherschel, Fabian (23 October 2012). "Wayland's 1.0 milestone fixes graphics protocol". The H Open. Heise Media UK. Retrieved 17 April 2016.
  114. Larabel, Michael (16 April 2013). "Wayland 1.1 Officially Released With Weston 1.1". Phoronix.com. Retrieved 17 April 2016.
  115. Høgsberg, Kristian (15 April 2013). "1.1 Released". wayland-devel mailing list.
  116. Larabel, Michael (6 January 2013). "A Software-Based Pixman Renderer For Wayland's Weston". Phoronix.com. Retrieved 17 April 2016.
  117. Larabel, Michael (13 July 2013). "Wayland 1.2.0 Released, Joined By Weston Compositor". Phoronix.com. Retrieved 17 April 2016.
  118. Høgsberg, Kristian (12 July 2013). "Wayland and Weston 1.2.0 released". wayland-devel mailing list.
  119. Høgsberg, Kristian (11 October 2013). "Wayland and Weston 1.3 releases are out". wayland-devel mailing list.
  120. Paalanen, Pekka (19 September 2014). "Wayland and Weston 1.6.0 released". wayland-devel mailing list.
  121. Harrington, Bryce (14 February 2015). "[ANNOUNCE] wayland 1.7.0". wayland-devel mailing list.
  122. Harrington, Bryce (14 February 2015). "[ANNOUNCE] weston 1.7.0". wayland-devel mailing list.
  123. Harrington, Bryce (2 June 2015). "[ANNOUNCE] wayland 1.8.0". wayland-devel mailing list.
  124. Harrington, Bryce (2 June 2015). "[ANNOUNCE] weston 1.8.0". wayland-devel mailing list.
  125. Harrington, Bryce (21 September 2015). "[ANNOUNCE] wayland 1.9.0". wayland-devel (Mailing list).
  126. Harrington, Bryce (21 September 2015). "[ANNOUNCE] weston 1.9.0". wayland-devel (Mailing list).
  127. Harrington, Bryce (17 February 2016). "[ANNOUNCE] weston 1.10.0". wayland-devel (Mailing list).
  128. Nestor, Marius (18 February 2016). "Wayland 1.10 Display Server Officially Released, Wayland 1.11 Arrives in May 2016". Softpedia.
  129. Larabel, Michael (16 February 2016). "Wayland 1.10 Officially Released". Phoronix.com. Retrieved 17 April 2016.

External links

This article is issued from Wikipedia - version of the Friday, May 06, 2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.