#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!