GNOME Builder 41 Highlights
Sep 23, 2021
Improved Flatpak SDK Management
Builder now maintains a private Flatpak installation to install SDKs and SDK extensions that are not available in the user’s Flatpak installation. This means Builder will no longer add flathub or gnome-nightly to your user’s Flatpak installation.
Builder now uses an out-of-process Flatpak helper (gnome-builder-flatpak) to vastly improve its ability to track and resolve SDK extensions. This will improve the situation for applications requiring Rust, LLVM, and others going forward.
You can update your SDKs and dependencies together using the “Update Dependencies” button in the build popover.
More information can be found in Christian’s blog post.
New Search Panel
There is now a persistent project-wide search panel always visible. Specific folder search can still be done from the project tree and will end up in an extra search tab which can be closed. Vanadiae also redesigned the look of the search panel to allow changing search parameters and re-searching from the same tab.
Remote mobile development support
James Westman implemented further integration of deviced so it is now possible to deploy and start an application on a remote device with the run button. See his tutorial: https://www.jwestman.net/2021/08/06/tutorial-mobile-dev-with-builder.html
Builder supports now GTK4 templates for the C language. The example application now also features additional elements like a hamburger menu, a shortcuts window and an About dialog. It also splits the main code into a GtkApplication subclass to make it more in-line with real world apps practices.
If you’re interested in getting additional languages support for the new GTK 4 template, then feel free to open a merge request to get it added!
Hover popup documenation
The hover popup documentation got an overhaul with a new markdown renderer thanks to Tom A. Wagner. He utilizes cmark, a C markdown parser, to correctly visualize the markdown content in GTK widgets.
Vanadiae reworked the session handling of Builder. In the past this work got outsourced to plugins. But every implementation was started at the same time which meant that pages would end up in random order during saving/restoring of the session. This book-keeping is now done by the core so plugins can concentrate on the content.
Session state will now always be saved immediately to avoid losing session state during a crash of Builder.
Vala Language Server
Swapped the main Vala Language Server from GVLS to VLS. The memory consumption should be lower now.
- You can now disable the entry breakpoint on main. (Christian Hergert)
- Mnemonics are now used everywhere to enhance the keyboard only experience. (vanadiae)
- “Reveal in project tree” option added in editor context menu (vanadiae)
- Better performance for search button searches (vanadiae)
- The Run Terminal is now only spawned on the main editor. Additional Workspaces aren’t cluttered with additional Run Terminals (Günther Wagner)
- Debugger Controls ar now only spawned on the main editor (Günther Wagner)
- Improvements for rust-analyzer support. In particular, people are notified that they need to install rust-analyzer if they don’t have it, which helps understanding why the various Rust integration features are not working for someone. (Günther Wagner)
- Devhelp support improved. It uses now typical shortcuts from devhelp for searching and handles correctly local as well as remote URLs and redirects to a browser in the later case. (vanadiae)
- CMake projects can now be built and started directly with Builder using the Codemodel (Günther Wagner)
- Direct usage of jedi got dropped in favor of a more widely supported Python Language Server. This greatly improves the language support because the LSP has a more stable and standard API.
Personal story: Tuxpaint
I got asked if it is possible to add additional flags for make-targets in a flatpak environment. Reason: he wanted to save drawings of his kids in tuxpaint but tuxpaint did not implemented the necessary updates in order to save files in a flatpak environment. Tuxpaint is a very old application and i was encouraged to help this father to help his kids. Therefore i implemented the necessary tooling to compile and run tuxpaint in GNOME Builder. <3