#28 PrintScrn

• Curated by Felix

Update on what happened across the GNOME project in the week from January 21 to January 28.

Core Apps and Libraries

GNOME Shell

Core system user interface for things like launching apps, switching windows, system search, and more.

Ivan Molodetskikh announces

After thorough reviews from Tobias Bernard, Jonas Dreßler and Georges Stavracas, the main part of the new GNOME Shell screenshot UI has been merged for GNOME 42! 🎉🎉 Since the last time, the screenshot UI has got another round of design review, more polish and a big close button in the top right.

Screencasts and a few other minor additions have been split into separate, smaller merge requests for easier review and should hopefully also make it in time for the GNOME 42 UI freeze next week.

WebKitGTK

GTK port of the WebKit rendering engine.

Alexander Mikhaylenko announces

WebKitGTK has had a few touchscreen-related fixes and supports using the accent colors from the app or system when rendering scrollbars and other widgets now

Vala

An object-oriented programming language with a self-hosting compiler that generates C code and uses the GObject system

Prince781 says

Vala 0.55.2 has been released with new features and bug fixes.

Last week we added support for async main(), allowing you to call asynchronous methods from main using yield.

// ls.vala
async int main (string[] args) {
  string dir = args.length == 2 ? args[1] : ".";
  var file = File.new_for_commandline_arg (dir);
  try {
    FileEnumerator enumerator =
      yield file.enumerate_children_async (
        "standard::*,time::*",
        FileQueryInfoFlags.NOFOLLOW_SYMLINKS
      );
    List<FileInfo> children =
      yield enumerator.next_files_async (int.MAX);
    print ("total %lu\n", children.length ());
    foreach (var info in children) {
      // <file-type> <access-date> <size> <name>
      print ("%26s %24s %10"+int64.FORMAT+" B %s\n",
        info.get_content_type (),
        info.get_access_date_time ().to_string (),
        info.get_size (),
        info.get_name ());
    }
  } catch (Error e) {
    printerr ("failed to enumerate files - %s\n", e.message);
    return 1;
  }
  return 0;
}

Similarly, we added support for using yield within main blocks.

This week, we added support for using foreach with GLib.Array and GLib.Sequence.

All these features are available in Vala 0.55.2 and you can use them in your code now.

Libhandy

Building blocks for modern GNOME apps using GTK3.

Alexander Mikhaylenko says

libhandy development branch has been renamed from master to main. If you’re using it as a subproject or in a flatpak manifest, you may need to update it

Libadwaita

Building blocks for modern GNOME apps using GTK4.

Alexander Mikhaylenko says

Chris 🌱️ has implemented suffix widget support for AdwPreferencesGroup. Apps like Settings have been using a similar pattern for a while but we never had a proper support for it

GNOME Tour

A guided tour and greeter for GNOME.

Bilal Elmoussaoui reports

I have landed a slightly redesigned Tour and also dropped the video feature as it is no longer used by distributors

GNOME Builder

IDE for writing GNOME-based software.

gwagner reports

GNOME Builder resolves files now to a toolbox or podman container correctly and therefore can offer clang completions, symbol resolution and hover information from the container. This should make working in C/C++ with a container much more enjoyable. Also, Christian tweaked the colorschemes in Builder therefore the Adwaita colorscheme has much better contrast and a nice color palette to distinguish the elements better. Veli took the work and wrote a plugin to enable Builder to lint reStructured Text. And we fixed a little bug in our CMake plugin about the target path resolution.

GLib

The low-level core library that forms the basis for projects such as GTK and GNOME.

Philip Withnall reports

Emmanuel Fleury has also been continuing his campaign against old tests and incomplete test coverage in GLib, moving a number of old tests to the newer test framework and improving code coverage as he goes

Emmanuele Bassi reports

I extended GLib’s gdbus-codegen tool to take a D-Bus interface XML file and produce a reStructuredText file that can be used with multiple documentation generators, like Python docutils and Sphinx, and simplify the process of documenting D-Bus API.

Philip Withnall says

Marc-André Lureau and Loïc Le Page have been landing various fixes and improvements to GLib on Windows, including static linking support, AF_UNIX socket support, various test fixes, and GMemoryMonitor support

GJS

Use the GNOME platform libraries in your JavaScript programs. GJS powers GNOME Shell, Polari, GNOME Documents, and many other apps.

ptomato says

In GJS this week, we have a bug fix from Nasah Kuma and a documentation fix from Andy Holmes.

Circle Apps and Libraries

Health

Collect, store and visualise metrics about yourself.

Cogitri reports

Health’s notifications have been reworked - instead of a separate daemon launching, Health itself is DBus-activatable now and sends notifications via a GApplication service. Additionally, Health’s UI files have been ported to Blueprint and the overview of activities has been switched over to AdwExpanderRow.

ashpd

Rust wrapper around freedesktop portals.

Bilal Elmoussaoui says

After months of work I have finally released ashpd 0.2. The release consists of a ton of changes that happened during the last 6 alpha releases and one beta. It consists of mostly:

  • Async only API using zbus
  • A new almost fully featured demo of the API available on https://flathub.org/apps/details/com.belmoussaoui.ashpd.demo
  • Integration with both GTK4/GTK3 for x11/Wayland window handle retrieval (optional)
  • Integration with PipeWire for retrieving the camera NodeID when possible (optional)
  • Integration with raw-window-handle crate to allow creating a WindowIdentifier from it, very useful for cross-platform crates that wants to make use of the portals on Linux (optional)
  • Library calls logging using the tracing API (optional)
  • Docs aliases for finding the Rust alternatives to what libportal offers or for finding the proxy to use from the DBus interface
  • Enjoy!

Third Party Projects

Tobias Bernard reports

I forgot to report it last week, but there’s a new release of Nostalgia, my tiny app to set historic GNOME wallpapers! It’s been ported to GTK4 and Libadwaita thanks to Maximiliano, Alexander Mikhaylenko, and Julian Sparber 🎉

Fractal

Matrix messaging app for GNOME written in Rust.

Julian Sparber announces

Hello folks, it’s been a while since we last spoke! We have been focused on the code, but we’re long overdue for an update. A lot has happened since November. Fractal-Next is getting closer to feature parity with current Fractal, and even supports new things:

  • Timeline

    • Fractal-Next now allows you to open and save sent files

    • It also displays images, videos and stickers in the timeline

    • You can also get a better view of media send to the room thanks to the built-in media viewer

    • It (finally!) supports reactions (displaying them and sending new ones)

  • User verification

    • Fractal-Next now supports verification of other users by scanning their QR code, or via emoji

    • When a user is verified, an icon is displayed next to their username in the list of room members

  • Room details

    • The room details show now the members of the room including the power level
  • General UX

    • Fractal-Next is better integrated with GNOME’s secret management service Seahorse

    • It supports room upgrades

    • It also supports inviting users to a room

    • Users can change the category of rooms in the sidebar via drag and drop or by using the context menu

    If you want a more lengthy writing about what we’ve been up to and a note about the NLnet grant, please head out to my blog post “A Long Overdue Update — Fractal Next”

GNOME Shell Extensions

firox263 says

Extension Manager, a simple app for browsing and installing Shell Extensions, had its second release. This adds much-requested support for screenshots, as well as a new dark theme and many other quality of life improvements.

The highlights are:

  • Displays screenshots from extensions.gnome.org
  • Dark theme support
  • GNOME Shell version compatibility check
  • Sort search results by Popularity, Recently Updated, etc
  • Global extension on/off toggle
  • Shows user and system extensions separately

GNOME Foundation

Neil McGovern says

FOSDEM returns, virtually. At this year’s virtual booth we have planned themed chat times with a variety of GNOME team, staff, and board members. Be sure to check out our booth page for a full schedule, fun GNOME links, and to join us in chat: https://stands.fosdem.org/stands/the_gnome_foundation/. In true FOSDEM tradition, we’re also hosting a GNOME Beers social! Bring your beverage of choice and join us for this informal virtual event on Feb 5th at 18:00 UTC. Let us know you’re coming by registering online.

Neil McGovern says

The Foundation announced three new projects that focus on improving our developer experience, making more applications available on the GNOME platform and creating a more equitable and sustainable revenue models for developers within our ecosystems.

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!