RSSAmplifier

Blog

Posts on swick's blog

Recent content in Posts on swick's blog

blog.sebastianwick.netRSS feed ↗20 posts

Latest posts

Display Next Hackfest 2026

This year was the fourth year in a row that a bunch of display driver and compositor developers met for the Display Next Hackfest , to discuss, present, and tackle issues related to displays, GPUs, and compositors. Thanks to Collabora (Robert Mader and Mark Fillion specifically) for continuing this tradition! (Check out the 2025 edition ) This time we met in Nice, France, after Embedded Recipes…

How Hard Is It To Open a File?

It’s a question I had to ask myself multiple times over the last few months. Depending on the context the answer can be: very simple, just call the standard library function extremely hard, don’t trust anything If you are an app developer, you’re lucky and it’s almost always the first answer. If you develop something with a security boundary which involves files in any way,…

Three Little Rust Crates

I published three Rust crates: name-to-handle-at : Safe, low-level Rust bindings for Linux name_to_handle_at and open_by_handle_at system calls pidfd-util : Safe Rust wrapper for Linux process file descriptors (pidfd) listen-fds : A Rust library for handling systemd socket activation They might seem like rather arbitrary, unconnected things – but there is a connection! systemd socket…

Redefining Content Updates in Wayland

The Wayland core protocol has described surface state updates the same way since the beginning: requests modify pending state, commits either apply that state immediately or cache it into the parent for synchronized subsurfaces. Compositors implemented this model faithfully. Then things changed. Buffer Readiness and Compositor Deviation The problem emerged from GPU work timing. When a client…

Best Practices for Ownership in GLib

For all the rightful criticisms that C gets, GLib does manage to alleviate at least some of it. If we can’t use a better language, we should at least make use of all the tools we have in C with GLib. This post looks at the topic of ownership, and also how it applies to libdex fibers. Ownership In normal C usage, it is often not obvious at all if an object that gets returned from a function…

Improving the Flatpak Graphics Drivers Situation

Graphics drivers in Flatpak have been a bit of a pain point. The drivers have to be built against the runtime to work in the runtime. This usually isn’t much of an issue but it breaks down in two cases: If the driver depends on a specific kernel version If the runtime is end-of-life (EOL) The first issue is what the proprietary Nvidia drivers exhibit. A specific user space driver requires a…

Flatpak Pre-Installation Approaches

Together with my then-colleague Kalev Lember, I recently added support for pre-installing Flatpak applications. It sounds fancy, but it is conceptually very simple: Flatpak reads configuration files from several directories to determine which applications should be pre-installed. It then installs any missing applications and removes any that are no longer supposed to be pre-installed (with some…

Flatpak Happenings

Yesterday I released Flatpak 1.17.0 . It is the first version of the unstable 1.17 series and the first release in 6 months. There are a few things which didn’t make it for this release, which is why I’m planning to do another unstable release rather soon, and then a stable release still this year. Back at LAS this year I talked about the Future of Flatpak and I started with the grim…

SO_PEERPIDFD Gets More Useful

A while ago I wrote about the limited usefulness of SO_PEERPIDFD . for authenticating sandboxed applications. The core problem was simple: while pidfds gave us a race-free way to identify a process, we still had no standardized way to figure out what that process actually was - which sandbox it ran in, what application it represented, or what permissions it should have. The situation has improved…

XDG Intents Updates

Andy Holmes wrote an excellent overview of XDG Intents in his “Best Intentions” blog post, covering the foundational concepts and early proposals. Unfortunately, due to GNOME Foundation issues, this work never fully materialized. As I have been running into more and more cases where this would provide a useful primitive for other features, I tried to continue the work. The…

Integrating libdex with GDBus

Writing asynchronous code in C has always been a challenge. Traditional callback-based approaches, including GLib’s async/finish pattern, often lead to the so-called callback hell that’s difficult to read and maintain. The libdex library offers a solution to this problem, and I recently worked on expanding the integration with GLib’s GDBus subsystem. The Problem with the Sync and…

Testing with Portals

At the Linux App Summit (LAS) in Albania three months ago, I gave a talk about testing in the xdg-desktop-portal project. There is a recording of the presentation, and the slides are available as well. To give a quick summary of the work I did: Revamped the CI Reworked and improved the pytest based integration test harness Added integration tests for new portals Ported over all the existing GLib/C…

Display Next Hackfest 2025

A few weeks ago, a bunch of display driver and compositor developers met once again for the third iteration of the Display Next Hackfest. The tradition was started by Red Hat, followed by Igalia (thanks Melissa), and now AMD (thanks Harry). We met in the AMD offices in Markham, Ontario, Canada; and online, to discuss issues, present things we worked on, figure out future steps on a bunch of topics…

GNOME 49 Backlight Changes

One of the things I’m working on at Red Hat is HDR support. HDR is inherently linked to luminance (brightness, but ignoring human perception) which makes it an important parameter for us that we would like to be in control of. One reason is rather stupid. Most external HDR displays refuse to let the user control the luminance in their on-screen-display (OSD) if the display is in HDR mode. Why?…

Blender HDR and the reference white issue

The latest alpha of the upcoming Blender 5.0 release comes with High Dynamic Range (HDR) support for Linux on Wayland which will, if everything works out, make it into the final Blender 5.0 release on October 1, 2025. The post on the developer forum comes with instructions on how to enable the experimental support and how to test it. If you are using Fedora Workstation 42, which ships GNOME…

Booting into Toolbox Containers

There are a lot of tangible benefits in using toolbox containers for development to the point that I don’t want to use anything else anymore. Even with a bunch of tricks at our disposal, there are still downsides. The containers are not complete sessions but rather try to integrate with the host session. If you’re working on something that is part of a session it might be possible to…

On the Usefulness of SO_PEERPIDFD

Update Oct. 2025: Things have changed since writing this. In a follow-up post I explain how SO_PEERPIDFD Gets More Useful . Kernel 6.5 added a few new pidfd functions: SCM_PIDFD and SO_PEERPIDFD . The idea behind them is the same as SCM_CREDENTIALS and SO_PEERCRED respectively. The only difference is that the PIDFD functions return not a plain, numerical PID but a file descriptor instead. A plain…

Fedora Silverblue Development Utils

In the previous post we explored all the different ways to develop software on Fedora Silverblue when Toolbx and Flatpak are not enough. Some of the ideas there are interesting, some are dead-ends and some are extremely useful. I’ve extracted all the useful parts to a small script I’m calling silverblue-devel-utils . $ silverblue-devel-utils Utils for developing on a Silverblue system…

Developing Gnome Shell on Fedora Silverblue

Fedora Silverblue is one of the immutable operating systems. Somewhere the OS is being built, resulting in an ostree commit that gets distributed to the machines running Silverblue. On the machines this results in a new deployment which will become active on the next boot, while the previous deployment is still around, ready to be booted into if anything goes wrong. The deployments are read-only.…

Setting up a personal server in 2023

Sometimes I just want to do a small thing, like creating a blog, and then end up noticing everything is horrible and I should probably start fixing things at the root. In this instance, my personal server from a hoster didn’t receive an update in a long time. $ cat /etc/os-release | grep PRETTY_NAME PRETTY_NAME = 'Debian GNU/Linux 9 (stretch)' Debian 9… that seems a bit old. Stretch…