call_end

    • Pl chevron_right

      Christian Hergert: Status Week 37

      news.movim.eu / PlanetGnome • Yesterday - 18:44 • 7 minutes

    VTE

    • Little back-and-forth on what we can do to improve a11y further with VTE. Prototype’d a way to extract hyperlinks and provide them into AccessibleText, however that is not the right place.

      We really need an implementation of the at-spi hyperlink API in GTK so that VteTerminal may implement it.

    • Merged a number of a11y fixes provided by Lukáš Tyrychtr which fix some of my original a11y implementation to follow the at-spi expectations better.

      Also added one of my own to fix a potential uint underrun when describing runs thanks to long to uint conversion.

    Ptyxis

    • Got a report of a bit of undesirable behavior when closing a window where close-able tabs are closed before showing the the special close dialog.

      It’s all more complex than I wish it was, because there are multiple ways we can enter that flow. Additionally, the asynchronous nature of closing tabs makes that state a bit “split brain” as it exists now. We may want to implement a “session” object to manage this stuff all in one place going forward.

    • When showing multiple tabs the “visual bell” background did not cover the entire headerbar. Quick CSS fix that.

    • Sebastian Wick needed a terminal with the Terminal Intents implemented so I took a crack at implementing that in Ptyxis. That allowed forward-progress on implementing the GLib side of things.

      Doing so found a couple of things we want to address in the upcoming FreeDesktop terminal intent “standard” and thankfully they’ve been moving that forward (including the Ptyxis-side).

    Libpeas

    • libpeas distro packaging was failing on the testsuite for Lua due to LGI not supporting girepository-2.0. Libpeas 2.x doesn’t use girepository at runtime, so this is relegated to the testsuite.

      For now, I’ve just disabled the Lua tests since they can’t possibly work due to that girepository usage.

      Some months back I provided patches for LGI to support girepository-2.0 but the project seems unmaintained and therefore hard for anyone to really say “yes merge this”.

      You can find some more information from Victoria Lacroix at https://www.vtrlx.ca/posts/2025/lgi-fork/

    Builder

    • They don’t get much testing during development so we had a small build regression on i686.

    • Spent a bunch of time on what will hopefully become Builder 50. This is a major rewrite on top of Foundry, Foundry-Gtk, and what will become Foundry-Adw in the 1.1 release of Foundry.

      It is hard to describe how remarkably small this will make Builder as a project compared to previous versions. So much complexity in the Builder code-base was in response to all the async/finish flows required to keep things smooth. But now that we have libdex and libfoundry, it’s just so easy to implement that sort of magic.

    Libdex

    • Sebastian Wick had some great ideas on integrating libdex with gdbus-codegen. Discussed a few different ways we could go forward to make something ergonomic. It would be nice to implement both consuming as proxies and providing as skeletons with futures.

    Libpanel

    • I noticed that the bottom corner buttons in Builder were not aligning with the external rounded corners of the window. That was fallout from a previous cleanup so fixed that up before release.

    Template-GLib

    • Thanks to early testing by distributors we found an issue in the testsuite which was exercising GObject Introspection integration. It broke on 32-bit because the gsize parameters are different and I never implemented auto-casting of integers of different sizes.

      So if you did a call like GLib.utf8_substring(str, i64(3), i64(-1)) and were on 32-bit that would fail since the offset / length parameters are glong which is sized differently.

      The quick fix that will still allow for errors to propagate was to implement auto up/down casting of numbers so long as they will fit in the destination type. Otherwise, you’ll fail the cast operation and errors propagate as necessary.

      This fix landed shortly before 3.38.0 but was tested on numerous architectures before release.

    Foundry

    • Learned that even command-line tools get appdata now days so I went ahead and implemented that for the foundry CLI tool.

    • We now dynamically link foundry binary. Originally I had plans to statically link it so that we can send it to a remote system and run it as a bridge. Since we aren’t there yet anyway, it doesn’t make sense to enforce that and/or make distributions patch it out.

    • FoundryBuildManager got a :busy property which makes it much easier to implement UI like Builder has where you show a build button or a stop button based on status.

      It also got a new stop() method/ GAction for that too. This is a lot harder than it looks because you need to plumb through a cancellable to all of the build pipeline API which is going to be awaiting the first future of [cancellable, some_op] .

      Was extremely happy to see it work on the first try which means I’ve done something right in the libdex design.

    • Once I did the above, adding a rebuild action and method was quite easy. We have all the necessary plumbing to either call an action or await a method future and get the same result.

    • A last minute API was added to create a producer from a consumer PTY fd. Hopefully using this new nomenclature is not so confusing for people used to ancient PTY terminology which I know is extremely confusing to begin with. But we gotta move past those antiquated terms (which I wont repeat here) as they are both morally wrong and technically inaccurate.

    • The FoundryFileManager can now automatically discover content-type when provided a filename. This vastly simplifies API usage when you have one-or-the-other to get a symbolic icon. Since we override many icons from the system, that is just a necessary abstraction.

    • FoundrySearchResult got an :icon property which means it’s basically usable to search UI now. Though there are not many FoundrySearchProvider s yet as they will land for 1.1.

    • A new context.file-manager-show GAction is provided which allows you to pass a uri as a "s" -typed GVariant . I feel stupid for not doing this a decade ago in Builder and quite frankly, it should probably just exist in GTK.

    • Libpanel/Builder has this nice “Action Muxer” API for years now and that is exported in Foundry too so we can use it in libfoundry-gtk and libfoundry-adw. It’s extremely handy when the built-in action support in GTK is not enough.

    • Foundry has a SQLite database of extended attributes on URIs when the underlying file-system does not support extended attributes. I made a little boo-boo there so made that to actually work.

    • Talked to dmalcom about supporting SARIF in Foundry for GNOME 50. They (the GCC project) would really like to see more consumers of it and Foundry is an obvious place to put that.

      It doesn’t look terribly difficult and it should allow us to drop the whole “regex parsing of PTY content” if done right.

    Foundry-Gtk

    • Fixed palette parsing and color application to VteTerminal.

    • Imported all the Ptyxis terminal palettes which can now be represented as a FoundryTerminalPaletteSet and FoundryTerminalPalette .

      Ultimately, what this means is if you link against libfoundry and libfoundry-gtk you could functionally create your own Ptyxis replacement in very little code (assuming you don’t use an agent on the host OS like Ptyxis does).

      Just use the FoundrySdk as your container abstraction (which you can query using FoundrySdkManager ) and FoundryTerminal with FoundryTerminalPaletteSet .

    • You can now list/find available palettes with a GListModel API in the form of foundry_terminal_list_palette_sets() and foundry_terminal_find_palette_set() . Each set has an easy light/dark property you can use based on your needs.

    • The file-search plugin now properly implements the load() vfunc for search results so you can implement preview/opening in apps.

    Foundry-Adw

    • A ton of work on the workspace, page, and panel APIs for 1.1. I’m really trying to find a way to re-use this across a number of applications such as Builder, Drafting, Sysprof, and more.

    Releases

    • gnome-text-editor 49.0

    • gtksourceview 5.18.0

    • sysprof 49.0

    • gnome-builder 49.0

    • ptyxis 49.0

    • libdex 1.0.0

    • foundry 1.0.0

    • libpanel 1.10.2

    • template-glib 3.38.0

    • d-spy 49.0 (thanks to Jordan for the 49.1 w/ CI fixed)

    • gom 0.5.4

    • libpeas 2.2.0

    • manuals 49.0

    Other

    • Team coffee hour, shared some battle wounds of trying to use AI for a pahole wrapper which fixed all my class structs to be cacheline aligned. Was just faster to write the damn code.