• Pl chevron_right

      Michael Calabrese: Hello Planet GNOME! | GSoC 2026 Introduction

      news.movim.eu / PlanetGnome • 13 May 2026 • 1 minute

    Hello everyone, I'm Michael, and I am excited to be contributing to the GNOME foundation as a part of Google Summer of Code 2026.

    A bit about me

    I am a Computer Engineering student and long time Linux user. GNOME has been my desktop environment for years and I was very excited to be working with the GNOME foundation.

    I have a fairly significant amount of custom tooling that was all in Python and Bash, and about 16 months ago I began rewriting it in Rust, primarily to learn, however the performance and reliability improvements were quite noticeable. This led me to rewrite all of my scripts and tools in Rust. That experience put me in a great position to tackle the Rust rewrite of the Pitivi timeline ruler.

    The Summer Project

    The plan of attack with this project is first to create a standalone GTK4 Timeline Ruler widget in Rust, then modify Pitivi to use the new ruler via PyGObject .

    I am currently building a basic test binary, which can be found at Project . This will be used to test the functionality of the widget and to ensure that it is working correctly before integrating it into Pitivi.

    I am very excited to be working on this project and I look forward to sharing my progress with the community. I hope to learn a lot and contribute something meaningful to the GNOME ecosystem.

    • Pl chevron_right

      Nick Richards: Agile Rates After Launch

      news.movim.eu / PlanetGnome • 11 May 2026 • 3 minutes

    Last summer I wrote up Octopus Agile Prices For Linux , a small GTK app to show the current Octopus Agile electricity price and the next day of half-hourly rates. It did one thing, which is a good number of things for a desktop utility to do.

    Since then the app has become a bit less narrow. But it now does enough more that the launch post undersells it, and in a couple of places sends people looking for the wrong name.

    The app is now called Agile Rates . The application ID is still com.nedrichards.octopusagile , because changing stable app IDs is not exciting for anyone, but the name changed because Agile is no longer the whole story. Thanks to code from Andy Piper, it can also work with Octopus Go and Intelligent Go tariffs. Intelligent Go needs an API key because those prices are account-specific, but plain Agile and Go can still be set up manually.

    That was the first larger change: setup had to become a thing.

    The original app assumed you knew your tariff and region, or at least were willing to rummage in preferences until the graph stopped being wrong. That is fine for a scratch-your-own-itch project and a bit rude for an app on Flathub. The current version opens with a setup assistant. You can connect an Octopus account with an API key and account number, in which case the app tries to detect the active electricity tariff. Or you can keep it simple and choose the tariff and region manually.

    The second change is the one I actually use most: finding the cheapest slot.

    The launch version showed a graph and left the planning to the human. That works for quick glances, but most of my real questions are more specific:

    When should the dishwasher run?
    When should the washing machine run?
    Is there a cheap three-hour block before tomorrow afternoon?
    

    So there is now a “find cheapest time” tool. Pick a duration and it searches the available forecast window for the cheapest continuous block. Later I added the average price for that block as well, because total cost is useful but average unit price is how my brain checks whether the answer feels plausible. The chart now scrolls to the chosen time instead of making you squint along the bars like you are reading a very dull railway timetable.

    The graph itself has had a lot of quiet work. It has grid lines, clearer day boundaries, better current-price highlighting, less terrible dark-mode contrast, and layout rules that behave on narrower screens. The preferences window and main window are adaptive now too. Handy if you split your screen or have a Linux phone.

    The biggest recent addition is usage history. If you connect an account, the app can fetch recent smart meter consumption data, cache it locally, and show a Usage view. That includes kWh history, a seven-day trend, an estimated monthly usage figure, and charts. It also tries to estimate spend by matching historical usage to tariff rates and standing charges.

    The app can only calculate what the API and the cached data allow it to calculate. It fetches consumption pages, works out the relevant tariff periods from the account data, then looks up historical unit rates and standing charges. When it has complete data it says so. When it has to fall back to averages it says that too. I would rather the app be slightly fussy about confidence than present a made-up precision to two decimal places and hope nobody notices.

    Underneath that, the project has become more like a real small application. There are unit tests for pricing, tariff selection, adaptive layout, usage insights, and historical cost calculation. The development Flatpak manifest runs the Meson tests inside the GNOME SDK, which catches the class of bugs where the host Python environment was accidentally being too kind. Ruff is in the loop for linting. The app moved to the GNOME 50 runtime. Screenshots, AppStream metadata, branding colours, and icons have all been tidied up.

    So the current honest description is: Agile Rates is a small GNOME app for UK Octopus Energy customers who want current and upcoming smart tariff rates, a cheap-time finder, and, if they connect their account, recent usage and estimated spend history. It is independent and is not affiliated with, endorsed by, or sponsored by Octopus Energy.

    The old launch post can stay as the origin story, but it is no longer the whole story. What started as “show me the next 24 hours of Agile prices” has become “help me make a small domestic electricity decision without opening a browser”. That is still a narrow job, which is why I like it. It just has a few more of the useful bits attached now.

    • Pl chevron_right

      Michael Catanzaro: Flatpak Sandbox Escape via Yelp

      news.movim.eu / PlanetGnome • 11 May 2026 • 1 minute

    Yelp 49.1 fixes a significant Flatpak sandbox escape related to last year’s CVE-2025-3155 . CVE assignment for this new issue is currently pending.

    This is not a bug in Flatpak. Flatpak allows sandboxed applications to open URIs or files, meaning the sandboxed application may use a URI or file path to launch another application to open the URI or file. This is brokered via the OpenURI portal. The portal or the app may decide to require user interaction to decide which app to launch, but user interaction is generally not required. This is necessary: you would get pretty frustrated if you were prompted to select which app to use every time you click on a link or try to open something! Accordingly, unsandboxed applications that are installed on the host system are somewhat risky: any malicious sandboxed app may launch an unsandboxed app using a malicious file, generally with no user interaction required. Unsandboxed applications installed on the host OS are inherently part of the attack surface of the Flatpak sandbox.

    In this case, a sandboxed application may launch Yelp to open a malicious help file. The help file can then exfiltrate arbitrary files from your host OS to a web server by using a CSS stylesheet embedded in an SVG. Suffice to say the attack is pretty clever, and certainly more impactful than the typical boring memory safety bugs I more commonly see.

    This bug was discovered by Codean Labs , which performed a security audit of Flatpak and several GNOME projects thanks to generous sponsorship by the Sovereign Tech Resilience program of Germany’s Sovereign Tech Agency.

    • Pl chevron_right

      Laura Kramolis: Computers are Terrible

      news.movim.eu / PlanetGnome • 10 May 2026 • 1 minute

    A slightly more collected version of originally 18 Signal messages. This is a simplification. I am evidently no expert in Unicode specifically or text encoding in general.

    I, for a long time, believed that while many modern standards are a mess of legacy compatibility built on legacy compatibility, Unicode was an exception. That the only compromise it made was ASCII-compatibility, but even that wasn’t such a big one given that its character set is the most common one in computing even to this day. I was wrong.

    I got a US keyboard so now I have 2 different ways of typing accented characters. I can either hold the A key until I get an option of à , á , â , ä , ǎ , etc., or I can press E and then A to get to á , combining ´ and a regular a . I started wondering… when typing it one way or the other, the results must be different, right? I looked for a website that showed me what code points I was typing, and… they were the same?

    Most systems (the OS/browser in this case) normalize all text either one way or the other. In this case, to a single code point. Unicode does have deprecation, so you would think that when they introduced combining characters, they would have deprecated the precomposed versions of characters that can be written using them, right? Nope!

    It’s arbitrary which way each systems normalizes text. Some do it composed ( á ) and some decomposed ( a + ◌́ ). Both are part of the standard. And of course, you need to treat them as equivalent when not normalized so you might as well do it when you can anyway.

    Precomposed characters are the legacy solution for representing many special letters in various character sets. In Unicode, they were included for compatibility with early encoding systems […].

    From Precomposed character - Wikipedia

    Oh well, my day is ruined. My new life goal is advocacy for the deprecation of all precomposed characters… or maybe I should just accept that all computing will be plagued by backwards compatibility headaches ’til the end of time.

    • Pl chevron_right

      Jakub Steiner: USS/FMS Carrier

      news.movim.eu / PlanetGnome • 9 May 2026 • 2 minutes

    I'm a sucker for pixel art and very constrained music grooveboxes. While I'm not into chiptunes, they sure are a cultural phenomenon.

    You heard me boast about the Dirtywave M8 numerous times, even in person, because it's my tool of choice for producing and performing music. Its genius lies in high sound quality and a workflow that grew out of the tiny screen and button constraints on the Nintendo Gameboy, the platform of choice for an app called LSDJ , which the M8 is modelled after. That, and the sheer amount of sound engines living in your pocket. Building on the shoulders of giants and all.

    The small M8 community has a few 'celebrities', such as Ess Mattisson . I first heard of Ess when I ran into an amazing single channel track called Wertstoffe . Ess has a great pedigree as the creator of the original Digitone FM synthesizer while working at Elektron . FM remains his forte, and after creating numerous plugins through Fors , he has now released a little 2-operator FM synth and sequencer for the platform of the future, Nintendo Gameboy Advance.

    Lo-bit Club logo animation FMS synth running on Gameboy Advance

    What makes FMS a bit crazy is what it's doing under the hood. The Gameboy Advance has no FM synthesis hardware at all. Its audio gives you two Direct Sound DMA channels of 8-bit signed PCM — that's 256 amplitude levels, roughly 48 dB of dynamic range. For comparison, a CD has 96 dB, in much finer fidelity. The CPU is an ARM7TDMI running at 16.78 MHz with 256 KB of RAM, and that's where all the FM math happens. Sine waves, modulation, mixing four channels, all in real time, in software, on a chip from 2001 that was designed to shuffle sprites around. The hiss you hear is just part of the deal: quantization noise from that 8-bit DAC. So few amplitude steps means everything that comes out has this fuzzy, slightly crushed quality. You can't get rid of it. It is the sound. And somehow there are four channels of 2-operator FM synthesis in there, each with envelopes and ratio control. On a Gameboy Advance.

    Picking GBA as a platform of choice in 2026 may be strange. Surprisingly, it can be used on a very large array of hardware. Not only can you plug a memory card into the original hardware or new fancy clones like the Analogue Pocket , you have an exponentially larger choice of dozens if not hundreds of Chinese emulator handhelds from Anbernic , Powkiddy , Miyoo or Retroid . You can also use the Steam Deck or any PC running one of the many emulators, RetroArch being the most popular one.

    FMS really touched me. Partly because I have a soft spot for the Nordic demo scene, but mainly for its novel approach to composition. Just like with the M8, creating basic building blocks and then applying transposition to break the looping monotony is my favorite workflow. This little thing has that in the form of pattern and trig transposition but also a novel take on "effects". Yes, you heard me right. There's a sorta-kinda-delay. Even does ping-pong stereo field.

    I will keep on trying to create something that … sounds good. The process has been amazing. I truly love some of the sequencing tricks and workflows. The sequencer is, however, so good it would be worth seeing it run on top of a higher quality sound engine too.

    • Pl chevron_right

      This Week in GNOME: #248 Tracking Performance

      news.movim.eu / PlanetGnome • 8 May 2026 • 6 minutes

    Update on what happened across the GNOME project in the week from May 01 to May 08.

    GNOME Core Apps and Libraries

    Glycin

    Sandboxed and extendable image loading and editing.

    Sophie (she/her) says

    Automatically running tests on GitLab has now been a standard for a while. But tracking performance metrics is much less common. Glycin now started running basic performance tests on bencher.dev ’s bare metal runners, which will hopefully provide comparable results.

    As of now, the benchmarks are only covering the overhead of the loader stack, by loading a 1px PNG, and the binary file sizes for glycin loaders and the thumbnailer. But the tests should be easy to expand. The benchmarks are always run for commits in the main branch, and can be manually started for merge requests. This way it will be possible to track performance improvements and catch regressions early.

    glycin-loader-overhead.BcL8QYC1_2tYf4G.webp

    Third Party Projects

    Christian says

    🎉 Gitte 0.2.0 is out!

    This week, Gitte 0.2.0 was released with a big focus on interactive rebasing and polishing everyday Git workflows.

    The biggest addition is interactive rebasing directly from the commit log. Commits can now be reordered via drag & drop, dropped, reworded, edited during a paused rebase, or squashed and fixuped without leaving the GUI.

    Remote operations like push, pull, fetch and clone now use the Git CLI internally, improving credential handling and protocol support. The diff view font is now configurable, and repositories can be opened directly from the terminal using commands like gitte ~/Code/projects/Gitte .

    This release also adds a unified stash dialog for workflows that require stashing changes, ahead/behind indicators for the current branch, double-click checkout for local branches, and improved merge commit information in the log viewer. There are also a few small easter eggs hidden throughout the app.

    On the translation side, Gitte now includes a German translation and a Ukrainian translation by Dymko. The release also includes AUR packaging documentation contributed by Kainoa Kanter, alongside many bug fixes and smaller refinements across the application.

    gitte-rebase-context-menue.CeEgkuIB_ZCUCXB.webp

    gitte-ahead-behind-indicators.Dof9Jqsu_xmRgo.webp

    gitte-settings-dialog.D33JDAoH_Zsxek3.webp

    Bilal Elmoussaoui reports

    I have released the first version of gobject-linter , previously known as goblint.

    This release brings a lot of new functionality: Meson integration for accurate dead code detection (functions, enum variants, structs, struct fields and more) via the new dead_code rule, mis-exported public types detection, inconsistent function signatures checking, and a type_style rule to enforce consistent use of either GLib type aliases ( gint , gfloat , gdouble ) or their C equivalents across your codebase. Two new GObject introspection rules for verifying missing since annotations and the exported public APIs are bindings friendly .

    It also supports diff-scoped linting via --diff - so you can incrementally integrate it into large existing projects.

    The release is also available on crates.io

    Jeffry Samuel announces

    Nocturne 1.0.0 has been released!

    Nocturne is a modern music player that can play songs from your OpenSubsonic, Jellyfin and local libraries.

    It includes features such as audio visualizers, equalizers and automatic lyric fetching.

    Some of the new features in 1.0.0 are:

    • Support for changing max bitrate
    • Support for replay gain
    • Added option to show sidebar player
    • Compatibility with word for word lyrics
    • Faster and more stable interface
    • Gapless playback
    • Grouping of songs in albums by their disc
    • Added option to show dynamic background in the main window
    • Much more

    Screenshot%20From%202026-05-03%2017-55-03.DuaOMq3L_Z1y9UGR.webp

    Screenshot%20From%202026-05-03%2017-55-36.DKHocJ-0_RxocX.webp

    Screenshot%20From%202026-05-03%2017-56-08.CgakUPo5_Z14pJjM.webp

    Screenshot%20From%202026-05-03%2020-13-48.qBfWIVD3_XtK6y.webp

    mas says

    Hi, finally released my first app, Press! With has a very straight-forward interface to compress huge music libraries with ease.

    You might like it because:

    • Compresses multiple files simultaneously
    • Never takes destructive actions on the source (but it can replace files on the destination if you want)
    • Avoids re-compressing a file (if you just want to add a new album, it compresses just that one, not your entire library)
    • Import basically any format GStreamer can take!
    • Export to mp3, m4a, or ogg
    • Move other non-auto files with you
    • You can add custom formats with a bit of GStreamer know-how

    It really is a one-stop solution to compress music to portable devices.

    I’d love to hear feedback and suggestions .

    Get it on Flathub or check the source code . Oh and, it uses libadwaita, vala, and GStreamer.

    light_desktop_main.j3IjehC1_Z1spX25.webp

    compress_dark_desktop_loading.DeHPSxUa_2hiruJ.webp

    JumpLink announces

    The type-definitions generator ts-for-gir produces the typings used to write GNOME applications in TypeScript. It can now experimentally run directly on GJS , without Node.js.

    This is made possible by the new experimental GJSify framework, which provides Node.js and Web APIs on top of GJS. Its long-term goal is to make as much of the JavaScript / TypeScript ecosystem as possible available to GJS applications.

    ts-for-gir-with-gir.C_gZeB3p_ZO18Qg.webp

    bhack announces

    I’d like to introduce Mini EQ, a new small GTK/Libadwaita app for PipeWire desktops.

    Mini EQ is a system-wide parametric equalizer. It creates a PipeWire filter-chain sink with builtin biquad filters, routes desktop playback through it with WirePlumber, and provides a compact 10-band fader workflow. It also supports Equalizer APO/AutoEq preset import and an optional spectrum analyzer through the PipeWire JACK compatibility layer.

    The project is now available on Flathub, with source and packaging published on GitHub.

    Flathub: https://flathub.org/apps/io.github.bhack.mini-eq GNOME Shell extension: https://extensions.gnome.org/extension/9803/mini-eq-controls/

    Source: https://github.com/bhack/mini-eq

    mini-eq.Cl3IXz68_321E1.webp

    Anton Isaiev announces

    RustConn is a GTK4/libadwaita connection manager for SSH, RDP, VNC, SPICE, Telnet, MOSH, and more.

    Versions 0.12.8–0.13.7 were shaped heavily by user feedback. What started as a personal tool is now used daily by sysadmins and DevOps teams — and their reports drive the roadmap.

    Key additions:

    Local Shell in Flatpak — fully working host shell via flatpak-spawn with real PTY and job control. RDP dynamic resize — in-place resolution change via Display Control Channel, no reconnect needed; automatic fallback for legacy servers. RDP Autotype — type text as keystrokes into remote sessions, bypassing clipboard restrictions. Drag & Drop — file paths into terminals, files to RDP clipboard. Smart Folders & Dynamic Folders — filter connections by tag/protocol/pattern, or generate them from external scripts. Virt-viewer .vv file support — open SPICE/VNC files from Proxmox, oVirt, libvirt directly. CLI —format json|csv|table — machine-readable output for scripting and AI agents. GNOME HIG audit — restructured menus, unified dialogs, accessible labels across all windows. Flatpak CLI auto-versioning — 7 bundled CLI tools now resolve latest versions from upstream automatically.

    Homepage: https://github.com/totoshko88/RustConn Flathub: https://flathub.org/en/apps/io.github.totoshko88.RustConn

    Shell Extensions

    Miklós Zsitva says

    Matrix Status Monitor v7 improves room handling, notifications, and profile actions in GNOME Shell.

    Matrix Status Monitor v7 is now available on GNOME Extensions, bringing a noticeably smoother experience for Matrix users running GNOME Shell. This release focuses on making the extension feel more responsive and more native to the desktop, while keeping the panel UI lightweight and fast.

    The biggest change is the new weight-based room sorting system, which replaces the old timestamp-only approach. Rooms are now ranked by highlights, unread counts, direct messages, favourites, visit frequency, and recency, so the most relevant conversations surface first.

    v7 also adds a clear idle/active separator in the room list, plus async menu rebuilds via GLib.idle_add to avoid blocking the UI during updates. On top of that, the extension now sends GNOME desktop notifications through MessageTray, with event ID deduplication so the same message does not trigger repeated alerts.

    The profile header has been expanded as well: it now shows the user avatar, display name, user ID, plus one-click copy and QR toggle actions. The avatar loading path was also extended to handle a larger profile icon size, which helps the header feel more polished and distinct from room rows.

    Overall, v7 is a refinement release that makes the extension feel more reliable, more readable, and more useful in daily GNOME use. If you want, I can also turn this into a shorter GNOME Extensions changelog blurb or a more formal release note.

    https://extensions.gnome.org/extension/9328/matrix-status-monitor/

    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!

    • Pl chevron_right

      Richard Hughes: LVFS Sponsorship Announcement

      news.movim.eu / PlanetGnome • 6 May 2026

    Some great news : I’m pleased to announce that both Dell and Lenovo have agreed to be premier sponsors for the Linux Vendor Firmware Service (LVFS) as part of our new sustainability effort .

    Over 145 million firmware updates have been deployed now, from over a hundred different vendors to millions of different Linux devices.
    With the huge industry support from Lenovo and Dell (and our existing sponsors of Framework , OSFF , and of course both the Linux Foundation and Red Hat ) we can build this ecosystem stronger and higher than before; we can continue the great work we’ve done long into the future .

    • Pl chevron_right

      Steven Deobald: Apologies

      news.movim.eu / PlanetGnome • 6 May 2026 • 2 minutes

    I believe accountability can be a challenge in a nonprofit, which only makes it all the more important. In this post, I am holding myself accountable. For the avoidance of doubt, nothing that follows has anything to do with my exit from the GNOME Foundation last August.

    I owe a few folks some apologies from my time as Executive Director. I have apologized to most of them individually already, where I could. But I believe that public accountability is the antidote to public frustration and I hope this contributes, in a small way, to the GNOME community moving forward.

    First off, I sincerely apologize to Jehan Pagès and Christian Hergert. I was curt with both of you last summer and neither of you deserved it. From July 23rd to August 29th I was dealing with significant sleep deprivation but that’s no excuse for the way I spoke to either of you. I’m sorry.

    Next, I apologize to the former Executive Directors and active community members who raised concerns to me. Holly, you warned me. Twice. Many other people tried to share their perspectives. I was too focused on the Foundation’s financial situation, and I did not take the time to fully understand what I was hearing from you all. I regret that.

    Sonny

    To Sonny Piers: I am sorry. I had a long call with you last June. You told me your complicated story. You seemed hurt — but I didn’t believe you. My understanding was incomplete and I did not approach the situation with the care it deserved.

    I’m sorry I didn’t do more to support you.

    Tobias

    More than anyone, I want to apologize to Tobias Bernard. Tobias, I am sorry. You gave me many hours of your time, patience, and thoughtfulness. You shared your ideas openly and in good faith, and I didn’t always meet that with the same level of openness.

    In particular, when we discussed Sonny’s situation, I did not listen as carefully as I should have. I was too focused on my existing understanding, and I failed to engage with what you were trying to convey. You deserved better from me.

    Sonny is lucky to have a friend like you.

    Meta

    This post reflects only my personal experiences and perspectives. It is not intended to make allegations or factual claims about the conduct of any individual or organization.

    Until Microsoft goes out of business, a permanent copy of this apology can be found in this gist .

    • Pl chevron_right

      Michael Meeks: 2026-05-04 Monday

      news.movim.eu / PlanetGnome • 4 May 2026

    • A day off - about time. Early partner call.
    • Helped J. put up stainless wire for rose training in the garden. Plugged away at garage tidying with more good progress.
    • Lunch with the family outside in the sun; tidied my office for the first time in a while; got the ladder moved into J's garden shed.
    • Made a wooden spatula with H. in the evening, turning plus band-sawing action; fun. Left it in tung-oil overnight.