• Pl chevron_right

      Michael Calabrese: Pitivi Timeline Ruler | Widget Finalization

      news.movim.eu / PlanetGnome • 7 August 2026 • 1 minute

    C API and Introspection

    I spent some time cleaning up the Rust C extension and the FFI layer to make it easier to consume from C and through GObject Introspection. One of the biggest changes was exposing the PitiviTimelineRuler instance type in the public headers instead of treating it as a generic GtkWidget. That gives GIR enough information to generate proper bindings automatically.

    I also fixed an issue that only showed up in headless CI environments. The widget was previously relying on gtk::init() during type registration, which doesn't work well without a display server. Switching to set_initialized() solved the problem and made the test suite much more reliable.

    Rendering Improvements

    The rendering code also received a fairly large cleanup. Previously, the widget stored several pieces of drawing state separately, including adjustments, cached Pango layouts, and font descriptions. These have now been grouped into a single DrawingState struct protected by one RefCell.

    Besides making the code easier to reason about, this reduces unnecessary borrow checks during rendering and avoids situations where only part of the drawing state could be updated while signals were being emitted.

    I also introduced a labels_dirty flag so timeline labels are only recalculated when they're actually needed during the snapshot phase. That removes quite a bit of redundant layout work while scrolling and zooming.

    Timeline Marker API

    The custom layout manager is nearly finished, and with it comes a much simpler way to place widgets on the timeline.

    I am currently wrapping up an add_marker() API that will allow attaching any GTK widget to the ruler at a specific timestamp. The PitiviTimelineLayoutChild now exposes the widget's timestamp as a GObject property.

    I'm looking forward to getting this merged, as it should make timeline overlays and markers much easier to implement.

    Stability Fixes

    I also addressed a few smaller edge cases along the way. One of them involved enforcing a minimum value for min_tick_spacing_px, preventing potential divide-by-zero errors when calculating the tick spacing.

    • Pl chevron_right

      Hylke Bons: Icon for Stencil

      news.movim.eu / PlanetGnome • 7 August 2026

    Icon for Stencil

    Week 28

    This week's icon is for René Fouquet 's project:
    Stencil : "Rename batches of files"

    Check out all weekly app icons created so far in the gallery and follow my icon creation adventures as they happen (including sketches) on the Fediverse .

    Need icons?

    I love designing icons and am happy to contribute them free of charge when your project is Free and Open Source . Funded by community sponsors (every little helps!).

    • Pl chevron_right

      Philipp Sauberzweig: Sovereign Tech Fellowship for GNOME Design & Community Management

      news.movim.eu / PlanetGnome • 6 August 2026 • 3 minutes

    Hey, I’m Philipp. I’m a GNOME Design Team member and I have been contributing to GNOME design as a volunteer for several years. I’m excited to share with you that I have joined the Sovereign Tech Agency as a fellow for GNOME Design & Community Management. Check out the other fellows in the official announcement .

    Introduction

    I originally started contributing to GNOME to improve the software I use myself. However, what motivates me to stay involved long-term are my political values. Our modern lives, from communication and education to political discourse, are shaped by digital tools, and I believe that it’s essential for a free and democratic society to ensure free and independent access to these technologies. To achieve this goal, end-user devices based on free and open-source software are key, and the GNOME desktop and its app ecosystem offer a powerful alternative to proprietary platforms.

    In recent years, I have had the privilege of joining the exceptionally skilled and motivated GNOME community as a volunteer, and have experienced how rewarding it is to contribute to a project with such a broad societal impact. At the same time, it’s been a challenge to find a balance between my job, my contributions to GNOME, and my personal life. I’ve contributed to GNOME in my free time, in the evenings, and during vacations. This two-year fellowship is a great honor and marks a significant change in my life. It is a unique opportunity for me to devote my skills and experience entirely to a project I strongly believe in.

    Activities

    During my two-year fellowship, I will support GNOME maintainers and developers with design feedback and reviews, create mockups, and coordinate efforts to standardize design patterns. My other activities focus on lasting improvements through two strategic initiatives: expanding the design community to increase capacity and enhancing our design tooling to reduce overhead and simplify onboarding. The following activities may change over the course of the two-year fellowship, as I will adapt them to the needs of the community.

    Community growth

    I know from my own experience that it is hard to get started with GNOME design. While code contributions are often contained within the boundaries of a single app, design activities spread across multiple projects and often lack a clear entry point or primary contact. Also, not all tasks are newcomer friendly and many require cross‑project knowledge or historical context. I want to make design work more discoverable, simplify onboarding with clear contribution paths and approachable tasks, and retain contributors long term by integrating them into the community.

    To attract new contributors, I will increase the visibility of design work by writing regular blog posts, giving presentations, and running workshops at conferences and hackathons. New contribution opportunities for newcomers will be created with clear instructions for independent activities such as collecting state‑of‑the‑art examples, running accessibility and user tests, and creating mockups. Design reviews will be used as mentorship opportunities, pairing regular design contributors with experienced designers for peer review and knowledge sharing. I plan to improve our team governance with clear membership criteria and focus areas, and integrate sustained contributors into the team and its processes. Finally, I want to provide grant writing support to enable contributors to sustain their contributions long-term.

    Tooling improvements

    User interface mockups are an important tool to communicate with developers. Outdated mockup templates, incomplete documentation, and non‑specialized software create unnecessary overhead, especially for newcomers. Therefore, I will extend and update the mockup templates for our current tool, Inkscape, and evaluate the open‑source UX design tool Penpot for managing our design system. If it proves suitable, I will build a component library to simplify mockup creation and keep assets synced with our stylesheet.

    What’s next

    I want to blog about my fellowship activities and design work in general, so expect regular updates here. If you’re interested in contributing to GNOME design, check out the Design Team page on the Welcome to GNOME website, familiarize yourself with the Human Interface Guidelines , and join our Matrix channel . If you’re a GNOME developer feel free to reach out to me via Matrix and involve me in design reviews.

    • Pl chevron_right

      Hylke Bons: Icon for KawaiiFi

      news.movim.eu / PlanetGnome • 6 August 2026

    Icon for KawaiiFi

    Week 27

    This week's icon is for Zach Leytus 's project:
    KawaiiFi : "Wi-Fi scanner and analyzer"

    Check out all weekly app icons created so far in the gallery and follow my icon creation adventures as they happen (including sketches) on the Fediverse .

    Need icons?

    I love designing icons and am happy to contribute them free of charge when your project is Free and Open Source . Funded by community sponsors (every little helps!).

    • Pl chevron_right

      Hylke Bons: Icon for Lockpicker

      news.movim.eu / PlanetGnome • 5 August 2026

    Icon for Lockpicker

    Week 26

    This week's icon is for Sjoerd Stendahl 's project:
    Lockpicker : "Recover passwords from their hash"

    Check out all weekly app icons created so far in the gallery and follow my icon creation adventures as they happen (including sketches) on the Fediverse .

    Need icons?

    I love designing icons and am happy to contribute them free of charge when your project is Free and Open Source . Funded by community sponsors (every little helps!).

    • Pl chevron_right

      Richard Hughes: NVIDIA is now supporting the LVFS

      news.movim.eu / PlanetGnome • 4 August 2026

    I’m pleased to announce that NVIDIA is now supporting the LVFS as a premier sponsor .

    The rollout of the NVIDIA DGX Spark firmware using fwupd is going very well indeed, with downloads continuing to increase every day.

    This now takes us to 4 OEMs sponsoring LVFS, which means we’ve successfully reached the funding target we set for ourselves last year. More exciting announcements coming soon!

    • Pl chevron_right

      Felipe Borges: The Future of GNOME Boxes

      news.movim.eu / PlanetGnome • 3 August 2026 • 3 minutes

    GNOME Boxes new logo

    I have spent the last two years rebuilding GNOME Boxes from the ground up, driven by three main factors. I spoke extensively about this effort in my recent Linux App Summit , GUADEC 2025 and 2026 talks , but today I am excited to share the result for general testing.

    First, shifting to a Flatpak -first (and only) model. As a solo developer, maintaining code paths for countless distributions isn’t sustainable. Since Boxes acts as a frontend for libvirt/qemu, its functionality relies heavily on the backend configuration. Flatpak lets me bundle the entire virtualization stack, giving me the control I need to fine-tune it for our specific use cases.

    Second, migrating Boxes to GTK4 and Libadwaita. Beyond the obvious benefits (a modern UI, better responsiveness, and tighter desktop integration) this makes the codebase significantly easier to maintain. This transition required moving away from the GTK3-based SPICE display widget, which was too tightly coupled to older input and drawing methods. We’ve replaced it with Libmks , which has proven to be a solid alternative.

    Lastly, modernizing the codebase to make it sustainable for new contributors. That meant adopting modern GNOME app design patterns and rethinking our underlying architecture.

    I am now ready to share this work with a wider audience. However, please keep in mind that this is a Beta release meant for testing, not for production environments. If you plan to try it out, make sure to back up any important data in your virtual machines first.

    If you want to test this new implementation of GNOME Boxes, you can set up the GNOME Nightly Flatpak Repository and install it with:

    flatpak install org.gnome.Boxes.Devel

    This new version already covers most of what the classic Boxes could do: creating virtual machines from ISO media and disk images ( qcow2 ), configuring VM resources, sharing clipboard content, sending files to the guest, and more.

    It can install Windows 11 without any manual workarounds . Boxes configures Secure Boot and a virtual TPM device automatically. Everything required to pass the Windows 11 hardware compatibility checks out of the box. This was the most requested feature for the classic version, so I am particularly glad it is fully functional in this rewrite.

    Screenshot of the new GNOME Boxes running Windows 11

    As distributions shift toward image-based OSes, this Flatpak-only approach becomes even more valuable. Most other virtual machine managers rely on host services or privileged daemons that are difficult to configure on immutable systems. While hardware and host combinations vary, bundling the backend stack directly inside the Flatpak gives us a controlled baseline that we can actively support, configure, and refine over time.

    Accessing VM contents used to be tricky due to Flatpak sandboxing. This version addresses that by introducing a VSOCK device to the box, allowing guests with systemd v256 or newer to be accessed directly over SSH. It also adds initial support for port forwarding , letting you reach services running inside the VM from your host.

    Screenshot of a host terminal SSHing into the guest VM through VSOCK Screenshot of a host terminal SSHing into the guest VM through VSOCK

    All of this and more is detailed on our new website, nightly.gnomeboxes.org , where you can also learn how to help by testing and reporting issues.

    Please keep in mind that I am working on this in my free time alongside maintaining GNOME Settings and my day-job responsibilities at Red Hat. I ask for your patience with issue responses , but I will do my best to address bugs and keep pushing feature development forward as time allows.

    I love building GNOME Boxes, and I am constantly motivated by the positive feedback from our community. People appreciate Boxes because it lets them set up a VM quickly and get straight to work without needing deep knowledge of virtualization or operating system internals. That remains the core mission, and that is the user experience I want to continue building for.

    A lot of this implementation will still change as I gather feedback and it matures. I have also drafted a series of follow-up blog posts to this one, which will describe and elaborate a bit more on the new features, explaining how to use them and how they have been implemented. Stay tuned!

    Comments

    • Pl chevron_right

      Lucas Baudin: Visual Signatures in Papers (and Papers 51.beta)

      news.movim.eu / PlanetGnome • 2 August 2026 • 1 minute

    We just merged the visual signature UI into Papers (GNOME Document Viewer), developed by Malika Asman during her Outreachy internship (funded by the GNOME Foundation ).

    Compared to digital signatures, visual signatures do not require a cryptographic certificate. As such, they do not really guarantee the authenticity of a signed document, but they are still widely accepted or required (e.g. in administrative documents).

    Here are a few screenshots, the two first ones are context menus that are shown when doing a right click on the document, the third one shows the drawing dialog. Context menu to create a new signature Context menu to choose a signature Editing a signature

    It is possible to import an image file instead of drawing the signature in Papers. Malika implemented a background removal step so that signatures don't look like a plain picture on the document. This is done using the imageproc crate which implements Otsu's method (for those wondering, there is no neural networks or models involved). This gives good results on our test files, let's take for instance this cute GNOME contributor by Jakub : Initial image Once it is imported, the background is correctly removed and we can add this perplexed GNOME contributor to our PDFs: Importing an image

    Note that this is still a rather simple method, so we don't expect it to work in every case. If you have a file that can not be imported properly, please open an issue!

    And digital signatures?

    These new visual signatures cannot be used directly with digital signatures, but there are plans (and code) to extend the existing digital signature dialog to let users customize the way the signature is drawn on documents, including using one of the visual signatures.

    There are other features that did not make it into this release, including the ability to copy/paste visual signatures, those will be for the next cycle!

    Papers 51.beta

    This is part of Papers 51.beta, there are a few other improvements and bug fixes, including a fix for fractional scaling taking advantage of latest GTK snapping API, read the news here .

    • Pl chevron_right

      Ramayanapu Jagath: Bringing App Uninstallation to the GNOME Shell App Grid

      news.movim.eu / PlanetGnome • 1 August 2026 • 4 minutes

    Hey y’all! I’m Jagath Ramayanapu (Shyam) from India, and I’m a GNOME GSoC intern this year. This summer, I’m working on bringing app uninstallation directly to the GNOME Shell App Grid.

    Previously, to remove an app in GNOME, you had to open GNOME Software, find the app, and click Uninstall . With this feature, users will soon be able to uninstall apps directly from the App Grid’s context menu.

    This is the first of a two-part blog on how we are building this feature. In this post, we’ll cover the changes in GNOME Shell’s JavaScript that make it possible.

    The Problem: Talking to the App Store

    GNOME Shell is great at drawing your desktop, but it actually has no idea how to delete an app or clean up user data. To do that, it needs to ask a App Store like GNOME Software to do the heavy lifting.

    To solve this, we created a d-bus interface called AppStoreIntegration . You can think of it as a dedicated middleman whose only job is to talk to GNOME Software in the background.

    We designed this helper with a few key goals in mind:

    At first, I planned to have GNOME Software own this interface. However, that would have tightly coupled the feature to GNOME Software. Based on feedback from my mentor, Adrian Vovk , I moved the ownership of AppStoreIntegration into GNOME Shell instead.

    This design makes the interface app store agnostic. Any app store can implement the interface, allowing GNOME Shell to work with different app stores without depending on a specific one.

    This interface has two methods :

    1. GetUninstallableApps :
      • What it does: The Shell calls this method to ask GNOME Software, “Give me a list of every installed app that the user is actually allowed to uninstall.”
      • What it returns: It returns a dictionary that maps each app’s desktop ID to a set of metadata properties (for example, a boolean flag telling us if the app supports deleting personal data)

    2. UninstallApp :

      • What it does: When you click “Uninstall”, the Shell sends this command to GNOME Software.
      • What it accepts: It takes a dictionary containing the app’s id and a boolean purge-data flag (which tells GNOME Software whether it should wipe the user’s saved data along with the app).

    Building the Integration Manager

    Now that we had our D-Bus contract, we built a helper module in GNOME Shell called js/ui/appStoreIntegration.js Inside this file, we built a class called AppStoreIntegrationManager whose sole purpose is to call those two D-Bus methods.

    We designed this manager with a few key goals:

    • Keep the Desktop Fast : When the manager connects to the D-Bus proxy, it does it asynchronously. This means if GNOME Software takes a second to wake up, your desktop won’t freeze.
    • Cache the Data : We don’t want to call GetUninstallableApps every single time you right-click an icon. Instead, the manager listens for a signal called installed-changed from the system. When it hears this signal, it quietly fetches the list of apps and caches it in memory.
    • Track the State : The manager keeps a list ( set ) of apps that are currently being uninstalled. This gives our UI a simple way to know exactly what is going on at any given moment.

    Updating the App Menu

    Once we had the cached data, we needed to update the UI in js/ui/appMenu.js .

    We added a new “Uninstall” button to the right-click menu, but we had to be careful. We don’t want to show an “Uninstall” button for apps you aren’t allowed to remove (like core system apps).

    To fix this, we tied the menu directly to our new manager using reactive signals. Every time you open the menu, a function called _updateUninstallItem runs. It asks the manager: appStoreIntegrationManager.canUninstall(appId) . If the answer is false, the button completely hides itself.

    Handling the User Interaction

    Uninstalling an app isn’t always as simple as deleting a folder. Modern software, like Flatpaks, often leaves behind saved files and personal configurations. We wanted to give users the option to clean up this data, but only if the app store actually supports it.

    When you click Uninstall in the right-click menu, the UI triggers a smooth, step-by-step interactive flow:

    • Checking for User Data : First, the code checks the metadata we got from D-Bus earlier to see if the app store supports wiping personal data for this specific app.
    • The Confirmation Dialog : We pop up a small confirmation window. If the app supports it, this window includes a checkbox asking if you want to clean up your personal files too.
    • Waiting in the Background : The desktop interface pauses the uninstallation logic and waits patiently in the background for you to make a decision, ensuring your system remains completely responsive.
    • Executing the Uninstall : Once you confirm your choice, the UI fires off the D-Bus command to GNOME Software. It immediately adds the app to a tracking list to prevent you from accidentally clicking the uninstall button multiple times.
    • Safe Error Handling : If GNOME Software runs into an unexpected error and fails to uninstall the app, the interface safely catches the problem. It removes the app from the busy tracker and displays a standard system notification to let you know what happened, keeping your desktop totally stable.

    Thanks

    Building this feature was a fantastic learning experience in bridging different parts of the GNOME ecosystem. A huge thanks to Adrian for mentoring me throughout this project and helping me navigate the architecture.

    If you’d like to check out the changes, here’s my MR.