Repository navigation
fix: improve DBusMenu compatibility on XFCE - #222
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Improve the Linux StatusNotifierItem DBusMenu implementation so tray context menus are correctly exposed on XFCE.
XFCE does not invoke the StatusNotifierItem
ContextMenumethod for a normal right click. Instead, its StatusNotifier plugin builds a local menu from the exportedcom.canonical.dbusmenuobject. The previous implementation exposed only a subset of that interface, causing XFCE to consider the menu unusable and fall back to the panel context menu.Changes
Expand the DBusMenu interface with:
GetGroupPropertiesGetPropertyEventGroupAboutToShowGroupItemsPropertiesUpdatedLayoutUpdatedItemActivationRequestedReturn
FalsefromAboutToShowwhen the static layout does not require an update.Add property filtering and shared menu event dispatching.
Extend tray tests to cover the DBusMenu contract.
Fix the Web JavaScript metadata test so it explicitly injects
navigatorRefunder Node.js.Check the browser entrypoint as an ES module in the local gate.
Make the development environment reproducible by including Bandit in the
devdependencies and using.[dev]fromrequirements-dev.txt.Validation
Tested on XFCE 4.18.4 under Xorg.
Before the change:
SecondaryActivateMenu=/MenuBar, but did not build a usable application menuAfter the change:
make gatepasses cleanlyNote: XFCE may require a panel reload (
xfce4-panel -r) to refresh a newly registered tray icon in some sessions. This appears to be separate from the DBusMenu compatibility issue addressed here.