14 Feb 2025
Planet GNOME
Andy Wingo: tracepoints: gnarly but worth it
Hey all, quick post today to mention that I added tracing support to the Whippet GC library. If the support library for LTTng is available when Whippet is compiled, Whippet embedders can visualize the GC process. Like this!

Click above for a full-scale screenshot of the Perfetto trace explorer processing the nboyer microbenchmark with the parallel copying collector on a 2.5x heap. Of course no image will have all the information; the nice thing about trace visualizers like is that you can zoom in to sub-microsecond spans to see exactly what is happening, have nice mouseovers and clicky-clickies. Fun times!
on adding tracepoints
Adding tracepoints to a library is not too hard in the end. You need to pull in the lttng-ust library, which has a pkg-config file. You need to declare your tracepoints in one of your header files. Then you have a minimal C file that includes the header, to generate the code needed to emit tracepoints.
Annoyingly, this header file you write needs to be in one of the -I directories; it can't be just in the the source directory, because lttng includes it seven times (!!) using computed includes (!!!) and because the LTTng file header that does all the computed including isn't in your directory, GCC won't find it. It's pretty ugly. Ugliest part, I would say. But, grit your teeth, because it's worth it.
Finally you pepper your source with tracepoints, which probably you wrap in some macro so that you don't have to require LTTng, and so you can switch to other tracepoint libraries, and so on.
using the thing
I wrote up a little guide for Whippet users about how to actually get traces. It's not as easy as perf record, which I think is an error. Another ugly point. Buck up, though, you are so close to graphs!
By which I mean, so close to having to write a Python script to make graphs! Because LTTng writes its logs in so-called Common Trace Format, which as you might guess is not very common. I have a colleague who swears by it, that for him it is the lowest-overhead system, and indeed in my case it has no measurable overhead when trace data is not being collected, but his group uses custom scripts to convert the CTF data that he collects to... GTKWave (?!?!?!!).
In my case I wanted to use Perfetto's UI, so I found a script to convert from CTF to the JSON-based tracing format that Chrome profiling used to use. But, it uses an old version of Babeltrace that wasn't available on my system, so I had to write a new script (!!?!?!?!!), probably the most Python I have written in the last 20 years.
is it worth it?
Yes. God I love blinkenlights. As long as it's low-maintenance going forward, I am satisfied with the tradeoffs. Even the fact that I had to write a script to process the logs isn't so bad, because it let me get nice nested events, which most stock tracing tools don't allow you to do.
I fixed a small performance bug because of it - a worker thread was spinning waiting for a pool to terminate instead of helping out. A win, and one that never would have shown up on a sampling profiler too. I suspect that as I add more tracepoints, more bugs will be found and fixed.
fin
I think the only thing that would be better is if tracepoints were a part of Linux system ABIs - that there would be header files to emit tracepoint metadata in all binaries, that you wouldn't have to link to any library, and the actual tracing tools would be intermediated by that ABI in such a way that you wouldn't depend on those tools at build-time or distribution-time. But until then, I will take what I can get. Happy tracing!
14 Feb 2025 1:32pm GMT
This Week in GNOME: #187 Triple Buffered Notifications
Update on what happened across the GNOME project in the week from February 07 to February 14.
GNOME Core Apps and Libraries
Mutter
A Wayland display server and X11 window manager and compositor library.
Georges Stavracas (feaneron) announces
Today, just in time for this edition of This Week in GNOME and after 5 years, more than a thousand review comments, and multiple massive refactorings and rewrites, the legendary merge request mutter!1441 was merged.
This merge requests introduces an additional render buffer when Mutter is not able to keep up with the frames.
The technique commonly known as dynamic triple buffering can help in situations where the total time to generate a frame - including CPU and GPU work - is longer than one refresh cycle. This improves the concurrency capabilities of Mutter by letting the compositor start working on the next frame as early as possible, even when the previous frame isn't displayed.
In practice, this kind of situation can happen with sudden burst of activity in the compositor. For example, when the GNOME Shell overview is opened after a period of low activity.
This should improve the perceived smoothness of GNOME, with less skipped frames and more fluid animations.
GNOME Shell
Core system user interface for things like launching apps, switching windows, system search, and more.
Julian Sparber (Away till Jan 7th) reports
The long awaited notification grouping was merged this week into GNOME Shell, just in time for GNOME 48. This was a huge effort by multiple parties, especially by Florian Müllner who spend countless hours reviewing code changes. This is probably one of the most visible features added to GNOME thanks to the STF grant.
GNOME Contacts
Keep and organize your contacts information.
Adrien Plazas announces
Contacts received some small last minute changes right in time for GNOME 48:
- its contact editor's spacing have been overhauled to match other GNOME apps,
- its birthday editing row and dialog got redesigned to not only look better but work better on mobile as well.
GNOME Circle Apps and Libraries
Tobias Bernard announces
This week Drum Machine was accepted into Circle! It's a delightful little app to play with drum patterns and prototype track ideas. Congratulations!
Third Party Projects
Krafting - Vincent reports
SemantiK got two releases last week: 1.4.0 and 1.5.0. They both bring new improvements, code refactoring, more translation work (thanks to @johnpetersa19 for the Brazilian Portuguese translation), and a revamped language selector!
The next big step would be to create more Language Pack, if you want to help with that, feel free to contact me via Matrix!
Krafting - Vincent reports
Also, last week, I've been hard at work fixing bugs throughout all my apps, and making them fully responsive on small screens, making them perfect for Mobile Linux ! 🎉📱
Hex Colordle got some bug fixes and small improvements to message when you lose.
Playlifin Voyager and PedantiK got some UI tweaks and bug fixes
Reddy got some better image scaling, making it way better on small screens, as well as some library version bumps.
![]()
![]()
Gir.Core
Gir.Core is a project which aims to provide C# bindings for different GObject based libraries.
Marcel Tiede says
GirCore verion 0.6.2 was released. It features support for .NET 9 and modernized the internal binding code resulting in better garbage collector integration and the removal of reflection based code. As a result there are several breaking changes. A new beginner friendly tutorial was contributed and can be found on the homepage. Please see the release notes for more details.
Fractal
Matrix messaging app for GNOME written in Rust.
Kévin Commaille announces
Due to a couple of unfortunate but important regressions in Fractal 10, we are releasing Fractal 10.1 so our users don't have to wait too long for them to be addressed. This minor version fixes the following issues:
- Some rooms were stuck in an unread state, even after reading them or marking them as read.
- Joining or creating a room would crash the app.
This version is available right now on Flathub.
If you want to help us avoid regressions like that in the future, you could use Fractal Nightly! Or even better, you could pick up one of our issues and become part of the
problemsolution.
Events
Kristi Progri announces
GUADEC 2025 Call for Papers is officially open! Submit your paper by March 16th via this link: https://events.gnome.org/event/259/abstracts/#submit-abstract
That's all for this week!
See you next week, and be sure to stop by #thisweek:gnome.org with updates on your own projects!
14 Feb 2025 12:00am GMT
13 Feb 2025
Planet GNOME
Cassidy James Blaede: GNOME Should Kick the Foot to the Curb… Mostly
This past week volunteers working with the GNOME design and engagement teams debuted a brand new GNOME.org website-one that was met largely with one of two reactions:
-
It's beautiful and modern, nice work! and
-
Where is the foot‽
You see, the site didn't[^logo update] feature the GNOME logo at the top of the page-it just had the word GNOME, with the actual logo relegated to the footer. Admittedly, some folks reacted both ways (it's pretty, but where's the foot?). To me, it seems that the latter reaction was mostly the sentiment of a handful of long-time contributors who have understandably grown very cozy with the current GNOME logo:
[^logo update]: 2024-02-14: I wrote a quick merge request to use the logo on the website yesterday since I figured someone else would, anyway. I wanted to demonstrate what it would look like (and do it "right" if it was going to happen). That change has since been merged.
Why the foot?
The current GNOME logo is a four-toed foot that is sort of supposed to look like a letter G. According to legend (read: my conversations with designers and contributors who have been working with GNOME for more years than I have fingers and toes), it is basically a story of happenstance: an early wallpaper featured footprints in the sand, that was modified into an icon for the menu, that was turned into a sort of logo while being modified to look like the letter G, and then that version was flattened and cleaned up a bit and successfully trademarked by the GNOME Foundation.
Graphic shared by Michael Downey on Mastodon
So, why do people like it? My understanding (and please drop a comment if I'm wrong) is that it often boils down to one or more of:
-
It's always been this way; as long as GNOME has had an official logo, it's been a variation of the foot.
-
It's a trademark so it's not feasible to change it from a legal or financial perspective.
-
It has personality, and anything new would run the risk of being bland.
-
It has wide recognition at least within the open source enthusiast and developer space, so changing it would be detrimental to the brand equity.
What's the problem?
I'm the first to admit that I don't find the foot to be a particularly good logo. Over time, I've narrowed down my thoughts (and the feedback I've heard from others) into a few recurring reasons:
-
It doesn't convey anything about the name or project which by itself may be fine-many logos don't directly. But it feels odd to have such a bold logo choice that doesn't directly related to the name "GNOME," or to any specific aspect of the project.
-
It's an awkward shape that doesn't fit cleanly into a square or circle, especially at smaller sizes (e.g. for a social media avatar or favicon). It's much taller than it is wide, and it's lopsided weight-wise. This leads to frustrations from designers when trying to fit the logo into a square or circle space, leading to excessive amounts of whitespace and/or error-prone manual alignment compared to other elements.
-
It is actively off-putting and unappealing to at least some folks including much of the GNOME design team, newer contributors, people outside the open source bubble-and apparently potentially entire cultures (which has been raised multiple times over the past 20+ years). Anecdotally, almost everyone new I've introduced GNOME to has turned their nose up at the "weird foot," whether it's when showing the website or rocking a tee or sticker to support the project. It doesn't exactly set a great first impression for a community and modern computing platform. And yes, there are a bunch of dumb memes out there about GNOME devs all being foot fetishists which-while I'm not one to shame what people are into-is not exactly the brand image you want for your global, inclusive open source project.
-
It raises the question of what the role of the design team is: if the design team cannot be allowed to effectively lead the design of the project, what are we even doing? I think this is why the topic feels so existential to me as a member of the design team. User experience design includes the moment someone first interacts with the brand of a product through them actually using it day-to-day-and right now, the design team's hands are tied for the first half of that journey.
The imbalance and complexity make for non-ideal situations
So what can we do?
While there are some folks that would push for a complete rebrand of GNOME-name included, I feel like there's a softer approach we could take to the issue. I would also point out that the vast majority of people using GNOME-those on Ubuntu, RHEL, Fedora, Endless OS, Debian, etc.-are not seeing the foot anywhere. They're seeing their distro's logo, and for many, are using using e.g. "Ubuntu" and may not even be aware they're using GNOME.
Given all of the above, I propose that a path forward would be to:
-
Phase the foot out from any remaining user-facing spaces since it's hard to work with in all of the contexts we need to use a logo, and it's not particularly attractive to new users or welcoming to potential contributors-something we need to keep in mind as an aging open source project. This has been an unspoken natural phenomenon as members of the GNOME design team have soured a bit on trying to make designs look nice while accommodating the foot; as a result we have started to see less prominent usage of the foot e.g. on release notes, GNOME Circle, This Week in GNOME, the GNOME Handbook, the new website (before it was re-added), and in other spaces where the people doing the design work aren't the most fond of it.
-
Commission a new brand logo to represent GNOME to the outside world; this would be the logo you'd expect to see at GNOME.org, on user-facing social media profiles, on event banners, on merch, etc. We've been mulling ideas over in the design team for literal years at this point, but it's been difficult to pursue anything seriously without attracting very loud negative feedback from a handful of folks-perhaps if it is part of a longer-term plan explicitly including the above steps, it could be something we'd be able to pursue. And it could still be something quirky, cute, and whimsical! I personally don't love the idea of something super generic as a logo-I think something that connects to "gnomes," our history, and/or our modern illustration style would be great here. But importantly, it would need to be designed with the intent of its modern usage in mind, e.g. working well at small sizes, in social media avatars, etc.
-
Refresh the official GNOME brand guidelines by explicitly including our modern use of color, animation, illustrations, and recurring motifs (like the amazing wallpapers from Jakub!). This is something that has sort of started happening naturally, e.g. with the web team's newer web designs and as the design team made the decision to move to Inter-based Adwaita Sans for the user interface-and this push continues to receive positive feedback from the community. But much of these efforts have not been reflected in the official project brand guidelines, causing an awkward disconnect between what we say the brand is and how it's actually widely used and perceived.
-
Immortalize the foot as a mascot, something to be used in developer documentation, as an easter egg, and perhaps in contributor-facing spaces. It's much easier to tell newcomers, "oh this is a goofy icon that used to be our logo-we love it, even if it's kind of silly" without it having to represent the whole project from the outside. It remains a symbol for those "in the know" within the contributor community while avoiding it necessarily representing the entire GNOME brand.
-
Stretch goal: title-case Gnome as a brand name. We've long moved past GNOME being an acronym (GNU Network Object Model Environment?)-with a bit of a soft rebrand, I feel we could officially say that it's spelled "Gnome," especially if done so in an official logotype. As we know, much like the pronunciation of GNOME itself, folks will do what they want-and they're free to!-but this would be more about how the brand name is used/styled in an official capacity. I don't feel super strongly about this one, but it is awkward to have to explain why it's called GNOME and all caps but not actually an acronym but it used to be-and why the logo is a foot-any time I tell someone what I contribute to. ;)
What do you think?
I genuinely think GNOME as a project and community is in a good place to move forward with modernizing our outward image a bit. Members of the design team like Jamie, kramo, Brage, Jakub, Tobias, Sam, and Allan and other contributors across the project like Alice, Sophie, and probably half a dozen more I am forgetting have been working hard at modernizing our UI and image when it comes to software-I think it's time we caught up with the outward brand itself.
Hit me up on Mastodon or any of the links in the footer to tell me if you think I'm right, or if I've gotten this all terribly wrong. :)
13 Feb 2025 12:00am GMT
12 Feb 2025
Planet GNOME
Michael Meeks: 2025-02-12 Wednesday
- Cartoon drawing update with Dave, getting nicely ahead. Partner call.
- Published the next strip: celebrating working together
- Pleased to see my FOSDEM talk videos released: Collabora Online - richer collaboration, Automatic Documents packed with content and signed, and COOL - LibreOffice Technology in the browser, the recording teams do such an amazing job there.
- More calls; excited to see the OSBA Tendering guidelines go live in English: announcement, and my take in more detail. Ensuring that well meaning FLOSS procurers don't get scammed into buying the worst lack of support and maintenance possible is vital to FLOSS sustainability I think.
12 Feb 2025 5:42pm GMT
11 Feb 2025
Planet GNOME
Michael Meeks: 2025-02-11 Tuesday
- Planning call, sync with Karen, Andras & partners. Out for a run in the afternoon with J. - lovely. Worked late trying to dig back through piled-up E-mail.
11 Feb 2025 9:00pm GMT
Gedit Technology blog: Various news about gedit
A new year begins, a good time to share some various news about gedit.
gedit-text-editor.org
gedit has a new domain name for its website:
Previously, the gedit homepage was on the GNOME wiki, but the wiki has been retired. So a new website has been set up.
Some work on the website is still necessary, especially to better support mobile devices (responsive web design), and also for printing the pages. If you are a seasoned web developer and want to contribute, don't hesitate to get in touch!
Wrapping-up statistics for 2024
The total number of commits in gedit and gedit-related git repositories in 2024 is: 1042. More precisely:
300 enter-tex 365 gedit 52 gedit-plugins 50 gspell 13 libgedit-amtk 54 libgedit-gfls 47 libgedit-gtksourceview 161 libgedit-tepl
It counts all contributions, translation updates included.
The list contains two apps, gedit and Enter TeX. The rest are shared libraries (re-usable code available to create other text editors).
Enter TeX is a TeX/LaTeX editor previously named LaTeXila and GNOME LaTeX. It depends on Gedit Technology and drives some of its development. So it makes sense to include it alongside gedit. A blog post about Enter TeX will most probably be written, to shed some light on this project that started in 2009.
Onwards to 2025
The development continues! To get the latest news, you can follow this blog or, alternatively, you can follow me on Mastodon.
This article was written by Sébastien Wilmet, currently the main developer behind gedit.
11 Feb 2025 10:00am GMT
Gedit Technology blog: Enter TeX
As promised, I wanted to write a blog post about this application.
Enter TeX is a TeX / LaTeX text editor previously named LaTeXila and then GNOME LaTeX. It is based on the same libraries as gedit.
Renames
LaTeXila was a fun name that I picked up when I was a student back in 2009. Then the project was renamed to GNOME LaTeX in 2017 but it was not a great choice because of the GNOME trademark. Now it is called Enter TeX.
By having "TeX" in the name is more future-proof than "LaTeX", because there is also Plain TeX, ConTeXt and GNU Texinfo. Only LaTeX is currently well supported by Enter TeX, but the support for other variants would be a welcome addition.
Note that the settings and configuration files are automatically migrated from LaTeXila or GNOME LaTeX to Enter TeX.
There is another rename: the namespace for the C code has been changed from "Latexila" to "Gtex", to have a shorter and better name.
Other news
If you're curious, you can read the top of the NEWS file, it has all the details.
If I look at the achievements file, there is also the port from Autotools to Meson that was done recently and is worth mentioning.
Known issue for the icons
Enter TeX unfortunately suffers from a combination of changes in adwaita-icon-theme and GThemedIcon (part of GIO). Link to the issue on GitLab.
Compare the two screenshots and choose the one you prefer:
As an interim solution, what I do is to install adwaita-icon-theme 41.0 in the same prefix as where Enter TeX is installed (not a system-wide prefix).
To summarize
- LaTeXila -> GNOME LaTeX -> Enter TeX
- C code namespace: Latexila -> Gtex
- Build system: Autotools -> Meson
- An old version of adwaita-icon-theme is necessary.
This article was written by Sébastien Wilmet, currently the main developer behind Enter TeX.
11 Feb 2025 10:00am GMT
Jiri Eischmann: GNOME Has No Czech Translators
For at least the last 15 years, the translations of GNOME into Czech have been in excellent condition. With each release, I would only report that everything was translated, and for the last few years, this was also true the vast majority of the documentation. However, last year things started to falter. Contributors who had been carrying this for many years left, and there is no one to take over after them. Therefore, we have decided to admit it publicly: GNOME currently has no Czech translators, and unless someone new takes over, the translations will gradually decline.
Personally, I started working on GNOME translations in 2008 when I began translating my favorite groupware client - Evolution. At that time, the leadership of the translation team was taken over by Petr Kovář, who was later joined by Marek Černocký who maintained the translations for many years and did an enormous amount of work. Thanks to him, GNOME was almost 100% translated into Czech, including the documentation. However, both have completely withdrawn from the translations. For a while, they were replaced by Vojtěch Perník and Daniel Rusek, but the former has also left, and Dan has now come to the conclusion that he can no longer carry on the translations alone.
I suggested to Dan that instead of trying to appeal to those who the GNOME translations have relied on for nearly two decades-who have already contributed a lot and are probably facing some form of burnout or have simply moved on to something else after so many years-it would be better to reach out to the broader community to see if there is someone from a new generation who would be willing and energetic enough to take over the translations. Just as we did nearly two decades ago.
It may turn out that an essential part of this process will be that the GNOME translations into Czech will decline for some time.Because the same people have been doing the job for so many years, the community has gotten used to taking excellent translations for granted. But it is not. Someone has to do the work. As more and more English terms appear in the GNOME interface, perhaps dissatisfaction will motivate someone to do something about it. After all, that was the motivation for the previous generation to get involved.
If someone like that comes forward, Dan and I are willing to help them with training and gradually hand over the project. We may both continue to contribute in a limited capacity, but the project needs someone new, ideally not just one person, but several, because carrying it alone is a path to burnout. Interested parties can contact us in the mailing list of the Czech translation team at diskuze-l10n-cz@lists.openalt.org.
11 Feb 2025 9:59am GMT
10 Feb 2025
Planet GNOME
Andy Wingo: whippet at fosdem
Hey all, the video of my FOSDEM talk on Whippet is up:
Slides here, if that's your thing.
I ended the talk with some puzzling results around generational collection, which prompted yesterday's post. I don't have a firm answer yet. Or rather, perhaps for the splay benchmark, it is to be expected that a generational GC is not great; but there are other benchmarks that also show suboptimal throughput in generational configurations. Surely it is some tuning issue; I'll be looking into it.
Happy hacking!
10 Feb 2025 9:01pm GMT
Jussi Pakkanen: C++ compiler daemon testing tool
In an earlier blog post I wrote about a potential way of speeding up C++ compilations (or any language that has a big up-front cost). The basic idea is to have a process that reads in all stdlib header code that is suspended. Compilations are done by sending the actual source file + flags to this process, which then forks and resumes compilation. Basically this is a way to persist the state of the compiler without writing (or executing) a single line of serialization code.
The obvious follow up question is what is the speedup of this scheme. That is difficult to say without actually implementing the system. There are way too many variables and uncertainties to make any sort of reasonable estimate.
So I implemented it.
Not in an actual compiler, heavens no, I don't have the chops for that. Instead I implemented a completely fake compiler that does the same steps a real compiler would need to take. It spawns the daemon process. It creates a Unix domain socket. It communicates with the running daemon. It produces output files. The main difference is that it does not actually do any compilation, instead it just sleeps to simulate work. Since all sleep durations are parameters, it is easy to test the "real" effect of various schemes.
The code is in this GH repo.
The default durations were handwavy estimates based on past experience. In past measurements, stdlib includes take by far the largest chunk of the total compilation time. Thus I estimated that compilation without this scheme would take 5 seconds per file whereas compilations with it would take 1 second. If you disagree with these assumptions, feel free to run the test yourself with your own time estimates.
The end result was that on this laptop that has 22 cores a project with 100 source files took 26 seconds to compile without the daemon and 7 seconds with it. This means the daemon version finished in just a hair over 25% of a "regular" build.
Wouldn't you want your compilations to finish in a quarter of the time with zero code changes? I sure would.
(In reality the speedup is probably less than that. How much? No idea. Someone's got to implement that to find out.)
10 Feb 2025 12:36am GMT
07 Feb 2025
Planet GNOME
Ross Burton: Fact-checking ChatGPT with Yocto Project release names
For fun, I decided to ask to "explain the themes in the Yocto Project release names". It went about as well as I expected, to be honest:
The Yocto Project follows a thematic naming convention for its release names. The themes have evolved over time:
So far so good.
Types of Birds (Older Releases) Early Yocto Project releases were named after different bird species. Examples include:
Incorrect, that was not one of the themes.
Dizzy (a reference to Dizzy Gillespie, but also sounds like a bird name)
A jazz musician that "sounds like a bird name"? One hell of a stretch, and not the reference.
Fido (a breed of pigeon)
From what I can tell, Fido is not a breed of pigeon. Also not the reference.
Jethro (a reference to Jethro Tull, but also resembles a bird-like theme)
Jethro Tull the rock band? Not the reference.
I do wonder why it decided the theme was types of birds, then made up one bird breed and listed two musicians that "sound like" bird names.
Continuing on...
Muppets Characters (Mid-Series) The Yocto Project later transitioned to naming releases after characters from The Muppets, a popular puppet show created by Jim Henson. Examples include:
No, it didn't.
Krogoth (a lesser-known Muppet)
Krogoth is so lesser-known that the Muppets Wiki doesn't mention it, so I think this is made-up.
Morty (another Muppet character)
According to the Muppets Wiki "Morty is Rick Moranis' agent. He is seen in Muppets Tonight episode 202 [in 1997]".
Considering how incorrect everything else is I actually think this is more likely to be a coincidence than an actual reference to reality. There's been a lot of characters over the decades of shows.
Rocko (potentially a reference to Rocko from Rocko's Modern Life, though not strictly Muppet-related)
"not strictly"? A cartoon from the 1990s by some of the people that later gave us Spongebob Squarepants is not the reference for this release.
Sci-Fi and Fantasy References (Current Theme) The most recent trend in Yocto release names leans toward science fiction and fantasy references. Examples include:
Surprisingly, this is not the current theme.
Langdale (a reference to a location, possibly inspired by British landscapes, but also fits a fantasy tone)
Oh you're close, go on you can do it!
Mickledore (a name with a Tolkien-esque or fantasy feel)
I can only imagine why that is...
Nanbield (continuing the theme of mysterious, fantasy-like names)
I give up.
Remember people: verify everything that LLMs say, as they are first-rate bullshit artists.
07 Feb 2025 5:03pm GMT
This Week in GNOME: #186 Media Parsing
Update on what happened across the GNOME project in the week from January 31 to February 07.
GNOME Core Apps and Libraries
Sam Thursfield says
The LocalSearch filesystem extractor is switching from GStreamer to ffmpeg / libav for media file parsing in the next major release. GStreamer served us well for almost 20 years in this role as a media parsing library, but it was designed for media playback and not fast metadata extraction. It's plugin support meant that it behaves differently depending which plugins are installed on a given system, which makes it impossible to fully test. The last few years saw the LocalSearch metadata extractor gain much better sandboxing, but due to the way GStreamer loads plugins, we had to poke several holes in the sandbox to make it work, and play a whack-a-mole game to blocklist any GStreamer plugins that wouldn't work in the sandbox.
The new ffmpeg-based implementation is faster, and also safer due to tighter sandboxing. It supports all the media formats we need to parse, and in fact, on most systems GStreamer was already processing many filetypes using libav. Thanks to Carlos Garnacho for the merge request.
GJS
Use the GNOME platform libraries in your JavaScript programs. GJS powers GNOME Shell, Polari, GNOME Documents, and many other apps.
ptomato says
In GNOME 48.beta, the GJS interactive console will be asynchronous. You can, for example, create a window with a button, connect a signal handler, click the button, and the signal handler will run when the button is clicked. Previously, the signal handler wouldn't run because it was blocked by the console waiting for input. (This doesn't yet make
await
work in the interactive console, but it is a prerequisite.) Thanks to Evan Welsh for doing the thorough research here!
ptomato says
Also in GNOME 48.beta, we have an easier way to create
GObject.Value
thanks to Gary Li. Usually for C APIs that use GValue, GJS transparently substitutes native JS values. However, in some cases you need to use the GObject.Value wrapper in JS. Previously you would create an empty object, callinit
to set the type, and then store a value:const value = new GObject.Value(); value.init(String); value.set_string('a string');
Now you can just do it in one:
new GObject.Value(String, 'a string');
GNOME Releases
Jeremy Bicha reports
The Debian GNOME team has announced that GNOME 48 will be included in Debian 13 "Trixie". Debian 13 will be released later this year.
GNOME Circle Apps and Libraries
Shortwave
Internet radio player with over 30000 stations.
Felix reports
Shortwave 5.0 is now available, bringing background playback and completely revamped stream recording!
For more details, check out the blog post: https://blogs.gnome.org/haeckerfelix/2025/02/05/shortwave-5-0/
Third Party Projects
fabrialberio says
Pins (formerly PinApp) version 2.0 is now available! The new version is the result of a complete rewrite, switching from Python to C. This brings a lot of major and minor improvements, including a new grid view and support for autostart applications. Checkout the app on Flathub.
![]()
petsoi says
Words! 0.3 is now available with support for multiple dictionaries and different word lengths! I've also added a German dictionary. If you'd like to see your language included, feel free to submit a word list.
![]()
Shell Extensions
Just Perfection reports
The GNOME Shell 48 extensions porting guide has been released! If you need any help with the port, you can ask us on the GNOME Extensions Matrix Channel.
That's all for this week!
See you next week, and be sure to stop by #thisweek:gnome.org with updates on your own projects!
07 Feb 2025 12:00am GMT
06 Feb 2025
Planet GNOME
Jens Georg: Remote deploy to server using SSH and Gitlab
These are my notes for setting up a "deploy-to-remote-webserver" workflow with ssh and an sftp-only chroot, in case someone might find it useful.
Compiled from various bits and pieces around the internet.
Setting up SSH
- Add a group:
groupadd -r remote-deploy
. This will add a system group - Create a folder for authorized keys for users in that group:
mkdir -p /etc/ssh/authorized
- Modify ssh_config
AuthorizedKeysFile /etc/ssh/authorized/%u .ssh/authorized_keys
Match Group remote-deploy
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PasswordAuthentication no
Setting up the chroot jail
It is important that the path up until the home folder is owned by root:root. Below that, create a folder that is owned by the user and any supplementary group you might need to access (e.g. www-data)
mkdir -p /path/to/chroot/jail/deploy-user
chown -R root:root /path/to/chroot/jail/deploy-user
chmod -R 755 /path/to/chroot/jail/deploy-user
mkdir /path/to/chroot/jail/deploy-user/public
chown deploy-user:www-data /path/to/chroot/jail/deploy-user
chmod 755 /path/to/chroot/jail/deploy-user
Setting up the individual user(s)
- Add a user to the group created above:
useradd -g remote-deploy -M -d /path/to/chroot/jail -s /usr/sbin/nologin deploy-user
- Generate a new pair of keys and move the public key to the newly configured added keystore
ssh-keygen -o deploy-user -t ed25519
mv deploy-user.pub /etc/ssh/authorized/deploy-user
Setting up the gitlab pipeline
-
Obtain the host key frm the remote host. To be able to make the variable masked in Gitlab later, it needs to be encoded:
ssh-keyscan -q deploy-host.example.com 2>/dev/null | bas64 -w0
-
Log into your gitlab instance, go to Settings->CI/CD->Variables
-
Click on "Add variable"
-
Set "Masked and Hidden" and "Protect variable"
-
Add a comment like "SSH host key for deploy host"
-
Set name to SSH_HOST_KEY
-
Paste output of the keyscan command
-
Create another variable with the same Settings
-
Add a comment like "SSH private key for deploy user"
-
Set name to SSH_PRIVATE_KEY
-
Paste output of
base64 -w0 deploy-user
, where deploy-user is the private key generated above
-
-
Setting up ssh in the pipeline script
mkdir ~/.ssh
echo -n $SSH_HOST_KEY | base64 -d > ~/.ssh/known_hosts
# If necessary, start ssh-agent
eval `ssh-agent`
echo -n $SSH_PRIVATE_KEY | base64 -d | ssh-add -
06 Feb 2025 2:26am GMT
05 Feb 2025
Planet GNOME
Arun Raghavan: PipeWire ♥ Sovereign Tech Agency
In my previous post, I alluded to an exciting development for PipeWire. I'm now thrilled to officially announce that Asymptotic will be undertaking several important tasks for the project, thanks to funding from the Sovereign Tech Fund (now part of the Sovereign Tech Agency).
Some of you might be familiar with the Sovereign Tech Fund from their funding for GNOME, GStreamer and systemd - they have been investing in foundational open source technology, supporting the digital commons in key areas, a mission closely aligned with our own.
We will be tackling three key areas of work.
ASHA hearing aid support
I wrote a bit about our efforts on this front. We have already completed the PipeWire support for single ASHA hearing aids, and are actively working on support for stereo pairs.
Improvements to GStreamer elements
We have been working through the GStreamer+PipeWire todo list, fixing bugs and making it easier to build audio and video streaming pipelines on top of PipeWire. A number of usability improvements have already landed, and more work on this front continues
A Rust-based client library
While we have a pretty functional set of Rust bindings around the C-based libpipewire
already, we will be creating a pure Rust implementation of a PipeWire client, and provide that via a C API as well.
There are a number of advantages to this: type and memory safety being foremost, but we can also leverage Rust macros to eliminate a lot of boilerplate (there are community efforts in this direction already that we may be able to build upon).
This is a large undertaking, and this funding will allow us to tackle a big chunk of it - we are excited, and deeply appreciative of the work the Sovereign Tech Agency is doing in supporting critical open source infrastructure.
Watch this space for more updates!
05 Feb 2025 5:56pm GMT
Alberto Garcia: Keeping your system-wide configuration files intact after updating SteamOS
Introduction
If you use SteamOS and you like to install third-party tools or modify the system-wide configuration some of your changes might be lost after an OS update. Read on for details on why this happens and what to do about it.
As you all know SteamOS uses an immutable root filesystem and users are not expected to modify it because all changes are lost after an OS update.
However this does not include configuration files: the /etc
directory is not part of the root filesystem itself. Instead, it's a writable overlay and all modifications are actually stored under /var
(together with all the usual contents that go in that filesystem such as logs, cached data, etc).
/etc
contains important data that is specific to that particular machine like the configuration of known network connections, the password of the main user and the SSH keys. This configuration needs to be kept after an OS update so the system can keep working as expected. However the update process also needs to make sure that other changes to /etc
don't conflict with whatever is available in the new version of the OS, and there have been issues due to some modifications unexpectedly persisting after a system update.
SteamOS 3.6 introduced a new mechanism to decide what to to keep after an OS update, and the system now keeps a list of configuration files that are allowed to be kept in the new version. The idea is that only the modifications that are known to be important for the correct operation of the system are applied, and everything else is discarded1.
However, many users want to be able to keep additional configuration files after an OS update, either because the changes are important for them or because those files are needed for some third-party tool that they have installed. Fortunately the system provides a way to do that, and users (or developers of third-party tools) can add a configuration file to /etc/atomic-update.conf.d
, listing the additional files that need to be kept.
There is an example in /etc/atomic-update.conf.d/example-additional-keep-list.conf
that shows what this configuration looks like.

Developers who are targeting SteamOS can also use this same method to make sure that their configuration files survive OS updates. As an example of an actual third-party project that makes use of this mechanism you can have a look at the DeterminateSystems Nix installer:
https://github.com/DeterminateSystems/nix-installer/blob/v0.34.0/src/planner/steam_deck.rs#L273
As usual, if you encounter issues with this or any other part of the system you can check the SteamOS issue tracker. Enjoy!
- A copy is actually kept under
/etc/previous
to give the user the chance to recover files if necessary, and up to five previous snapshots are kept under/var/lib/steamos-atomupd/etc_backup
︎
05 Feb 2025 4:13pm GMT
Felix Häcker: Shortwave 5.0
You want background playback? You get background playback! Shortwave 5.0 is now available and finally continues playback when you close the window, resolving the "most popular" issue on GitLab!
Shortwave uses the new Flatpak background portal for this, which means that the current playback status is now also displayed in the "Background Apps" menu.

The recording feature has also been overhauled. I have addressed a lot of user feedback here, e.g. you can now choose between 3 different modes:
- Save All Tracks: Automatically save all recorded tracks
- Decide for Each Track: Temporarily record tracks and save only the ones you want
- Record Nothing: Stations are played without recording

In addition to that the directory for saving recorded tracks can be customized, and users can now configure the minimum and maximum duration of recordings.
There is a new dialog window with additional details and options for current or past played tracks. For example, you no longer need to worry about forgetting to save your favorite track when the recording is finished - you can now mark tracks directly during playback so that they are automatically saved when the recording is completed.

You don't even need to open Shortwave for this, thanks to the improved notifications you can decide directly when a new track gets played whether you want to save it or not.

Of course the release also includes the usual number of bug fixes and improvements. For example, the volume can now be changed using the keyboard shortcut.
Enjoy!
05 Feb 2025 1:52pm GMT