MenuLibre 2.3.0 Released
- Sean Davis
- Release Announcement
- June 12, 2022
Table of Contents
MenuLibre 2.3.0 features experimental support for the MATE desktop environment and improves compatibility with other environments.
What’s New?
New Features
- Added experimental support for the MATE desktop environment ( #40), as found in Solus and Ubuntu MATE
- Added support for the Unity desktop environment, as found in Ubuntu Unity
- Added support for the
admin://
protocol for editing root-owned files in the parsing errors dialog - Added a new prompt for automatically restarting the application menu when edits cannot be immediately applied
- Added an uninstallation script (not that you’d ever need it)
Bug Fixes
- AppStream: Do not install
appdata.xml.in
( #85) - AppStream: Fix screenshot URLs (404 errors)
- Desktop Environments: Remove empty menubar on Ubuntu’s GNOME
- Editor: Escape quoted percentage arguments ( #93)
- Editor: Fixed copying filename with Ctrl+C
- Startup: Assume menu loading failed when the menu is empty
General
- AppStream: Add OARS rating
- AppStream: Add developer name
Updated Translations
Catalan, Dutch, Finnish, French, Italian, Lithuanian, Malay, Malay (Arabic), Polish, Spanish
Adding Support for MATE (and other environments)
Adding (or fixing) support for the MATE desktop environment proved challenging. Due to some incompatibility between gnome-menus, xdg-desktop-menu, and MATE, and probably something that MenuLibre is doing wrong with all three… MenuLibre failed to read the MATE directories, creating an always-empty menu structure. Getting past that, I found that some updates, such as renaming menu items, would either fail to update the menu or add duplicate directories.
The Diagnostic Dialog
The first improvement of this series of fixes was correctly determining that an empty menu is one that failed to load. MenuLibre will now correctly capture this and present the diagnostic dialog at startup to help report a bug.
Supporting Vendor Directories
The second improvement was adding support for the vendor-prefixed directory structures. The KDE support already had this to some extent, but it’s now been further refined and should work for any desktop environment. Launchers found in vendor/vendor-*.desktop
paths are now properly supported.
Third, and this is when things start getting hacky, was adding support for MATE so that all of the systems would play together nicely. At startup, MenuLibre will now sync vendor directories (e.g. mate/mate-accessories.directory
) to your user path and create temporary symbolic links to the top level:
~/.local/share/desktop-directories/mate/mate-accessories.directory
~/.local/share/desktop-directories/mate-accessories.directory
This allows everything to speak the same language. When MenuLibre writes the menu file, it will resolve the real paths so the symbolic links are not needed and clean up afterward. I don’t love this solution, but it’s proven to be the most stable.
Restarting the Menu
The final improvement that came from adding support for MATE was accepting that not all menu updates can be made on the fly. MenuLibre will now prompt you to automatically restart your menu (the panels on MATE, Xfce, and Unity shell) when updates fail to apply. This feature is now limited to MATE, Xfce, and Unity.
Next Steps
I will continue improving upon MenuLibre in the coming weeks, but I’d like to get some early feedback on the features and fixes introduced in MenuLibre 2.3.0. Please report any issues on GitHub and try to refrain from shipping this development release to production systems.
Next, I will start work on a snapshot system that will make it easier to reverse changes or even completely undo the changes MenuLibre makes to your system. There have been far too many reports of failed menu updates and empty menus, and MenuLibre needs to protect its users better.