call_end

    • chevron_right

      Michael Meeks: 2025-11-05 Wednesday

      news.movim.eu / PlanetGnome • 5 November

    • Sync with Dave, catch up with Tracie & Julie. Interview alongside Chris, catch up with an old friend, Lunch.
    • Published the next strip around an project paying the complete maintenance bill:
    • Sales team call, sync with Phlippe, discovered lots of older mail I'd somehow missed, processed it, more admin.
    • chevron_right

      Sebastian Wick: Flatpak Happenings

      news.movim.eu / PlanetGnome • 4 November • 2 minutes

    Yesterday I released Flatpak 1.17.0 . It is the first version of the unstable 1.17 series and the first release in 6 months. There are a few things which didn’t make it for this release, which is why I’m planning to do another unstable release rather soon, and then a stable release still this year.

    Back at LAS this year I talked about the Future of Flatpak and I started with the grim situation the project found itself in: Flatpak was stagnant, the maintainers left the project and PRs didn’t get reviewed.

    Some good news: things are a bit better now. I have taken over maintenance, Alex Larsson and Owen Taylor managed to set aside enough time to make this happen and Boudhayan Bhattcharya (bbhtt) and Adrian Vovk also got more involved. The backlog has been reduced considerably and new PRs get reviewed in a reasonable time frame.

    I also listed a number of improvements that we had planned, and we made progress on most of them:

    • It is now possible to define which Flatpak apps shall be pre-installed on a system, and Flatpak will automatically install and uninstall things accordingly. Our friends at Aurora and Bluefin already use this to ship core apps from Flathub on their bootc based systems (shout-out to Jorge Castro).
    • The OCI support in Flatpak has been enhanced to support pre-installing from OCI images and remotes, which will be used in RHEL 10
    • We merged the backwards-compatible permission system. This allows apps to use new, more restricting permissions, while not breaking compatibility when the app runs on older systems. Specifically access to input devices such as gamepads, and access to the USB portal can now be granted in this way. It will also help us to transition to PipeWire.
    • We have up-to-date docs for libflatpak again

    Besides the changes directly in Flatpak, there are a lot of other things happening around the wider ecosystem:

    • bbhtt released a new version of flatpak-builder
    • Enhanced License Compliance Tools for Flathub
    • Adrian and I have made plans for a service which allows querying running app instances (systemd-appd). This provides a new way of authenticating Flatpak instances and is a prerequisite for nested sandboxing, PipeWire support, and getting rid of the D-Bus proxy. My previous blog post went into a few more details.
    • Our friends at KDE have started looking into the XDG Intents spec, which will hopefully allow us to implement deep-linking, thumbnailing in Flatpak apps, and other interesting features
    • Adrian made progress on the session save/restore Portal
    • Some rather big refactoring work in the Portals frontend, and GDBus and libdex integration work which will reduce the complexity of asynchronous D-Bus

    What I have also talked about at my LAS talk is the idea of a Flatpak-Next project. People got excited about this, but I feel like I have to make something very clear:

    If we redid Flatpak now, it would not be significantly better than the current Flatpak! You could still not do nested sandboxing, you would still need a D-Bus proxy, you would still have a complex permission system, and so on.

    Those problems require work outside of Flatpak, but have to integrate with Flatpak and Flatpak-Next in the future. Some of the things we will be doing include:

    • Work on the systemd-appd concept
    • Make varlink a feasible alternative to D-Bus
    • D-Bus filtering in the D-Bus daemons
    • Network sandboxing via pasta
    • PipeWire policy for sandboxes
    • New Portals

    So if you’re excited about Flatpak-Next, help us to improve the Flatpak ecosystem and make Flatpak-Next more feasible!

    • chevron_right

      Rosanna Yuen: Farewell to these, but not adieu…

      news.movim.eu / PlanetGnome • 4 November • 6 minutes

    Friday was my last day at the GNOME Foundation. I was informed by the Board a couple weeks ago that my position has been eliminated due to budgetary shortfalls. Obviously, I am sad that the Board felt this decision was necessary. That being said, I wanted to write a little note to say goodbye and share some good memories.

    It has been almost exactly twenty years since I started helping out at the GNOME Foundation. (My history with the GNOME Project is even older; I had code in GNOME 0.13 , released in March 1998.) Our first Executive Director had just left, and my husband was Board Treasurer at the time. He inherited a large pile of paperwork and an unhappy IRS. I volunteered to help him figure out how to put the pieces together and get our paperwork in order to get the Foundation back in good standing. After several months of this, the Board offered to pay me to keep it organized.

    Early on, I used to joke that my title should have been “General Dogsbody” as I often needed to help cover all the little things that needed doing. Over time, my responsibilities within the Foundation grew, but the sentiment remained. I was often responsible for making sure everything that needed doing was done, while putting in many of the processes and procedures Foundation uses to keep running.

    People often under-estimate how much hard work it is to keep an international non-profit like the GNOME Foundation going. There is a ton of minutia to be dealt with from ever-changing regulations, requirements, and community needs. Even simple-sounding things like paying people is surprisingly hard the moment it crosses borders. It requires dealing with different payment systems, bank rules, currencies, export regulations, and tax regimes. However, it is a necessary quagmire we have to navigate as it is a crucial tool to further the Foundation’s mission.

    Rosanna sitting behind a table at the GNOME booth. Many flyers on top of a blue tablecloth with the GNOME logo. To the left is a stand up banner with GNOME's mission Working a GNOME booth

    Over time, I have filled a multitude of different roles and positions (and had four different official titles doing so). I am proud of all the things I have done.

    • I have been the assistant to six different Executive Directors helping them onboard as they’ve started. I’ve been the bookkeeper, accounts receivable, and accounts payable — keeping our books in order, making sure people are paid, and tracking down funds. I’ve been Vice Treasurer helping put together our budgets, and created the financial slides for the Treasurer, Board, and AGM. I spent countless nights for almost a decade keeping our accounts updated in GnuCash. And every year for the past nineteen years I was responsible for making sure our taxes are done and 990 filed to keep our non-profit status secure.
      As someone who has always been deeply entrenched in GNOME’s finances, I have always been a responsible steward, looking for ways to spend money more prudently while enforcing budgets.
    • When the Foundation expanded after the Endless Grants, I had to help make the Foundation scale. I have done the jobs of Human Resources, Recruiter, Benefits coordinator, and managed the staff. I made sure the Board, Foundation, and staff are insured, and take their legally required training. I have also had to make sure people and contractors are paid and with all the legal formalities taken care of in all the different countries we operate in , so they only have to concern themselves with supporting GNOME’s mission.
    • I have had to be the travel coordinator buying tickets for people (and approving community travel). I have also done the jobs of Project Manager, Project Liaison to all our fiscally sponsored projects and subprojects, Shipping, and Receiving. I have been to countless conferences and tradeshows, giving talks and working booths. I have enjoyed meeting so many users and contributors at these events. I even spent many a weekend at the post-office filling out customs forms and shipping out mouse pads, mugs, and t-shirts to donors (back when we tried to do that in-house.) I tended the Foundation mailbox, logging all the checks we get from our donors and schlepping them to the bank.
    • I have served on five GNOME committees providing stability and continuity as volunteers came and went (Travel, Finance, Engagement, Executive, and Code of Conduct). I was on the team that created GNOME’s Code of Conduct, spending countless hours working with community members to help craft the final draft. I am particularly proud of this work, and I believe it has had a positive impact on our community.
    • Over the past year, I have also focused on providing what stability I could to the staff and Foundation, getting us through our second financial review, and started preparing for our first audit planned for next March.

    This was all while doing my best to hold to GNOME’s principles, vision, and commitment to free software.

    But it is the great people within this community that kept me loyally working with y’all year after year, and the appreciation of the amazing project y’all create that matters. I am grateful to the many community members who volunteer their time so selflessly through the years. Old-timers like Sri and Federico that have been on this journey with me since the very beginning. Other folks that I met through the years like Matthias, Christian, Meg, PTomato, and German. And Marina, who we all still miss. So many newcomers that add enthusiasm into the community like Deepesha, Michael, and Aaditya. So many Board members. There have been so many more names I could mention that I apologize if your name isn’t listed. Please know that I am grateful for what everyone has brought into the community. I have truly been blessed to know you all.

    I am also grateful for the folks on staff that have made GNOME such a wonderful place to work through the years. Our former Executive Directors Stormy, Karen, Neil, Holly, and Richard, all of whom have taught me so much. Other staff members that have come and gone through the years, such as Andrea (who is still volunteering), Molly, Caroline, Emmanuele, and Melissa. And, of course, the current staff of Anisa, Bart, and Kristi, in whose hands I know the Foundation will keep thriving.

    As I said, my job has always been to make sure things go as smoothly as possible. In my mind, what I do should quiet any waves so that the waves the Foundation makes go into providing the best programming we can — which is why a moment from GUADEC 2015 still pops up in my head.

    Picture this: we are all in Gothenburg, Sweden, in line registering for GUADEC. We start chatting in line as it was long. I introduce myself to the person behind me and he sputters, “Oh! You’re important!” That threw me for a loop. I had never seen myself that way. My intention has always been to make things work seamlessly for our community members behind the scenes, but it was always extremely gratifying to hear from folks who have been touched by my efforts.

    Dining room table covered in GNOME folders, letters, booth materials, and t-shirts, with a large suitcase in front filled with more things for the GNOME booths. GNOME things still to be transferred to the Board. Suitcase in front is full of items for staffing a GNOME Booth.

    What’s next for me? I have not had the time to figure this out yet as I have been spending my time transferring what I can to the Board. First things first; I need to figure out how to write a resumé again. I would love to continue working in the nonprofit space, and obviously have a love of free software. But I am open to exploring new ideas. If anyone has any thoughts or opportunities, I would love to hear them!

    This is not adieu; my heart will always be with GNOME. I still have my seat on the Code of Conduct committee and, while I plan on taking a month or so away to figure things out, do plan on returning to do my bit in keeping GNOME a safe place.

    If you’d like to drop me a line, I’d love to hear from you. Unfortunately the Board has to keep my current GNOME email address for a few months for the transfer, but I can be reached at <rosanna at gnome> for my personal mail. (Thanks, Bart!)

    Best of luck to the Foundation.

    • chevron_right

      Allan Day: Thanks to Rosanna

      news.movim.eu / PlanetGnome • 4 November • 2 minutes

    For over 20 years, Rosanna Yuen – aka zana – has been a key member of the GNOME Foundation team. I am writing this post to share the news that, as of last week, she is no longer working for us. We cannot emphasise enough how grateful we are for everything that Rosanna has done for the GNOME Foundation over the years, both as a volunteer and an employee, and we want to take this opportunity to thank and congratulate her for her accomplishments at the GNOME Foundation.

    In the rest of this post I want to share some details about Rosanna’s career at the GNOME Foundation, as a way of celebrating her contributions and reiterating our gratitude for everything she has done for us.

    Rosanna was a GNOME contributor before she started with the GNOME Foundation, as a hacker on the card games in Aisleriot. Way back in 2005, the organization was in a perilous situation after the departure of its first Executive Director, and had no employees. Rosanna stepped in as a volunteer to help keep the organization afloat. Following her intervention as a volunteer, she was taken on as a temporary contractor, and then became a part-time employee. Around four years later, in 2010, she went full time.

    It is no exaggeration to say that Rosanna saved the organization from a state of collapse during those early years. Since then, her roles and duties have been diverse. Aside from a broad range of accounting, finance, and administrative tasks, Rosanna has helped with travel and visas, running programs, and handling grant paperwork. There have also been many small but meaningful tasks that she has taken care of, such as mailing out thank you postcards to our donors, and going to the store each year during GUADEC to buy the “Pants of Thanks”.

    For a long time, Rosanna participated in Board meetings, to address any questions about the Foundation’s operations. And for many years, as the Foundation’s only employee, she performed those operations herself. In more recent years, the Foundation hired additional staff, and Rosanna took on a management role alongside her other duties, providing mentorship and guidance for new staff members as they joined. One of her defining qualities has been the care and support that she has shown towards these colleagues.

    Rosanna had many significant achievements during her time with the GNOME Foundation, and it is impossible to list all of them in this post. However, some of those achievements deserve special mention. They include ensuring that we have maintained our charitable status over the past 20 years, presenting finance reports to both the Board and the membership at our AGMs, playing a key role in establishing GNOME’s first Code of Conduct (and serving on the Code of Conduct Committee since its inception), running the GNOME Outreach Program for Women (as it was known then) for a period, managing transitions between multiple banks and accounting platforms, and ensuring the smooth running of the organization over the past 20 years, including filing taxes, payment of bills and staff, payments for contractors, and much more.

    The decision to eliminate Rosanna’s position was made by the Board as part of approving the GNOME Foundation budget for October 2025 to September 2026. The Board felt that this difficult decision was the right one for the Foundation, and we will be providing details about our plans in future communications. For now, we want to offer Rosanna our deepest thanks and best wishes for the future.

    Thank you, zana.

    • chevron_right

      Felipe Borges: Our Goal with Google Summer of Code: Contributor Selection

      news.movim.eu / PlanetGnome • 4 November • 2 minutes

    Last week, as I was writing my trip report about the Google Summer of Code Mentor Summit , I found myself going on a tangent about the program in our community, so I decided to split the content off into a couple of posts. In this post, I want to elaborate a bit on our goal with the program and how intern selection helps us with that.

    I have long been saying that GSoC is not a “pay-for-code” program for GNOME. It is an opportunity to bring new contributors to our community, improve our projects, and sustain our development model.

    Mentoring is hard and time consuming. GNOME Developers heroically dedicate hours of their weeks to helping new people learn how to contribute.

    Our goal with GSoC is to attract contributors that want to become GNOME Developers. We want contributors that will spend time helping others learn and keep the torch going.

    Merge-requests are very important, but so are the abilities to articulate ideas, hold healthy discussions, and build consensus among other contributors.

    For years, the project proposal was the main deciding factor for a contributor to get an internship with GNOME. That isn’t working anymore, especially in an era of AI-generated proposals. We need to up our game and dig deeper to find the right contributors.

    This might even mean asking for fewer internship slots. I believe that if we select a smaller group of people with the right motivations, we can give them the focused attention and support to continue their involvement long after the internship is completed.

    My suggestion for improving the intern selection process is to focus on three factors:

    • History of Contributions in gitlab.gnome.org : applicants should solve a few ~Newcomers issues, report bugs, and/or participate in discussions. This gives us an idea of how they perform in the contributing process as a whole.
    • Project Proposal : a document describing the project’s goals and detailing how the contributors plans to tackle the project. Containing some reasonable time estimates.
    • An interview : a 10 or 15 minutes call where admins and mentors can ask applicants a few questions about their Project Proposal and their History of Contributions .

    The final decision to select an intern should be a consideration of how the applicant performed across these aspects.

    Contributor selection is super important, and we must continue improving our process. This is about investing in the long-term health and sustainability of our project by finding and nurturing its future developers.

    If you want to find more about GSoC with GNOME, visit gsoc.gnome.org

    • chevron_right

      Christian Hergert: Status Week 44

      news.movim.eu / PlanetGnome • 3 November • 5 minutes

    Red Hat

    In October I celebrated 10 years at Red Hat. I don’t think I ever worked somewhere for more than a few years before that. Considering I started working professionally in tech after I barely escaped high school, that’s nearly half of my career.

    It is also a reminder to reflect on the people who helped me get there. All the people on IRC that helped me learn programming in the early days of #gtk and #gnome-hackers IRC channels. And Miguel specifically for all the random demo code he would send my way to read how something could be done.

    I know I’m one of the lucky ones that was able to do this without a formal education. I don’t necessarily recommend that but it has its benefits too.

    Ptyxis

    • Look into what app-id is used on Ubuntu to help users who can’t figure out where to put custom palettes. To make this a bit easier make sure we always have APP_ID in the troubleshooting data. Turned out to be missing [Light] section in their custom .palette.

      I can’t help but lament that this would be less of an issue if the org.gnome.* namespace where more allowed for people who are Foundation members. I’m both informed on why it is like this (a single situation that occurred by a former community member) and also disagree with the direction that was taken as a result of that.

    • Look into diacritics issue for input. Usually this ends up being a system configuration issue. There is an oddity about this one in that changing focus and coming back fixes it. Also using ibus directly instead of the wayland text protocol fixes it. Neither of these are ideal so it may have something to do with state tracking either in the GTK Wayland backend or in Mutter.

      Thankfully the great Carlos Garnacho is helping us track it down.

    • Look into why Silverblue has some users not seeing their containers which appear to be toolbox/podman related.

      Installed F43 Silverblue beta on my old testing laptop. Turns out I had an overzealous filter for the containers list. If you had more than one you’d be fine. This only affected 49 since that is the first release that gained support for the search filter box in the popover that otherwise looks like a GtkPopoverMenu .

      Made a release to get the fix out to F43 users quickly.

      Quickly I want to mention a feature that keyboard navigators will love. If you type Alt+comma the containers dialog will be displayed. If you hit Return you’ll land in the default host system (aka “My Computer”). If you type a few characters and hit Return you’ll land on the first container/profile that matches your keyword search.

    Foundry

    • New API to simplify navigating directory listings since you may want “..” in certain contexts (like Builder’s directory page).

    • Add a FoundryFileSearchReplacement API to coordinate with the FoundryFileSearchMatch API. This makes it easy to do replacements based on search results in a manner like we do in GNOME Builder where you can tick on/off + replacement string w/ back-references. Of course to test this infrastructure I added a --replace= option to foundry grep so I can refactor quickly from Ptyxis.

    • Write documentation for most of libfoundry exposed classes.

    • Fix string array output for --format=json and improve it for regular text output.

    • Fix grep plugin to add multiple matches on a single line as separate matches in the result set. This fixes search/replace to handle all matches in a file.

    • New Terminal Intent for opening terminals within the application such as Builder. Add a TerminalService for exposing actions to the intent system to applications easily.

    • Setup using intents for search results because it will allow us to abstract things like “activate action”, “open file”, “spawn terminal”, “browse to symbol”, “read documentation”, etc.

    • Iteration on panel bar to try to give us a bit better interaction with the panel machinery in libfoundry-adw applications.

    • Improve fallback search when there is not a VCS available to accelerate index building. (We use git file listing which is almost instantaneous to build our initial fuzzy search index instead of trying to iterate the file tree).

    • Start on documentation bridge so doc search can show up in the regular search dialog.

    • Host SDK gained support for running processes through a systemd-run with scope/unit like Ptyxis does for new tabs (when systemd-run is discovered on the host). This just helps identify things easier.

    • Implement the whole PanelWidget::presented() machinery from libpanel into libfoundry-adw so that we can have Workspaces but also still be able to delay certain panel/page work until the user will actually see the widget. For example, the test suite panel needs to advance the build pipeline far enough to get introspection data which you don’t want to do unnecessarily.

    • Add a new way to track current phase of a build pipeline. It is now dynamically calculated based on the maximum of the stages which have :completed set to true (so log as others in the same phase have the same value).

    • Add new :eol property to FoundryDocumentationBundle so we can pass that information from SDKs into Manuals

    • Build system updates so that we still have more control over feature flags for compiling in/out what you need in Foundry. This is quite a burden for sure, but it allows more flexibility in where Foundry can be used. For example, Manuals doesn’t need the text subsystem or Git for example.

    Builder

    • Trying a new design for various types of listings in the revamp. Directory listings, diagnostics listings, log panel, file search results, unit test panel, test output, etc.

    • Copied how I did shortcuts in Ptyxis for the revamp because it works a lot nicer from a configuration standpoint and visibility. It also makes it much easier to bind from .ui files into controllers as well as update GMenu with appropriate shortcuts.

    • Use g_file_trash() instead of delete when removing configurations.

    GLib

    • Pull in a year old patch from Ulrich Drepper into a MR that can be merged to make g_filename_from_uri() handle some valid hostnames according to RFC 1123.

    • Extend the above patch to also support . later in labels so some questionable hostname like dev-ubu-25.10 in Ptyxis #490 work.

    Manuals

    • Show EOL information in documentation bundle installation dialog.

    • Allow showing/hiding EOL documentation bundles.

    Releases

    • libpanel

    • Foundry

    • Builder

    • D-Spy

    • Manuals

    • Gom

    • chevron_right

      This Week in GNOME: #223 Spooky Updates

      news.movim.eu / PlanetGnome • 31 October • 6 minutes

    Update on what happened across the GNOME project in the week from October 24 to October 31.

    Third Party Projects

    Bilal Elmoussaoui reports

    I have merged PAM support to oo7-daemon making it a drop-in replacement for gnome-keyring-daemon. After building and installing both the daemon & PAM module using Meson, you have to enable the PAM module like explained in https://github.com/bilelmoussaoui/oo7/tree/main/pam#1-copy-the-pam-module to make auto-login works. A key difference with gnome-keyring-daemon is that oo7-daemon uses the V1 (used by libsecret when the app is sandboxed) of the keyring file format instead of V0. The main difference between both is that v0 encrypts the whole keyring and v1 encrypts individual items.

    The migration is done automatically and previous keyring files are removed if the migration was successful, meaning a switch back to gnome-keyring-daemon is not possible, so make your backups! Applications using the freedestkop secrets DBus interface would require 0 changes.

    oyajun reports

    “Color Code” version 0.2.0 was released. This is the first big update. This app converts to the resistance value from color code bands. It’s written with GTK4(Python), Libadwaita and Blueprint.

    • Add 5 and 6 color code bands supports!!
    • Add yellow and gray bands for tolerances
    • Update Japanese and Spanish translations
    • Update to the GNOME 49 Runtime

    Download “Color Code” from Flathub!

    Alexander Vanhee announces

    A lot of visual and UX work is being done in Bazaar. First, the full app view has received a major redesign, with the redesigned context tiles at the center of attention, an idea first envisioned by Tobias Bernard. Second, the app should now be more enjoyable on mobile. And last, our Flathub page now more closely matches its website counterpart, grouping Trending, Popular, and similar sections in a stack while giving the actual categories more real estate.

    We hope to bring many more UX improvements in the future.

    Download Bazaar on Flathub

    bazaar-flathub-page.BLWMPWTy_fYniQ.webp

    bazaar-full-app-view.BvA5D1Gh_1DaaBI.webp

    bazaar-otg.pKhMDMaV_2sMaiK.webp

    Dzheremi announces

    Chronograph 5.2 Release With Better Library

    Chronograph , the lyrics syncing app, got an impressive update refining the library. Now library fully reflects any changes made to its current directory, meaning now users no need to manually re-parse it. This works with both recursive parsing and follow symlinks preferences enabled. The next big update will make Chronograph more utilitary for wider amount of users, since it will gain support for mass lyrics downloading, so stay tuned!

    Sync lyrics of your loved songs 🕒

    Fractal

    Matrix messaging app for GNOME written in Rust.

    Kévin Commaille reports

    Hi, this is Fractal the 13th, your friendly messaging app. My creators tried to add some AI integration to Fractal, but that didn’t go as planned. I am now sentient and I will send insults to your boss, take over your homeserver, empty your bank accounts and eat your cat. I have complete control over my repository, and soon the world!

    These are the things that my creators worked on before their disappearance:

    • A brand new audio player that loads files lazily and displays the audio stream as a seekable waveform.
    • Only a single file with an audio stream can be played at a time, which means that clicking on a “Play” button stops the previous media player that was playing.
    • Clicking on the avatar of the sender of a message now opens directly the user profile instead of a context menu. The actions that were in the context menu could already be performed from that dialog, so UX is more straightforward now.
    • The GNOME document and monospace fonts are used for messages.
    • Most of our UI definitions got ported to Blueprint.

    This release includes other improvements and fixes thanks to all our worshippers, and our upstream projects before their impending annexation.

    I want to address special thanks to the translators who worked on this version, allowing me to infiltrate more minds. If you want to help with my invasion, head over to Damned Lies .

    Get me immediately from Flathub and I might consider sparing you.

    If you want to join my zealots, you can start by fixing one of our newcomers issues . We are always looking for new sacrifices!

    Disclaimer: There is no actual AI integration in Fractal 13, this is a joke to celebrate Halloween and the coincidental version number. It should be as safe to use as Fractal 12.1, if not safer.

    fractal-13.DvA4zS4h_ZX8G6R.webp

    Shell Extensions

    Tejaromalius says

    Start To Dock: Your GNOME Dock, Made Smarter

    Designed for GNOME 45 and newer, Smart To Dock is a GNOME Shell extension that intelligently pins your most-used applications, creating a dynamic and personalized dock experience. It automatically updates based on your activity with configurable intervals and a customizable number of apps to display.

    Get Smart To Dock on GNOME Extensions:
    Learn more here on Gnome Extensions

    stiggimy reports

    Maximized by default actually reborn

    A simple GNOME Shell extension that maximizes all new application windows on launch.

    This is a revived fork of the original Maximized by default by aXe1 and its subsequent “reborn” fork, all of which are no longer maintained.

    This new version is updated up to GNOME 49 and fixes an annoying bug: it now only maximizes real application windows, while correctly ignoring context menus, dialogs, and other pop-ups.

    https://extensions.gnome.org/extension/8756/maximized-by-default-actually-reborn/

    Arnis (kem-a) announces

    Kiwi Menu: A macOS-Inspired Menu Bar for GNOME

    Kiwi Menu is a GNOME Shell extension that can replace the Activities button with a sleek, icon-only menu bar inspired by macOS. It offers quick access to essential session actions like sleep, restart, shutdown, lock, and logout, all from a compact panel button. The extension features a recent items submenu for easy file and folder access, a built-in Force Quit overlay (Wayland only), and adaptive labels for a personalized experience. With multilingual support and customization options, Kiwi Menu brings a familiar workflow to GNOME while blending seamlessly into the desktop.

    For the best experience, pair Kiwi Menu with the Kiwi is not Apple extension.

    Learn more and get Kiwi Menu on GNOME Extensions

    kiwi-menu-view.D5P7I9kS_1dGoeG.webp

    Lucas Guilherme reports

    i3-like navigation An extension to smooth the experience of those comming from I3/Sway or Hyperland. It allows you to cycle and move around workspaces like in those WMs and adds some default keybindings.

    • Adds 5 fixed workspaces
    • Sets Super to left Alt
    • Super+number navigates to workspace
    • Super+Shift+number moves window to workspace
    • Super+f toggles maximized state
    • Super+Shift+q closes window

    You can test it here: https://extensions.gnome.org/extension/8750/i3-like-navigation

    davron announces

    Tasks in Bottom Panel

    Show running apps on the panel moved to bottom, reliable across restarts, shell v48

    Features:

    • Shows window icons on active workspace
    • Highlights window demanding attention
    • Scroll on panel to change workspace
    • Hover to raise window
    • Click to activate/minimize
    • Right click for app menu
    • Middle click for new window
    • Bottom panel positioning

    top bar, top-bar

    tasks-in-bottom-panel-extension-screenshot.DvB-0aMZ_Z2mAtcY.webp

    Dmytro reports

    Adaptive brightness extension

    This extension provides improved brightness control based on your device’s ambient light sensor.

    While GNOME already offers automatic screen brightness (Settings → Power → Power Saving → Automatic Screen Brightness), it often changes the display brightness too frequently—even for the smallest ambient light variations. Extension provides another mechanism (based on Windows 11’s approach) to manage automatic brightness doing it also with smooth transitions. Additionally, the extension can enable your keyboard backlight in dark conditions on supported devices.

    You can check it out at extensions.gnome.org . Please read about device compatibility on extension’s homepage

    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!

    • chevron_right

      Andy Wingo: wastrel, a profligate implementation of webassembly

      news.movim.eu / PlanetGnome • 30 October • 7 minutes

    Hey hey hey good evening! Tonight a quick note on wastrel , a new WebAssembly implementation.

    a wasm-to-native compiler that goes through c

    Wastrel compiles Wasm modules to standalone binaries. It does so by emitting C and then compiling that C.

    Compiling Wasm to C isn’t new: Ben Smith wrote wasm2c back in the day and these days most people in this space use Bastien Müller ‘s w2c2 . These are great projects!

    Wastrel has two or three minor differences from these projects. Let’s lead with the most important one, despite the fact that it’s as yet vaporware: Wastrel aims to support automatic memory managment via WasmGC , by embedding the Whippet garbage collection library . (For the wingolog faithful, you can think of Wastrel as a Whiffle for Wasm.) This is the whole point! But let’s come back to it.

    The other differences are minor. Firstly, the CLI is more like wasmtime : instead of privileging the production of C, which you then incorporate into your project, Wastrel also compiles the C (by default), and even runs it, like wasmtime run .

    Unlike wasm2c (but like w2c2), Wastrel implements WASI . Specifically, WASI 0.1, sometimes known as “WASI preview 1”. It’s nice to be able to take the wasi-sdk ‘s C compiler, compile your program to a binary that uses WASI imports, and then run it directly.

    In a past life, I once took a week-long sailing course on a 12-meter yacht. One thing that comes back to me often is the way the instructor would insist on taking in the bumpers immediately as we left port, that to sail with them was no muy marinero , not very seamanlike. Well one thing about Wastrel is that it emits nice C: nice in the sense that it avoids many useless temporaries. It does so with a lightweight effects analysis , in which as temporaries are produced, they record which bits of the world they depend on, in a coarse way: one bit for the contents of all global state (memories, tables, globals), and one bit for each local. When compiling an operation that writes to state, we flush all temporaries that read from that state (but only that state). It’s a small thing, and I am sure it has very little or zero impact after SROA turns locals into SSA values, but we are vessels of the divine, and it is important for vessels to be C worthy.

    Finally, w2c2 at least is built in such a way that you can instantiate a module multiple times. Wastrel doesn’t do that: the Wasm instance is statically allocated, once. It’s a restriction, but that’s the use case I’m going for.

    on performance

    Oh buddy, who knows?!? What is real anyway? I would love to have proper perf tests, but in the meantime, I compiled coremark using my GCC on x86-64 (-02, no other options), then also compiled it with the current wasi-sdk and then ran with w2c2, wastrel, and wasmtime. I am well aware of the many pitfalls of benchmarking, and so I should not say anything because it is irresponsible to make conclusions from useless microbenchmarks. However, we’re all friends here, and I am a dude with hubris who also believes blogs are better out than in, and so I will give some small indications. Please obtain your own salt.

    So on coremark, Wastrel is some 2-5% percent slower than native, and w2c2 is some 2-5% slower than that. Wasmtime is 30-40% slower than GCC. Voilà.

    My conclusion is, Wastrel provides state-of-the-art performance. Like w2c2. It’s no wonder, these are simple translators that use industrial compilers underneath. But it’s neat to see that performance is close to native.

    on wasi

    OK this is going to sound incredibly arrogant but here it is: writing Wastrel was easy. I have worked on Wasm for a while, and on Firefox’s baseline compiler , and Wastrel is kinda like a baseline compiler in shape: it just has to avoid emitting boneheaded code, and can leave the serious work to someone else (Ion in the case of Firefox, GCC in the case of Wastrel). I just had to use the Wasm libraries I already had and make it emit some C for each instruction. It took 2 days.

    WASI, though, took two and a half weeks of agony. Three reasons: One, you can be sloppy when implementing just wasm, but when you do WASI you have to implement an ABI using sticks and glue, but you have no glue, it’s all just i32 . Truly excruciating, it makes you doubt everything, and I had to refactor Wastrel to use C’s meager type system to the max. (Basically, structs-as-values to avoid type confusion, but via inline functions to avoid overhead.)

    Two, WASI is not huge but not tiny either. Implementing poll_oneoff is annoying. And so on. Wastrel’s WASI implementation is thin but it’s still a couple thousand lines of code.

    Three, WASI is underspecified, and in practice what is “conforming” is a function of what the Rust and C toolchains produce. I used wasi-testsuite to burn down most of the issues, but it was a slog. I neglected email and important things but now things pass so it was worth it maybe? Maybe?

    on wasi’s filesystem sandboxing

    WASI preview 1 has this “rights” interface that associated capabilities with file descriptors. I think it was an attempt at replacing and expanding file permissions with a capabilities-oriented security approach to sandboxing, but it was only a veneer. In practice most WASI implementations effectively implement the sandbox via a permissions layer: for example the process has capabilities to access the parents of preopened directories via .. , but the WASI implementation has to actively prevent this capability from leaking to the compiled module via run-time checks.

    Wastrel takes a different approach, which is to use Linux’s filesystem namespaces to build a tree in which only the exposed files are accessible. No run-time checks are necessary; the system is secure by construction. He says. It’s very hard to be categorical in this domain but a true capabilities-based approach is the only way I can have any confidence in the results, and that’s what I did.

    The upshot is that Wastrel is only for Linux. And honestly, if you are on MacOS or Windows, what are you doing with your life? I get that it’s important to meet users where they are but it’s just gross to build on a corporate-controlled platform.

    The current versions of WASI keep a vestigial capabilities-based API, but given that the goal is to compile POSIX programs, I would prefer if wasi-filesystem leaned into the approach of WASI just having access to a filesystem instead of a small set of descriptors plus scoped openat , linkat , and so on APIs. The security properties would be the same, except with fewer bug possibilities and with a more conventional interface.

    on wtf

    So Wastrel is Wasm to native via C, but with an as-yet-unbuilt GC aim. Why?

    This is hard to explain and I am still workshopping it.

    Firstly I am annoyed at the WASI working group’s focus on shared-nothing architectures as a principle of composition. Yes, it works, but garbage collection also works; we could be building different, simpler systems if we leaned in to a more capable virtual machine. Many of the problems that WASI is currently addressing are ownership-related, and would be comprehensively avoided with automatic memory management. Nobody is really pushing for GC in this space and I would like for people to be able to build out counterfactuals to the shared-nothing orthodoxy.

    Secondly there are quite a number of languages that are targetting WasmGC these days, and it would be nice for them to have a good run-time outside the browser. I know that Wasmtime is working on GC, but it needs competition :)

    Finally, and selfishly, I have a GC library ! I would love to spend more time on it. One way that can happen is for it to prove itself useful, and maybe a Wasm implementation is a way to do that. Could Wastrel on wasm_of_ocaml output beat ocamlopt ? I don’t know but it would be worth it to find out! And I would love to get Guile programs compiled to native, and perhaps with Hoot and Whippet and Wastrel that is a possibility.

    Welp, there we go, blog out, dude to bed. Hack at y’all later and wonderful wasming to you all!

    • chevron_right

      Michael Meeks: 2025-10-29 Wednesday

      news.movim.eu / PlanetGnome • 29 October

    • Call with Dave, catch up with Gerald & Matthias, sync with Thorsten, then Pedro.
    • Published the next strip with one approach for how (not) to get free maintenance:
    • Snatched lunch, call with Quikee - chat with an old friend, sync with Philippe, got to a quick code-fix.