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.
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!
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, call init 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');
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.
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.