Wayland (display server protocol)
Original author(s) | Kristian Høgsberg |
---|---|
Developer(s) | freedesktop.org et al. |
Initial release | 30 September 2008[1] |
Stable release | |
Repository | |
Written in | C |
Operating system | official: Linux unofficial: NetBSD, FreeBSD, DragonFly BSD[4] |
Type |
|
License | MIT License[5] |
Website | wayland |
Wayland is a communication protocol that specifies the communication between a display server and its clients, as well as a C library implementation of that protocol.[8]
Wayland is developed by a group of volunteers initially led by Kristian Høgsberg as a free and open-source community-driven project with the aim of replacing the X Window System with a modern, secure[9][10]
As part of its efforts, the Wayland project also develops a reference implementation of a Wayland compositor called Weston.[8]
Overview[]
Beginning around 2010, Linux desktop graphics have 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. Direct Rendering Infrastructure (DRI), Direct Rendering Manager (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".[14]
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:[13]
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.
Initial versions of Wayland have not provided network transparency, though Høgsberg noted in 2010 that network transparency is possible.[15]
Software architecture[]
Protocol architecture[]
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:[21]
- A low-level layer or wire protocol that handles the inter-process communication between the two involved processes—client and compositor—and the marshalling of the data that they interchange. This layer is message-based and usually implemented using the kernel IPC services, specifically Unix domain sockets in the case of Linux and Unix-like operating systems.[22]:9
- A high-level layer built upon it, that handles the information that client and compositor need to exchange to implement the basic features of a window system. This layer is implemented as "an asynchronous object-oriented protocol".[22]:9
While the low-level layer was written manually in C, the high-level layer is automatically generated from a description of the elements of the protocol stored in XML format.[23]
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
.[22]:57
Protocol overview[]
The Wayland protocol is described as an "asynchronous object-oriented protocol".[22]:9
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.[22]: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.[22]:9
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.[22]:10
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.[23]
Some of the most basic interfaces of the Wayland protocol are:[22]:10-12
- wl_display – the core global object, a special object to encapsulate the Wayland protocol itself
- wl_registry – the global registry object, in which the compositor registers all the global objects that it wants to be available to all clients
- wl_compositor – an object that represents the compositor, and is in charge of combining the different surfaces into one output
- wl_surface – an object representing a rectangular area on the screen, defined by a location, size and pixel content
- wl_buffer – an object that, when attached to a wl_surface object, provides its displayable content
- wl_output – an object representing the displayable area of a screen
- wl_pointer, wl_keyboard, wl_touch – objects representing different input devices like pointers or keyboards
- wl_seat – an object representing a seat (a set of input/output devices) in multiseat configurations
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.[24]
Wayland extension interfaces[]
A Wayland compositor can define and export its own additional interfaces.[22]:10
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.[26]
IVI-Shell protocol[]
IVI-Shell is an extension to the Wayland core protocol, targeting in-vehicle infotainment (IVI) devices.[27]
Rendering model[]
The Wayland protocol does not include a rendering API.[22]:7
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 natively provides this kind of shared memory buffer through the wl_shm and wl_shm_pool interfaces.[22]:11, 20-21
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.[30]
When rendering is completed in a shared buffer, 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.[21]
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:[31]
- Architecture
- The composition manager is a separate, additional feature in X, while Wayland merges display server and compositor as a single function.[32]
[28] Also, it incorporates some of the tasks of the window manager, which in X is a separate client-side process.[33]
- Compositing
- Compositing is optional in X, but mandatory in Wayland. Compositing in X is "active"; that is, the compositor must fetch all pixel data, which introduces latency. In Wayland, compositing is "passive", which means the compositor receives pixel data directly from clients.[34]:8-11
- Rendering
- The X server itself is able to perform rendering, although it can also be instructed to display a rendered window sent by a client. In contrast, Wayland does not expose any API for rendering, but delegates to clients such tasks (including the rendering of fonts, widgets, etc.).[32]
[28] Window decorations can be rendered on the client side (e.g., by a graphics toolkit) or on the server side (by the compositor).[35]
- Security
- Wayland isolates the input and output of every window, achieving confidentiality, integrity and availability in both cases; the original X design lacks these important security features,[10]
[11] [12] although some extensions have been developed trying to mitigate it.[36] [37] [38] Also, with the vast majority of the code running in the client, less code needs to run with root privileges, improving security,[10] although multiple popular Linux distributions now allow X to be run without root privileges.[39][40][41][42]
- Inter-process communication
- The X server provides a basic communication method between X clients, later extended by ICCCM conventions. This X client-to-client communication is used by window managers and also to implement X sessions, selections and drag-and-drop, and other features. The Wayland core protocol does not support communication between wayland clients at all, and the corresponding functionality (if needed) should be implemented by the desktop environments (like KDE or GNOME), or by a third party (for example, by using native IPC of the underlying operating system).
- Networking
- The X Window System is an architecture that was designed at its core to run over a network. Wayland does not offer network transparency by itself;[13]
however, a compositor can implement any remote desktop protocol to achieve remote display. In addition, there is research into Wayland image streaming and compression that would provide remote frame buffer access similar to that of VNC.[19]
Compatibility with X[]
XWayland is an X Server running as a Wayland client, and thus is capable of displaying native X11 client applications in a Wayland compositor environment.[43]
Widget toolkits such as Qt5 and GTK3 can switch their graphical back-end at run time,[45]-platform
command-line option[46]GDK_BACKEND
Unix environment variable.[45]
Wayland compositors[]
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 – the reference implementation of a Wayland compositor; Weston implements client side decorations
- Lipstick – mobile graphical shell framework which implements Wayland compositor; it is used in Sailfish OS, Nemo Mobile and AsteroidOS[48]
- Enlightenment claimed full Wayland support since version 0.20[49]
but work is currently underway to land a complete Wayland compositor [50] - KWin has nearly complete Wayland support as of 2021[51]
- Mutter maintains a separate branch for the integration of Wayland for GNOME 3.9 (in September 2013)[52]
- Clayland – a simple example Wayland compositor using Clutter
- – a Wayland compositor library that allows applications to create their own Wayland displays, which allows nesting and embedding of third party applications[53]
- – a modular Wayland implementation that functions as a base for other compositors, most notably Sway[54][55]
- Sway – a tiling Wayland compositor and a drop-in replacement for the i3 window manager for X11[56]
- – part of SteamOS, replacing the earlier steamcompmgr[57]
Weston[]
Weston is the reference implementation of a Wayland compositor[58] also developed by the Wayland project. It is written in C and published under the MIT License. Weston has official support for only the Linux operating system due to Weston's dependence on certain features of the Linux kernel, such as kernel mode-setting, Graphics Execution Manager (GEM), and udev, which have not been implemented in other Unix-like operating systems.[59]
Weston supports High-bandwidth Digital Content Protection (HDCP).[61]
Weston relies on GEM to share application buffers between the compositor and applications. It contains a plug-in system of "shells" for common desktop features like docks and panels.[19]
A remote access interface for Weston was proposed in October 2013 by a RealVNC employee.[65]
Maynard[]
Maynard is a graphical shell and has been written as a plug-in for Weston, just as the GNOME Shell has been written as a plug-in to Mutter.[66]
The Raspberry Pi Foundation in collaboration with Collabora released Maynard and work on improving performance and memory consumption.[67]
libinput[]
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.[69]
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[clarification needed] (via udev), device handling, input device event processing and abstraction.[71]
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.[73]
As GNOME/GTK and KDE Frameworks 5[74]
With version 1.16, the X.Org Server obtained support for the libinput library in form of a wrapper called xf86-input-libinput.[76]
Wayland Security Module[]
Wayland Security Module is a proposition that resembles the Linux Security Module interface found in the Linux kernel.[78]
Some applications (especially the ones related to accessibility) require privileged capabilities that should work across different Wayland compositors. Currently,[when?] 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.[78]
Adoption[]
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 were 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.
Desktop Linux distributions[]
As of 2020 most Linux distributions support Wayland out of the box, some notable examples are:
- Fedora starting with version 25 (released 22 November 2016) uses Wayland for the default GNOME 3.22 desktop session, with X.Org as a fallback if the graphics driver cannot support Wayland.[79] Fedora uses Wayland as the default for KDE desktop session starting with version 34 (released 27 April 2021)
- Ubuntu ships Wayland as default in Ubuntu 17.10 (Artful Aardvark).[80] Ubuntu reverted to X.Org for Ubuntu 18.04 LTS, as Wayland still has issues with screen sharing and remote desktop applications, and does not recover as well from window manager crashes.[81][82] Ubuntu ships Wayland by default in 21.04.[83]
- Red Hat Enterprise Linux ships Wayland as the default session in version 8, released 7 May 2019.[84]
- Debian ships Wayland as the default session for GNOME since version 10, released 6 July 2019.[85]
- Slackware Linux included Wayland on 20 February 2020[86] for the development version, -current, which will eventually become version 15.0.
- Manjaro ships Wayland as default in the Gnome edition of Manjaro 20.2 (Nibia) (released 22 November 2020).[87]
Notable early adopter:
- RebeccaBlackOS is a live USB Debian-based[88] Linux distribution that allows a convenient way to try out a real Wayland desktop without having to make any modifications to the main operating system of the computer.[89] It has been used since as early as 2012 to showcase Wayland.[90][91]
Toolkit support[]
Toolkits supporting Wayland include the following:
- Clutter has complete Wayland support.[92]
[93] [94] - EFL has complete Wayland support, except for selection.[95]
- GTK 3.20 has complete Wayland support.[96]
- Qt 5 has complete Wayland support, and can be used to write both Wayland compositors and Wayland clients.
- SDL support for Wayland debuted with the 2.0.2 release[97]
and was enabled by default since version 2.0.4.[98] - GLFW 3.2 has Wayland support.[99]
- FreeGLUT has initial Wayland support.[100]
Desktop environments[]
Desktop environments in process of being ported from X to Wayland include GNOME,[101]
In November 2015, Enlightenment e20 was announced with full Wayland support.[104]
Wayland support for KDE Plasma was delayed until the release of Plasma 5,[109]
Other software[]
Other software supporting Wayland includes the following:
- Intelligent Input Bus is working on Wayland support, it could be ready for Fedora 22.[113]
- RealVNC published a Wayland developer preview in July 2014.[65]
[114] [115] - Maliit is an input method framework that runs under Wayland.[116]
[117] [118] - kmscon supports Wayland with wlterm.[119]
- Mesa has Wayland support integrated.[120]
- Eclipse was made to run on Wayland during a GSoC-Project in 2014.[121]
- The Vulkan WSI (Window System Interface) is a set of API calls serve a similar purpose as EGL does for OpenGL ES or GLX for OpenGL. Vulkan WSI includes support for Wayland from day one: VK_USE_PLATFORM_WAYLAND_KHR. Vulkan clients can run on unmodified Wayland servers, including Weston, GENIVI LayerManager, Mutter / GNOME Shell, Enlightenment, and more. The WSI allows applications to discover the different GPUs on the system, and display the results of GPU rendering to a window system.[122]
- SPURV, a compatibility layer for Android applications to run on Linux distributions using Wayland
Mobile and embedded hardware[]
Mobile and embedded hardware supporting Wayland includes the following:
- postmarketOS
- GENIVI Alliance: The GENIVI automotive industry consortium for in-vehicle infotainment (IVI) supports Wayland.[123]
- Raspberry Pi: The Raspberry Pi Foundation in collaboration with Collabora released Maynard and work on improving performance and memory consumption.[67]
[68] - Jolla: Smartphones from Jolla use Wayland. It is also used as standard when Linux Sailfish OS is used with hardware from other vendors or when it is installed into Android devices by users.[124]
[125] [126] - Tizen: Tizen up to 2.x supports Wayland in in-vehicle infotainment (IVI) setups[127]
and from 3.0 onward defaults to Wayland.[128] [129]
History[]
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.[130]
In October 2010, Wayland became a freedesktop.org project.[135]
The Wayland client and server libraries were initially released under the MIT License,[137]
Wayland works with all Mesa-compatible drivers with DRI2 support[120]
Releases[]
Version | Date | Main features | |
---|---|---|---|
Wayland | Weston | ||
0.85 | 9 February 2012[144] |
First release. | |
0.95 | 24 July 2012[145] |
Began API stabilization. | |
1.0 | 22 October 2012[146] |
Stable wayland-client API. | |
1.1 | 15 April 2013[148] |
Software rendering.[63] | |
1.2 | 12 July 2013[150] |
Stable wayland-server API. | Color management. Subsurfaces. Raspberry Pi backend. |
1.3 | 11 October 2013[152] |
More pixel formats. Support for language bindings. | Android driver support via libhybris. |
1.4 | 23 January 2014[25] |
New wl_subcompositor and wl_subsurface interfaces. | Multiple framebuffer formats. logind support for rootless Weston. |
1.5 | 20 May 2014[69] |
libinput. Fullscreen shell. | |
1.6 | 19 September 2014[153] |
libinput by default. | |
1.7 | 14 February 2015[154] |
Support for the Wayland presentation extension and for surface roles. IVI shell protocol. | |
1.8 | 2 June 2015[156] |
Separated headers for core and generated protocol. | Repaint scheduling. Named outputs. Output transformations. Surface-shooting API. |
1.9 | 21 September 2015[158] |
Updated license. | Updated license. New test framework. Triple-head DRM compositor. linux_dmabuf extension. |
1.10 | 17 February 2016[160] |
Drag-and-drop functionality, grouped pointer events.[162] |
Video 4 Linux 2, touch input, debugging improvements.[163] |
1.11 | 1 June 2016[164] |
New backup loading routine, new setup logic. | Proxy wrappers, shared memory changes, Doxygen-generated HTML docs. |
1.12 | 21 September 2016[166] |
Debugging support improved. | libweston and libweston-desktop. Pointer locking and confinement. Relative pointer support. |
1.13 | 24 February 2017[168] |
The ABI of Weston has been changed, thus the new version was named 2.0.0 rather than 1.13.0. | |
1.14 | 8 August 2017[170] |
Weston 3.0.0 was released at the same time. | |
1.15 | 9 April 2018[172] |
Weston 4.0.0 was released at the same time. | |
1.16 | 24 August 2018[174] |
Weston 5.0.0 was released at the same time. | |
1.17 | 20 March 2019[176] |
Weston 6.0.0 was released at the same time. | |
1.18 | 2 August 2019[178] |
Weston 7.0.0 was released one month later. | |
1.19 | 27 January 2021[2] |
||
Weston 8[180] | 24 January 2020 | ||
Weston 9[181] | 4 September 2020 | ||
Old version Older version, still maintained Latest version Future release |
See also[]
References[]
- ^ Høgsberg, Kristian (30 September 2008). "Initial commit". Retrieved 3 January 2020.
- ^ Jump up to: a b Ser, Simon (27 January 2021). "[ANNOUNCE] wayland 1.19.0" (Mailing list). Retrieved 27 January 2021.
- ^ Ser, Simon (24 January 2020). "[ANNOUNCE] weston 8.0.0" (Mailing list). Retrieved 12 February 2020.
- ^ "Wayland & Weston Compositor Ported To DragonFlyBSD - Phoronix". www.phoronix.com.
- ^ Jump up to: a b c Harrington, Bryce (15 September 2015). "[ANNOUNCE] wayland 1.8.93". freedesktop.org (Mailing list).
- ^ "wayland/wayland: root/COPYING". freedesktop.org. Retrieved 14 June 2015.
- ^ Larabel, Michael (10 June 2015). "Wayland's MIT License To Be Updated/Corrected". Phoronix.com. Retrieved 17 April 2016.
- ^ Jump up to: a b c "Wayland". Wayland project. Retrieved 9 May 2016.
- ^ Sengar, Shivam Singh (16 June 2018). "Wayland v/s Xorg : How Are They Similar & How Are They Different". secjuice. Retrieved 10 September 2020.
- ^ Jump up to: a b c Kerrisk, Michael (25 September 2012). "XDC2012: Graphics stack security". LWN.net. Retrieved 13 April 2016.
- ^ Jump up to: a b Peres, Martin (21 February 2014). "Wayland Compositors - Why and How to Handle Privileged Clients!". Retrieved 17 April 2016.
- ^ Jump up to: a b Graesslin, Martin (23 November 2015). "Looking at the security of Plasma/Wayland". Retrieved 18 April 2016.
- ^ Jump up to: a b c d e "Wayland FAQ". Wayland project. Retrieved 9 May 2016.
- ^ Corbet, Jonathan (5 November 2010). "LPC: Life after X". LWN.net. Retrieved 17 April 2016.
- ^ 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.
- ^ Larabel, Michael (18 August 2011). "Remote Wayland Server Project: Does It Work Yet?". Phoronix.com. Retrieved 17 April 2016.
- ^ Jackson, Adam (9 November 2010). "[Re:] Ubuntu moving towards Wayland".
- ^ Stone, Daniel (28 January 2013). The real story behind Wayland and X (Speech). linux.conf.au 2013. Canberra. Retrieved 13 April 2016.
- ^ Jump up to: a b c Willis, Nathan (13 February 2013). "LCA: The ways of Wayland". LWN.net. Retrieved 19 May 2016.
- ^ Daniel Aleksandersen. "Remote desktop capabilities set to make a comeback in GNOME on Wayland". Ctrl.blog. Retrieved 29 August 2017.
- ^ Jump up to: a b "The Hello Wayland Tutorial". 8 July 2014. Retrieved 25 July 2014.
- ^ Jump up to: a b c d e f g h i j k l m n o Høgsberg, Kristian. "Wayland Documentation 1.3" (PDF). Retrieved 16 March 2016.
- ^ Jump up to: a b Høgsberg, Kristian. "protocol/wayland.xml". FreeDesktop.org. Retrieved 25 July 2014.
- ^ Jump up to: a b Paalanen, Pekka (25 July 2014). "Wayland protocol design: object lifespan". Retrieved 6 April 2016.
- ^ Jump up to: a b Høgsberg, Kristian (24 January 2014). "Wayland and Weston 1.4 is out". wayland-devel mailing list.
- ^ "xdg_shell: Adding a new shell protocol". freedesktop.org. 3 December 2013. Retrieved 14 June 2014.
- ^ "GENIVI/wayland-ivi-extension".
- ^ Jump up to: a b c Vervloesem, Koen (15 February 2012). "FOSDEM: The Wayland display server". LWN.net. Retrieved 9 May 2016.
- ^ 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
- ^ 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.
- ^ Griffith, Eric (7 June 2013). "The Wayland Situation: Facts About X vs. Wayland". Phoronix.com. p. 2. Retrieved 17 April 2016.
- ^ Jump up to: a b "Wayland Architecture". Wayland project. Retrieved 9 May 2016.
- ^ Edge, Jake (11 April 2012). "LFCS 2012: X and Wayland". LWN.net. Retrieved 17 April 2016.
- ^ "Wayland/X Compositor Architecture By Example: Enlightenment DR19" (PDF). Retrieved 18 April 2016.
- ^ Jump up to: a b Graesslin, Martin (7 February 2013). "Client Side Window Decorations and Wayland". Retrieved 17 April 2016.
- ^ "X.Org Security". X.Org Foundation. Retrieved 2 July 2017.
The X server has long included an extension, SECURITY, which provides support for a simple trusted/untrusted connection model.
- ^ Wiggins, David P. (15 November 1996). "Security Extension Specification". X Consortium Standard. Retrieved 2 July 2017.
- ^ Walsh, Eamon F. (2009). "X Access Control Extension Specification". Retrieved 2 July 2017.
- ^ "Debian Moves To Non-Root X.Org Server By Default - Phoronix". www.phoronix.com.
- ^ "Non root Xorg - Gentoo Wiki". wiki.gentoo.org.
- ^ "X/Rootless - Ubuntu Wiki". wiki.ubuntu.com.
- ^ "1078902 – Xorg without root rights". bugzilla.redhat.com.
- ^ "X Clients under Wayland (XWayland)". Wayland project. Retrieved 18 July 2014.
- ^ "ANNOUNCE: xorg-server 1.16.0". freedesktop.org. 17 July 2014.
- ^ Jump up to: a b Høgsberg, Kristian (3 January 2011). "Multiple backends for GTK". Retrieved 10 March 2016.
- ^ "QtWayland". Qt Wiki. Retrieved 9 March 2016.
- ^ "Full Wayland support in GTK". GNOME wiki. Retrieved 10 March 2016.
- ^ Edge, Jake (31 July 2013). "Jolla: Sailfish OS, Qt, and open source". LWN.net. Retrieved 17 April 2016.
- ^ Jump up to: a b Larabel, Michael (30 November 2015). "Enlightenment 0.20 Arrives With Full Wayland Support & Better FreeBSD Support". Phoronix.com. Retrieved 17 April 2016.
- ^ "Wayland". www.enlightenment.org.
- ^ "Plasma 5.21". KDE Community. 16 February 2021. Retrieved 9 March 2021.
- ^ "Index of /sources/mutter-wayland". download.gnome.org.
- ^ "Westeros Github Mirror". Retrieved 19 September 2016.
- ^ "swaywm/wlroots". GitHub. Retrieved 28 October 2018.
- ^ "swaywm/sway". GitHub. Retrieved 28 October 2018.
- ^ "Sway". swaywm.org. Retrieved 20 December 2018.
- ^ "gamescope". GitHub. Retrieved 26 July 2021.
- ^ "README". cgit.freedesktop.org.
- ^ "README file from the Wayland source code repository". freedesktop.org.
- ^ Larabel, Michael (16 February 2013). "Wayland Begins Porting Process To FreeBSD". Phoronix.com. Retrieved 17 April 2016.
- ^ "Adding Content protection support in drm-backend (!48) · Merge Requests · wayland / weston". GitLab. Retrieved 27 October 2019.
- ^ Paalanen, Pekka (10 March 2012). "What does EGL do in the Wayland stack". Retrieved 19 May 2016.
- ^ Jump up to: a b Larabel, Michael (6 January 2013). "A Software-Based Pixman Renderer For Wayland's Weston". Phoronix.com. Retrieved 17 April 2016.
- ^ Høgsberg, Kristian (9 December 2010). "Blender3D & cursor clamping".
- ^ Jump up to: a b "[RFC weston] remote access interface module". freedesktop.org. 18 October 2013.
- ^ "Maynard announcement". 16 April 2014. Retrieved 16 April 2014.
- ^ Jump up to: a b "Raspberry Pi Case Study". Collabora. Retrieved 9 August 2013.
- ^ Jump up to: a b "Wayland preview". Raspberry Pi. Retrieved 9 August 2013.
- ^ Jump up to: a b Høgsberg, Kristian (20 May 2014). "Wayland and Weston 1.5.0 is released". wayland-devel mailing list.
- ^ Ådahl, Jonas (12 November 2013). "[RFC] Common input device library". Wayland mailing list.
- ^ "libinput". Freedesktop.org. Retrieved 21 May 2014.
- ^ Hutterer, Peter (8 October 2014). Consolidating the input stacks with libinput (Speech). The X.Org Developer Conference 2014. Bordeaux. Retrieved 14 January 2020.
- ^ Hutterer, Peter (22 February 2015). "libinput: the road to 1.0".
- ^ "Libinput support added to Touchpad KCM". 22 February 2015.
- ^ Goede, Hans de (23 February 2015). "Libinput now enabled as default xorg driver for F-22 workstation installs".
- ^ Hutterer, Peter (24 September 2014). "libinput - a common input stack for Wayland compositors and X.Org drivers". Retrieved 17 April 2016.
- ^ de Goede, Hans (1 February 2015). "Replacing xorg input - Drivers with libinput" (PDF). Retrieved 18 April 2016.
- ^ Jump up to: a b 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.
- ^ "Changes/WaylandByDefault - Fedora Project Wiki". fedoraproject.org. Retrieved 9 November 2020.
- ^ "ReleaseNotes for Ubuntu 17.10". Canonical.
- ^ "Ubuntu 18.04 will revert to long-in-the-tooth Xorg".
- ^ "Bionic Beaver 18.04 LTS to use Xorg by default". Canonical.
- ^ "Ubuntu 21.04 is here". Canonical Ubuntu Blog. Retrieved 14 June 2021.
- ^ "Release notes for Red Hat Enterprise Linux 8.0". Red Hat Customer Portal. Retrieved 25 December 2020.
- ^ "NewInBuster - Debian Wiki". wiki.debian.org. Retrieved 15 July 2019.
- ^ "Slackware ChangeLogs". Slackware Linux. Retrieved 26 February 2020.
- ^ "Manjaro 20.2 Nibia got released". Retrieved 3 December 2020.
- ^ "Wayland Live OS Is Now Based On Debian Testing, Working KDE Wayland Support". Phoronix.
- ^ "RebeccaBlackOS". Sourceforge.
- ^ "Trying Out Wayland With Rebecca Black". Phoronix.
- ^ "New Wayland Live CD Has A Lot Of Features". Phoronix.
- ^ Bassi, Emmanuele (31 January 2011). "ANNOUNCE: Clutter 1.6.0 (stable)". clutter-announce (Mailing list).
- ^ Bradford, Rob (16 December 2011). "Clutter & Cogl Wayland update". Retrieved 9 March 2016.
The Clutter client side support is basically complete
- ^ Bassi, Emmanuele (24 September 2013). "ANNOUNCE: Clutter 1.16.0 (stable)". clutter-announce (Mailing list).
- ^ "Wayland – Enlightenment". Archived from the original on 29 March 2013. Retrieved 6 March 2013.
- ^ "GTK Roadmap". Retrieved 8 March 2016.
- ^ Lantinga, Sam (8 March 2014). "SDL 2.0.2 RELEASED!". SDL Project. Retrieved 18 March 2014.
- ^ 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.
- ^ Berglund, Camilla (8 April 2014). "Implementation for Wayland · Issue #106 · glfw/glfw · GitHub". Retrieved 14 August 2014.
- ^ "FreeGLUT: Implement initial Wayland support". GitHub.
- ^ "GNOME Initiatives - Wayland". GNOME Wiki. Retrieved 8 March 2016.
- ^ "KWin/Wayland". KDE Community Wiki. Retrieved 8 March 2016.
- ^ "Enlightenment - Wayland". Enlightenment.org. Retrieved 8 March 2016.
- ^ "Enlightenment DR 0.20.0 Release". Enlightenment.org. Retrieved 8 March 2016.
- ^ "The Enlightenment of Wayland". FOSDEM.org. Retrieved 8 March 2016.
- ^ "ReleasePlanning/FeaturesPlans". GNOME Project. Retrieved 31 May 2015.
- ^ "A Look At The Exciting Features/Improvements Of GNOME 3.22". Phoronix.
- ^ "GNOME Lands Mainline NVIDIA Wayland Support Using EGLStreams". Phoronix.
- ^ "Plasma's Road to Wayland". 25 July 2014.
- ^ Larabel, Michael (14 June 2013). "KDE 4.11 Beta Released, Works On Wayland". Phoronix.com. Retrieved 17 April 2016.
- ^ Graesslin, Martin (29 June 2015). "Four years later". Retrieved 17 April 2016.
- ^ Liam Dawe. "KDE Plasma 5.20 will properly support screen recording on Wayland and more". gamingonlinux.com. Retrieved 10 September 2020.
- ^ Schaller, Christian (3 July 2014). "Wayland in Fedora Update". blogs.gnome.org. Retrieved 17 April 2016.
- ^ "VNC® Wayland Developer Preview". 8 July 2014. Archived from the original on 14 July 2014.
- ^ "RealVNC Wayland developer preview email". freedesktop.org. 9 July 2014.
- ^ "Maliit Status Update". Posterous. 2 April 2013. Archived from the original on 17 May 2013. Retrieved 14 October 2013.
- ^ "More Maliit Keyboard Improvements: QtQuick2". Murray's Blog. 2 April 2013. Retrieved 14 October 2013.
- ^ "Maliit under Wayland". Archived from the original on 11 June 2013. Retrieved 14 September 2013.
- ^ "wlterm". Freedesktop.org. Retrieved 8 July 2014.
- ^ Jump up to: a b Hillesley, p. 3.
- ^ "Eclipse now runs on Wayland". 18 August 2014.
- ^ Stone, Daniel (16 February 2016). "Vulkan 1.0 specification released with day-one support for Wayland".
- ^ "Wayland Backend DRM | IVI Layer Management". GENIVI Alliance. Archived from the original on 1 February 2014. Retrieved 15 July 2013.
- ^ "The First Jolla Smartphone Runs With Wayland". LinuxG.net. 14 July 2013. Retrieved 8 October 2013.
- ^ VDVsx [@VDVsx] (13 July 2013). "#sailfishos main components diagram. #Qt5 #Wayland #JollaHQ #Akademy" (Tweet) – via Twitter.
- ^ Jolla [@JollaHQ] (13 July 2013). "@faenil @PeppeLaKappa @VDVsx our first Jolla will ship with wayland, yes" (Tweet) – via Twitter.
- ^ "IVI/IVI Setup". Tizen Wiki. Retrieved 8 April 2013.
- ^ VanCutsem, Geoffroy (10 July 2013). "[IVI] Tizen IVI 3.0-M1 released". IVI (Mailing list).
- ^ Amadeo, Ron. "The Samsung Z4 is Tizen's new flagship smartphone". Ars Technica. Retrieved 13 May 2017.
- ^ Høgsberg, Kristian (3 November 2008). "Premature publicity is better than no publicity". Retrieved 6 April 2016.
- ^ "Interview: Kristian Høgsberg". FOSDEM Archive. 29 January 2012. Retrieved 8 March 2016.
- ^ Jump up to: a b Hillesley, Richard (13 February 2012). "Wayland - Beyond X". The H Open. Heise Media UK. Retrieved 8 March 2016.
- ^ Høgsberg, Kristian. "Wayland – A New Display Server for Linux". Linux Plumbers Conference, 2009. Archived from the original on 11 August 2017.
- ^ Jenkins, Evan (22 March 2011). "The Linux graphics stack from X to Wayland". Ars Technica. Retrieved 17 April 2016.
- ^ Larabel, Michael (29 October 2010). "Wayland Becomes A FreeDesktop.org Project". Phoronix.com. Retrieved 17 April 2016.
- ^ Høgsberg, Kristian (29 October 2010). "Moving to freedesktop.org". Retrieved 31 July 2013.
- ^ Høgsberg, Kristian (3 December 2008). "Wayland is now under MIT license". wayland-display-server (Mailing list).
- ^ Høgsberg, Kristian (22 November 2010). "Wayland license clarification". wayland-devel (Mailing list).
- ^ Høgsberg, Kristian (19 September 2011). "License update". wayland-devel (Mailing list).
- ^ Munk, Carsten (11 April 2013). "Wayland utilizing Android GPU drivers on glibc based systems, Part 1". Mer Project. Retrieved 3 July 2013.
- ^ Munk, Carsten (8 June 2013). "Wayland utilizing Android GPU drivers on glibc based systems, Part 2". Mer Project. Retrieved 3 July 2013.
- ^ Larabel, Michael (11 April 2013). "Jolla Brings Wayland Atop Android GPU Drivers". Phoronix.com. Retrieved 17 April 2016.
- ^ "Wayland". Wayland.freedesktop.org. Retrieved 15 July 2013.
- ^ Høgsberg, Kristian (9 February 2012). "[ANNOUNCE] Wayland and Weston 0.85.0 released". wayland-devel mailing list.
- ^ Høgsberg, Kristian (24 July 2012). "Wayland and Weston 0.95.0 released". wayland-devel mailing list.
- ^ Høgsberg, Kristian (22 October 2012). "Wayland and Weston 1.0". wayland-devel mailing list.
- ^ Scherschel, Fabian (23 October 2012). "Wayland's 1.0 milestone fixes graphics protocol". The H Open. Heise Media UK. Retrieved 17 April 2016.
- ^ Larabel, Michael (16 April 2013). "Wayland 1.1 Officially Released With Weston 1.1". Phoronix.com. Retrieved 17 April 2016.
- ^ Høgsberg, Kristian (15 April 2013). "1.1 Released". wayland-devel mailing list.
- ^ Larabel, Michael (13 July 2013). "Wayland 1.2.0 Released, Joined By Weston Compositor". Phoronix.com. Retrieved 17 April 2016.
- ^ Høgsberg, Kristian (12 July 2013). "Wayland and Weston 1.2.0 released". wayland-devel mailing list.
- ^ Høgsberg, Kristian (11 October 2013). "Wayland and Weston 1.3 releases are out". wayland-devel mailing list.
- ^ Paalanen, Pekka (19 September 2014). "Wayland and Weston 1.6.0 released". wayland-devel mailing list.
- ^ Harrington, Bryce (14 February 2015). "[ANNOUNCE] wayland 1.7.0". wayland-devel mailing list.
- ^ Harrington, Bryce (14 February 2015). "[ANNOUNCE] weston 1.7.0". wayland-devel mailing list.
- ^ Harrington, Bryce (2 June 2015). "[ANNOUNCE] wayland 1.8.0". wayland-devel mailing list.
- ^ Harrington, Bryce (2 June 2015). "[ANNOUNCE] weston 1.8.0". wayland-devel mailing list.
- ^ Harrington, Bryce (21 September 2015). "[ANNOUNCE] wayland 1.9.0". wayland-devel (Mailing list).
- ^ Harrington, Bryce (21 September 2015). "[ANNOUNCE] weston 1.9.0". wayland-devel (Mailing list).
- ^ Harrington, Bryce (17 February 2016). "[ANNOUNCE] wayland 1.10.0". wayland-devel (Mailing list).
- ^ Harrington, Bryce (17 February 2016). "[ANNOUNCE] weston 1.10.0". wayland-devel (Mailing list).
- ^ Nestor, Marius (18 February 2016). "Wayland 1.10 Display Server Officially Released, Wayland 1.11 Arrives in May 2016". Softpedia.
- ^ Larabel, Michael (16 February 2016). "Wayland 1.10 Officially Released". Phoronix.com. Retrieved 17 April 2016.
- ^ Harrington, Bryce (1 June 2016). "[ANNOUNCE] wayland 1.11.0". wayland-devel (Mailing list). Retrieved 1 June 2016.
- ^ Harrington, Bryce (1 June 2016). "[ANNOUNCE] weston 1.11.0". wayland-devel (Mailing list). Retrieved 1 June 2016.
- ^ Harrington, Bryce (21 September 2016). "[ANNOUNCE] wayland 1.12.0". wayland-devel (Mailing list). Retrieved 21 September 2016.
- ^ Harrington, Bryce (21 September 2016). "[ANNOUNCE] weston 1.12.0". wayland-devel (Mailing list). Retrieved 21 September 2016.
- ^ Harrington, Bryce (21 February 2017). "[ANNOUNCE] wayland 1.13.0". wayland-devel (Mailing list). Retrieved 30 April 2017.
- ^ Harrington, Bryce (25 February 2017). "[ANNOUNCE] weston 2.0.0". wayland-devel (Mailing list). Retrieved 30 April 2017.
- ^ Harrington, Bryce (8 August 2017). "[ANNOUNCE] wayland 1.14.0". wayland-devel (Mailing list). Retrieved 25 March 2018.
- ^ Harrington, Bryce (8 August 2017). "[ANNOUNCE] weston 3.0.0". wayland-devel (Mailing list). Retrieved 25 March 2018.
- ^ Foreman, Derek (9 April 2018). "[ANNOUNCE] wayland 1.15.0". wayland-devel (Mailing list). Retrieved 15 April 2018.
- ^ Foreman, Derek (9 April 2018). "[ANNOUNCE] weston 4.0.0". wayland-devel (Mailing list). Retrieved 15 April 2018.
- ^ Foreman, Derek (24 August 2018). "[ANNOUNCE] wayland 1.16.0". wayland-devel (Mailing list). Retrieved 30 November 2018.
- ^ Foreman, Derek (24 August 2018). "[ANNOUNCE] weston 5.0.0". wayland-devel (Mailing list). Retrieved 30 November 2018.
- ^ Foreman, Derek (28 March 2019). "[ANNOUNCE] wayland 1.17.0" (Mailing list). Retrieved 17 June 2019.
- ^ Foreman, Derek (21 March 2019). "[ANNOUNCE] weston 6.0.0" (Mailing list). Retrieved 17 June 2019.
- ^ Ser, Simon (11 February 2020). "[ANNOUNCE] wayland 1.18" (Mailing list). Retrieved 12 February 2020.
- ^ Ser, Simon (23 August 2019). "[ANNOUNCE] weston 7.0.0" (Mailing list). Retrieved 22 October 2019.
- ^ https://lists.freedesktop.org/archives/wayland-devel/2020-January/041147.html
- ^ https://lists.freedesktop.org/archives/wayland-devel/2020-September/041595.html
External links[]
- Wayland (display server protocol)
- Free software programmed in C
- Software using the MIT license
- Collabora