-
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 ofgtk_widget_grab_focus()on the tab (which then defers to theVteTerminal). This may improve some state tracking of keyboard shift state, which while odd, is a fine enough workaround. -
Issue about adding
waypipeto 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
AdwSpinnerso 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
FoundryTreeExpanderwhich 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
FoundryOperationBaywhich 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
FoundryTerminalsubclass of VTE to make it easy to use in the various applications getting built on Foundry. -
Fix
FoundryJsonrpcDriverto better handle incoming method calls. Specifically those lacking aparamsfield. Also update things to fix reading from LF/Nil style streams where the underlying helper failed to skip bytes afterread_upto(). -
It can’t be used for much but there is a
foundry mcpserver 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
PluginFlatpakSdkexplicitly skip usingflatpak buildbefore theflatpak build-initcommand in the pipeline should have run. -
Allow locating
PluginDevhelpBookby URI so that clicking on the header link in documentation can properly update path navigators. -
Make
FoundryPtyDiagnosticsauto-register themselves with theFoundryDiagnosticManagerso that things likefoundry_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
jhbuildor any sort of--prefix=install prefix this is pretty simple an works.For the
flatpakcase we need more work so that we can install into a separateDESTDIRwhich 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
FoundryVcsDiffHunkandFoundryVcsDiffLineobjects and API necessary access them viaFoundryVcsDelta. Implement the git plugin version of these too. -
Add a new
FoundryGitCommitBuilderhigh-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-difftest 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 likeg_hash_table_resize().This is ripe for a better data-structure instead of
strcmp().I first tried to use
gperfto 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.