September 29, 2022
Earlier this week a new version of Weston, 11.0, was announced. Here's a look at some of the changes that have landed in this new version, and what lies ahead.
Among those changes, this new version brings in some optimization being done in the DRM-backend that refactors and simplifies the handling of buffers that can be scanned out by hardware planes, as well as some changes to include preliminary work towards having support for multiple GPUs.
Color management infrastructure code has landed that allows HDR characteristics to be delivered to an HDR-capable monitor by setting-up HDR metadata in a weston.ini configuration file and delivering that to KMS. Once Weston gains the ability to produce HDR content in a future version, it will come naturally supported.
This new version brings in multiple RDP improvements, like clipboard pasting, various keyboard language support, bumped support for a newer version of FreeRDP library, and many more other improvements and fixes.
With refactoring of the weston_buffer infrastructure, support for wp_single_pixel_buffer_v1 protocol has landed, allowing for instance more optimal media playback.
Finally, as part of our re-architecture effort to support multiple inputs, outputs, and back-ends being active at the same time, the initial groundwork has been laid to support multiple back-ends with more incoming changes still in-flight.
With this new change, we also did a few clean-ups and removed parts which were deprecated in the previous Weston version. With that, the fbdev back-end and support for wl_shell have been removed.
The direct launcher, as well as weston-launch helper, have also been removed with libseat launcher being now enabled by default when building Weston. Reducing our maintenance burden and avoiding having a setuid application was our main motivation for doing this. It helps channel resources into compositor parts rather than dealing with helper/auxiliary code.
Weston has support for libseat and logind launcher. Still, users are being encouraged to switch to libseat as that will remain the only launcher available, with plans to deprecate and remove the logind launcher in future versions. Users that still want to use logind can do so with libseat, which can manage logind sessions on its own, rather than using a dedicated logind launcher in Weston. For more information on how to run Weston in different environments, please consult the Running Weston documentation page.
desktop-shell has seen quite a few changes, shedding some features that complicated the code significantly required a lot of effort to maintain and weren't really tested. As such, the zoom functionality, multiple workspaces, and exposay have been removed entirely from desktop-shell.
With the new color management code being introduced, the cms-static and cms-colord plugins have been deprecated, with plans to remove them entirely in an upcoming version of Weston. Support for ICC display profiles is becoming a more core feature in libweston, implemented by the color-lcms plugin and GL-renderer. The architecture is also changing: rather than colord telling Weston what VCGT to load into the display (via cms-colord plugin), Weston will be telling colord what profiles the monitors have - assuming colord will even be a part of it once the Wayland color management extension is ready. Colord is not going to be obsolete though; it will still be needed for managing the profiles for everything else than displays: scanners, cameras, printers, etc.
Some other notable changes are that libweston-desktop will be merged into libweston, a change that has been started in Weston 11 but that will be completed in version 12. This helps refactor some parts from libweston-desktop into libweston to avoid needless indirection between the two libraries. Usually, libweston-desktop is used together with libweston, so it seems rather natural to have them merged into a single entity.
Xdg-shell protocol updates have been included with this release: tiled orientation and capabilities events are now supported, with desktop-shell being modified to support basic tiled orientation of windows.
Bug-fixes have been solved across the board, from shells, to Xwayland, from core compositor to renderers and back-ends.
Code that handled the launching of processes has been changed to avoid using unsafe functions between
execv(). These fixes have been initially added when starting up Xwayland, but later on they have been transferred to handle other similar instances: launching a shell client, an input method client, or an application from the desktop-shell's panel.
With color management infrastructure code in place, Weston 12 should see further updates on this front, like using libdisplay-info library to replace the ad hoc EDID parsing, and many more updates to be implemented from the roadmap, which we created for tracking the color management and HDR effort.
Multi-GPU support is something that we look forward to and we'd like to facilitate that effort as to land into a future release. Under the same effort, the ability to have multiple backends active at the same time is another major endeavour we'd like to support further.
For libweston users, we would like to simplify, and potentially unify, some of the set-up code one would require when creating a compositor instance.
On the same subject, we have been pulling out common functionality used in shells into helper functions which could be useful to other users of libweston when creating custom shells. Incorporating that into libweston or a helper library is one of our long-term objectives. Still related to shells, we've been actively investigating a Lua-based shell to allow a scriptable window management policy.
Furthermore, in the past releases, libweston and Weston itself have seen an overall increase documentation process, so we'd like to continue to improve and expand that effort.
We have also incorporated a number of bug fixes and improvements to the Xwayland support for legacy X11 clients. More work on this will occur through the Weston 12 release cycle.
Sunny Spain will have multimedia developers on speed dial next week for the 11th edition of the GStreamer Conference, taking place at the…
The world-renowned culinary scene in The City of Light will be getting a pack of different types of chefs next week for Kernel Recipes and…
Collabora is headed to Amsterdam! This year, we will be showcasing some of our recent work on the DAB protocol, as well as the software…