I’m excited to present MenuLibre’s latest development release, MenuLibre 2.3.2. This cycle featured a massive porting effort, numerous usability enhancements, and fixes for bugs that I didn’t know existed. This might be the largest update to date.
Goodbye Glade
Glade is a powerful design and development tool that has enabled me to build nearly every Linux app that I’ve worked on over the years. Combined with GtkBuilder, it enables rapid prototyping and development. I frequently discovered new widgets and functionality through Glade’s many menus.
While powerful, Glade can also be limiting. Some widgets simply aren’t available or don’t work quite right. Building advanced or dynamic interfaces requires a lot of hacky manipulation outside of Glade. Building repeat and advanced widgets is either difficult or full of repeat effort. Finally, porting between major toolkit versions (GTK 3 to 4, for instance) has varying levels of complexity. I’d rather not dig in too far.
Starting with version 2.3.2, Glade and GtkBuilder are gone from MenuLibre. In their place, I’ve ported the entire interface to Python code using PyGObject and strictly utilizing GTK libraries. This opens up future development options. I can upgrade the toolkit from GTK 3 to 4 relatively easily. I could migrate the codebase to Vala or maybe even Rust. It just depends on my mood when I get back to work. 🙂
New Features
Help Dialogs
Say goodbye to the huge, informative, and difficult-to-use tooltips that would appear while hovering labels in MenuLibre. Instead, I’ve introduced a new concept: on-demand help buttons! As you hover labels or navigate the interface with your keyboard, a small help icon is presented next to each label. Click this icon to show a dialog with more information and, when necessary, links to the online documentation.
The Copy Button
In the same theme, I’ve also added an on-demand copy button for the launcher filename displayed at the bottom of the MenuLibre window. Click this to add the filename to your clipboard for whatever nefarious purpose you have. (Either that file is getting deleted or modified directly… I won’t judge you.)
User Experience (UX) Improvements
Migrating away from Glade gave me an opportunity to familiarize myself with the MenuLibre user experience. The more I worked, the more I wanted to improve. Enjoy this refreshed application.
The Big, Noticeable Ones
- Headerbars are now used in more places… but only while headerbars are active for the main window. If you’re using a traditional desktop or have opted out of headerbars using the command-line flags, you have nothing to worry about. For everybody else, enjoy seeing the headerbars in select dialogs.
- The icon browser now makes much better use of space with a full-width search bar and smaller, more consistent icons with padding. The result: a no-nonsense, less stress-inducing icon lookup experience.
- Separators are now rendered on screen again. Sometime in recent years, the strikethrough hack I was using stopped working. As a result, separators turned into blank sections in the application treeview. Now, they are displayed with an icon and text but with reduced opacity to denote their lower priority in the list.
- Tooltips have been added for the Add and Delete buttons (you thought I didn’t like them anymore!). There are several instances where the Delete button becomes unavailable. The current reason is now displayed when you hover the button. Hopefully, this makes somebody a bit less confused.
The Smaller, But Welcome Ones
- Double-width borders and internal border radii have been removed from the application sidebar. Some themes, Greybird included, still render an additional border between the top of the sidebar and the toolbar, but this is improved largely.
- When headerbars are active, the Add button presents a popover menu instead of a traditional dropdown. This is consistent with the application menu button, just to the left of the Add button.
- The Execute button is now disabled when a directory or separator is selected. Previously, separators still allowed execution… which caused a nice little crash.
- The Remove and Clear buttons in the Category and Action editors are now disabled when appropriate.
- A new Help button was added to the Command Editor. Clicking this button opens the online documentation for the Exec key, with examples for the advanced flags.
- Various spacing and indentation improvements.
Code Quality
Once the porting and feature improvements were complete, I turned toward cleaning up years of accumulated development cruft. Utilizing autopep8, I restructured the codebase with tighter, more consistent formatting. Using Pylance and pygobject-stubs, I resolved several potential bugs. Hopefully, this makes getting through the backlog of over 90 issues easier.
Translation Updates
Finally, this update features some new translations and translatable strings. I was able to eliminate some unused strings, too, which should make supporting this project a bit easier. Many thanks to those who are translating MenuLibre into your native language! Here are the updated localisations for version 2.3.2:
Arabic, Basque, Brazilian Portuguese, Breton, Catalan, Chinese (China), Chinese (Hong Kong), Chinese (Traditional), Croatian, Czech, Danish, Dutch, English (Australia), English (United Kingdom), Esperanto, Finnish, French, Frisian, Galician, German, Greek, Hebrew, Icelandic, Italian, Japanese, Kazakh, Korean, Lithuanian, Malay, Malay (Arabic), Malayalam, Norwegian Bokmal, Polish, Portuguese, Portuguese (Portugal), Russian, Serbian, Sinhalese, Slovak, Slovenian, Spanish, Swedish, Turkish, Ukrainian