시몽

Status update, September 2021

Hi all!

As often, my main focus this month has been Wayland-related stuff. The biggest new item is likely the introduction of a scene-graph API to wlroots. With this new API, compositors can organize the objects which will be rendered on-screen in a tree. Surfaces, buffers, and solid-color rectangles are nodes in the scene-graph. Compositors can arrange the nodes, enable or disable them and set their position. The API is limited to basic 2D operations (much like KMS), for anything more complicated compositors can (permanently or temporarily) use custom rendering logic.

This is a great data structure, because it allows wlroots to provide features and optimizations for free™. For instance, the scene-graph can handle damage tracking without the compositor caring about it. The scene-graph can also be integrated with other wlroots APIs, for instance wlr_output_layout to sync the position of the outputs in the scene or wlr_subsurface to show a whole surface tree in the scene. I think the scene-graph has the potential to make it a lot easier to write efficient wlroots-based compositors, without sacrificing customizability!

Also worth mentioning is Vyivel’s work on wlroots’ surface state API. He’s been fixing a lot of subtle bugs and improving significantly how this part of wlroots works internally. Thanks!

I’ve also contributed a lot to gamescope, Valve’s gaming compositor. This is going to be used on the upcoming Steam Deck, even if it’s not limited to that and can be useful on any gaming PC as well. gamescope now has better multi-output support and an indirection through EGL has been dropped. I’m now working on getting KMS planes to work reliably on amdgpu and adding virtual keyboard support.

Valve sent me a prototype to develop and test on, and I’m very impressed! Since it’s just a regular PC, you can make it run whatever you want on it. Mandatory Sway picture:

sway on steam deck

In other Wayland news, thanks to the efforts of Peter Hutterer, Daniel Stone, Derek Foreman and Alexander Richardson, libwayland now has upstream support for FreeBSD! This involved a lot of work, especially to allow FreeDesktop’s GitLab CI to run the test suite on FreeBSD. It’s great to see non-Linux platforms getting proper support and not needing to constantly rebase custom patches.

I’ve also been working on improving the IRC ecosystem. soju 0.2.0 has been released, adding a new IRC extension to better integrate clients with the bouncer’s multi-network functionality. gamja has improved chat history support and makes use of the MONITOR extension to indicate the status of the remote user when chatting in private. I’ve been experimenting with a new extension for push notifications, allowing to build better Web and Android clients especially on mobile devices. Discussed in the proposal is the integration with proprietary push services, which I don’t use nor like but I think is important to push the standardization effort forward. In the future, I’d like to continue this effort by enabling push notifications on Android devices without Google Play Services (either by adding a new Android service which integrates with an existing open-source push service like Mozilla’s, or by building an open-source clone of Firebase Cloud Messaging and using it with MicroG).

That’s all for now, see you next month!


Questions, comments? Please use my public inbox by sending a plain-text email to ~emersion/public-inbox@lists.sr.ht.

Articles from blogs I follow

M2dir: treating mails as files without going crazy

Sometime recently in the past I complained about Maildir. You can go read the post, but the executive summary is that I think Maildir uses an actively user-hostile directory structure and extremely convoluted filenames that do not convey any meaning at all. …

via blogfehler!

Quick Post

Super Fast

via Mike Blumenkrantz

The xz attack shell script

A detailed walkthrough of the xz attack shell script.

via research!rsc

Generated by openring