call_end

    • Pl chevron_right

      Christian Hergert: Status Week 47

      news.movim.eu / PlanetGnome • 5 days ago - 19:17 • 5 minutes

    Ptyxis

    • Issue filed about highlight colors. Seems like a fine addition but again, I can’t write features for everyone so it will need a MR.

    • Walk a user through changing shortcuts to get the behavior they want w/ ctrl+shift+page up/down. Find a bug along the way.

    • Copy GNOME Terminal behavior for placement of open/copy links from the context menu.

    • Add a ptyxis_tab_grab_focus() helper and use that everywhere instead of gtk_widget_grab_focus() on the tab (which then defers to the VteTerminal ). This may improve some state tracking of keyboard shift state, which while odd, is a fine enough workaround.

    • Issue about adding waypipe to the list of “network” command detection. Have to nack for now just because it is so useful in situations without SSH.

    • Issue about growing size of terminal window (well shrinking back) after changing foreground. Triaged enough to know this is still a GDK Wayland issue with too-aggressively caching toplevel sizes and then re-applying them even after first applying a different size. Punted to GTK for now since I don’t have the cycles for it.

    Foundry

    • Make progress icon look more like AdwSpinner so we can transition between the two paintables for progress based on if we get any sort of real fractional value from the operation.

    • Paintable support for FoundryTreeExpander which is getting used all over Foundry/Builder at this point.

    • Now that we have working progress from LSPs we need to display it somewhere. I copied the style of Nautilus progress operations into a new FoundryOperationBay which sits beneath the sidebar content. It’s not a perfect replicate but it is close enough for now to move on to other things.

      Sadly, we don’t have a way with the Language Server Protocol to tie together what operation caused a progress object to be created so cancellation of progress is rather meaningless there.

    • Bring over the whole “snapshot rewriting” we do in Ptyxis into the FoundryTerminal subclass of VTE to make it easy to use in the various applications getting built on Foundry.

    • Fix FoundryJsonrpcDriver to better handle incoming method calls. Specifically those lacking a params field. Also update things to fix reading from LF/Nil style streams where the underlying helper failed to skip bytes after read_upto() .

    • It can’t be used for much but there is a foundry mcp server now that will expose available tools. As part of this make a new Resources type that allows providing context in an automated fashion. They can be listed, read, track changes to list, subscribe to changes in a resource, etc.

      There are helpers for JSON style resources.

      For example, this makes the build diagnostics available at a diagnostics:// URI.

    • Make PluginFlatpakSdk explicitly skip using flatpak build before the flatpak build-init command in the pipeline should have run.

    • Allow locating PluginDevhelpBook by URI so that clicking on the header link in documentation can properly update path navigators.

    • Make FoundryPtyDiagnostics auto-register themselves with the FoundryDiagnosticManager so that things like foundry_diagnostic_manager_list_all() will include extracted warnings that came from the build pipeline automatically rather than just files with diagnostic providers attached.

    • Support for “linked pipelines” which allows you to insert a stage into your build pipeline which then executes another build pipeline from another project.

      For example, this can allow you to run a build pipeline for GTK or GtkSourceView in the early phase of your projects build. The goal here is to simplify the effort many of us go through working on multiple projects at the same time.

      Currently there are limitations here in that the pipeline you want to link needs to be setup correctly to land in the same place as your application. For jhbuild or any sort of --prefix= install prefix this is pretty simple an works.

      For the flatpak case we need more work so that we can install into a separate DESTDIR which is the staging directory of the app we’re building. I prefer this over setting up incremental builds just for this project manually as we have no configuration information to key off.

    • Add new FoundryVcsDiffHunk and FoundryVcsDiffLine objects and API necessary access them via FoundryVcsDelta . Implement the git plugin version of these too.

    • Add a new FoundryGitCommitBuilder high-level helper class to make writing commit tooling easier. Provides access to the delta, hunk, and lines as well as commit details. Still needs more work though to finish off the process of staging/unstaging individual lines and try to make the state easy for the UI side.

      Add a print-project-diff test program to test that this stuff works reasonably well.

    Builder

    • Lots of little things getting brought over for the new editor implementation. Go to line, position tracking, etc.

    • Searchable diagnostics page based on build output. Also fix up how we track PTY diagnostics using the DiagnosticManager now instead of only what we could see from the PTY diagnostics.

    Manuals

    • Merge support for back/forward mouse buttons from @pjungkamp

    • Merge support for updating pathbar elements when navigating via the WebKit back/forward list, also from @pjungkamp.

    Systemd

    • Libdex inspired fiber support for systemd which follows a core design principle which is that fibers are just a future like any other.

      https://github.com/systemd/systemd/pull/39771

    CentOS

    • Merge vte291/libadwaita updates for 10.2

    GTK

    • Lots of digging through GdkWayland/GtkWindow to see what we can do to improve the situation around resizing windows. There is some bit of state getting saved that is breaking our intent to have a window recalculate it’s preferred size.

    GNOME Settings Daemon

    • Took a look over a few things we can do to reduce periodic IO requests in the housekeeping plugin.

      Submitted a few merge requests around this.

    GLib

    • Submitted a merge request adding some more file-systems to those that are considered “system file system types”. We were missing a few that resulted in extraneous checking in gsd-housekeeping.

      While researching this, using a rather large /proc/mounts I have on hand, and modifying my GLib to let me parse it rather than the system mounts, I verified that we can spend double-digit milliseconds parsing this file. Pretty bad if you have a system where the mounts can change regularly and thus all users re-parse them.

      Looking at a Sysprof recording I made, we spend a huge amount of time in things like strcmp() , g_str_hash() , and in hashtable operations like g_hash_table_resize() .

      This is ripe for a better data-structure instead of strcmp() .

      I first tried to use gperf to generate perfect hashes for the things we care about and that was a 10% savings. But sometimes low-tech is even better.

      In the end I went with bsearch() which is within spitting distance of the faster solutions I came up with but a much more minimal change to the existing code-base at the simple cost of keeping lists sorted.

      There is likely still more that can be done on this with diminishing returns. Honestly, I was surprised a single change would be even this much.

    Red Hat

    This week also had me spending a significant amount of time on Red Hat related things.