helloSystem / Menu

Global menu bar written in Qt
44 stars 14 forks source link

Make Firefox and Thunderbird work with the global menu #37

Closed grahamperrin closed 3 years ago

grahamperrin commented 3 years ago

https://askubuntu.com/a/1288592/25036[HowTo] Enabling KDE global menu support in Mozilla Firefox and Thunderbird - Contributions / Tutorials - Manjaro Linux Forum (2020-10-01) essentially:

Re: https://askubuntu.com/questions/1288516/how-to-use-kde-global-menu-with-firefox#comment2187794_1288516 ("… good idea to keep the question open …") consider voting up https://askubuntu.com/a/1288825/25036 without expecting it to become an accepted answer. Via this answer:

– vote appropriately; maybe something there is (or will become) not specific to Plasma on Linux.


https://github.com/helloSystem/hello/wiki/Status/_compare/ea548f3c47ea6a27e6ce2929cf007eeea080f576...2612ac0135f794e620389ce4efdfde1d19e9a8f3#diff-37279d912b8bd686a5f683ec6b465f7db4799fb56029601266b2ffa6ffb35ccfR18

probonopd commented 3 years ago

The whole global menu topic seems to be a giant mess because no one really coordinates it:, at least this is my impression after having researched the topic for https://hellosystem.github.io/docs/developer/menu.

grahamperrin commented 3 years ago

Thanks.

Suggestion: documentation

Either:

  1. link from https://github.com/helloSystem/hello/wiki/Status#what-does-not-work-yet to here; or
  2. reduce the need to maintain wiki pages – people can find their way to issues such as this through the https://github.com/helloSystem/hello#contributing direction to help wanted
probonopd commented 3 years ago

It seems to me that one would need to apply these two patches from firefox-appmenu in AUR:

If someone cares enough about Firefox, it would be tremedous to get those working in ports.

grahamperrin commented 3 years ago

@jbeich FYI https://github.com/helloSystem/Menu/issues/37#issuecomment-755764371

Might this be feasible?

Best, Graham

PS to clarify: not specific to helloSystem. If I understand correctly, it would enable compatibility with the global menu of KDE Plasma 5.

grahamperrin commented 3 years ago

… essentially:

  • four Linux KDE Plasma-oriented options for Firefox, not all of which offer source code, not all of which are maintained/supported
  • three Linux KDE Plasma-oriented options for Thunderbird, one of which offers source code.

https://forum.manjaro.org/t/howto-enabling-kde-global-menu-support-in-mozilla-firefox-and-thunderbird/7405/19?u=grahamperrin clarifies:

… your post mentions “source code not available” for some of the solutions, but this is not correct. The source code is available ─ given that they are Ubuntu patches, that’s where you’ll find it ─ but the AUR packages in question are provided as precompiled binaries only.

Other than that, it’s looking good.

probonopd commented 3 years ago

Does this mean that we would need to ask for source-code level patches to be put into the FreeBSD ports for Firefox and Thunderbird? Then we should get in touch with

Maintainer: gecko@FreeBSD.org

grahamperrin commented 3 years ago

+1

Jan Beich is a frequent committer under https://www.freshports.org/www/firefox/#history (and more broadly https://www.freshports.org/search.php?stype=committer&method=exact&query=jbeich) but pinging him above was probably a bit cheeky. More appropriate to use the maintainer e-mail address.

As far as I can tell from https://www.google.com/search?q="application+menu"|"global+menu"+site%3Abugs.freebsd.org&tbs=li%3A1#unfucked there's no precedent for application menu or global menu anywhere in the Bugzilla … still, a request to make (at least) www/firefox and www/firefox-esr compatible with (primarily) the global menu a.k.a. application menu of KDE Plasma might be reasonable – if it will not become a maintenance burden …

probonopd commented 3 years ago

Trying https://www.bayofrum.net/pkg/packages/122amd64-default/All/firefox-86.0_2,2.txz from https://www.bayofrum.net/pkg/122amd64-default/2021-03-06_16h17m47s/build.html by @crees it seems like it is doing something with regard to the global menu ("appmenu") but it does not lead to the menu items appearing in our global menu just yet:

LD_DEBUG=libs firefox 2>&1 | grep -i menu

loading "/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so"
/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so valid_hash_sysv 1 valid_hash_gnu 1 dynsymcount 122
  0x80d0ef000 .. 0x80d0f9fff: /usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so
 Searching for "libappmenu-gtk3-parser.so.0"
lm_find("/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so", "/usr/local/lib")
lmp_find("/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so")
  Trying "/usr/local/lib/libappmenu-gtk3-parser.so.0"
  Opened "/usr/local/lib/libappmenu-gtk3-parser.so.0", fd 5
loading "/usr/local/lib/libappmenu-gtk3-parser.so.0"
/usr/local/lib/libappmenu-gtk3-parser.so.0 valid_hash_sysv 1 valid_hash_gnu 1 dynsymcount 170
  0x80d0fa000 .. 0x80d10dfff: /usr/local/lib/libappmenu-gtk3-parser.so.0
relocating "/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so"
relocating "/usr/local/lib/libappmenu-gtk3-parser.so.0"
calling init function for /usr/local/lib/libappmenu-gtk3-parser.so.0 at 0x80d10a4e8
calling init function for /usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so at 0x80d0f5b38
"g_getenv" in "libappmenu-gtk-module.so" ==> 0x80308ff30 in "libglib-2.0.so.0"
"gdk_display_get_default" in "libappmenu-gtk-module.so" ==> 0x8028395c0 in "libgdk-3.so.0"
"gdk_x11_display_get_type" in "libappmenu-gtk-module.so" ==> 0x8028674b0 in "libgdk-3.so.0"
"g_ascii_strcasecmp" in "libappmenu-gtk-module.so" ==> 0x8030c9090 in "libglib-2.0.so.0"
"g_get_prgname" in "libappmenu-gtk-module.so" ==> 0x8030e2b30 in "libglib-2.0.so.0"
"g_strcmp0" in "libappmenu-gtk-module.so" ==> 0x8030cda40 in "libglib-2.0.so.0"
"g_settings_new" in "libappmenu-gtk-module.so" ==> 0x802dc2640 in "libgio-2.0.so.0"
"g_settings_get_value" in "libappmenu-gtk-module.so" ==> 0x802dc2ae0 in "libgio-2.0.so.0"
"g_variant_type_checked_" in "libappmenu-gtk-module.so" ==> 0x8030f5a00 in "libglib-2.0.so.0"
"g_variant_is_of_type" in "libappmenu-gtk-module.so" ==> 0x8030e4730 in "libglib-2.0.so.0"
"g_variant_iter_init" in "libappmenu-gtk-module.so" ==> 0x8030e5eb0 in "libglib-2.0.so.0"
"g_variant_iter_loop" in "libappmenu-gtk-module.so" ==> 0x8030ebfe0 in "libglib-2.0.so.0"
"g_object_unref" in "libappmenu-gtk-module.so" ==> 0x802fa3e60 in "libgobject-2.0.so.0"
"g_variant_unref" in "libappmenu-gtk-module.so" ==> 0x8030ed270 in "libglib-2.0.so.0"
"g_bus_get_sync" in "libappmenu-gtk-module.so" ==> 0x802dd6690 in "libgio-2.0.so.0""g_bus_get_sync" in "libdconfsettings.so" ==> 0x802dd6690 in "libgio-2.0.so.0"
"g_dbus_connection_call_sync" in "libappmenu-gtk-module.so" ==> 0x802dd5bd0 in "libgio-2.0.so.0"
"g_variant_get_child_value" in "libappmenu-gtk-module.so" ==> 0x8030ed900 in "libglib-2.0.so.0"
"g_variant_get" in "libappmenu-gtk-module.so" ==> 0x8030eb430 in "libglib-2.0.so.0"
"g_str_equal" in "libappmenu-gtk-module.so" ==> 0x803095d80 in "libglib-2.0.so.0"
"g_variant_iter_free" in "libappmenu-gtk-module.so" ==> 0x8030e8940 in "libglib-2.0.so.0"
"gtk_settings_get_default" in "libappmenu-gtk-module.so" ==> 0x80266a690 in "libgtk-3.so.0"
"gtk_settings_get_type" in "libappmenu-gtk-module.so" ==> 0x802669ec0 in "libgtk-3.so.0"
"g_object_class_find_property" in "libappmenu-gtk-module.so" ==> 0x802fa38b0 in "libgobject-2.0.so.0"
"g_type_check_instance_is_fundamentally_a" in "libappmenu-gtk-module.so" ==> 0x802fbc300 in "libgobject-2.0.so.0"
"g_settings_get_boolean" in "libappmenu-gtk-module.so" ==> 0x802dc3f40 in "libgio-2.0.so.0"
"g_object_set" in "libappmenu-gtk-module.so" ==> 0x802fa63e0 in "libgobject-2.0.so.0"
"g_bus_watch_name" in "libappmenu-gtk-module.so" ==> 0x802de4180 in "libgio-2.0.so.0"
"unity_gtk_menu_shell_set_debug" in "libappmenu-gtk-module.so" ==> 0x80d106100 in "libappmenu-gtk3-parser.so.0"
"unity_gtk_action_group_set_debug" in "libappmenu-gtk-module.so" ==> 0x80d1025f0 in "libappmenu-gtk3-parser.so.0""g_private_set" in "libgio-2.0.so.0" ==> 0x8030fbe30 in "libglib-2.0.so.0"
"gtk_widget_get_type" in "libappmenu-gtk-module.so" ==> 0x80272f1b0 in "libgtk-3.so.0"
"g_type_class_ref" in "libappmenu-gtk-module.so" ==> 0x802fb7a30 in "libgobject-2.0.so.0"
"gtk_application_window_get_type" in "libappmenu-gtk-module.so" ==> 0x80248e130 in "libgtk-3.so.0"
"gtk_window_get_type" in "libappmenu-gtk-module.so" ==> 0x802748c20 in "libgtk-3.so.0"
"g_type_children" in "libappmenu-gtk-module.so" ==> 0x802fbb990 in "libgobject-2.0.so.0"
"g_free" in "libappmenu-gtk-module.so" ==> 0x8030aec20 in "libglib-2.0.so.0"
"gtk_menu_bar_get_type" in "libappmenu-gtk-module.so" ==> 0x8025df830 in "libgtk-3.so.0"
"gtk_widget_get_screen" in "libappmenu-gtk-module.so" ==> 0x8027373e0 in "libgtk-3.so.0"
"gdk_screen_get_rgba_visual" in "libappmenu-gtk-module.so" ==> 0x802848bd0 in "libgdk-3.so.0"
"g_type_check_instance_cast" in "libappmenu-gtk-module.so" ==> 0x802fbc410 in "libgobject-2.0.so.0"
"gtk_window_get_type_hint" in "libappmenu-gtk-module.so" ==> 0x80274b7c0 in "libgtk-3.so.0"
"gdk_wayland_display_get_type" in "libappmenu-gtk-module.so" ==> 0x80289ac10 in "libgdk-3.so.0"
"g_type_check_instance_is_a" in "libappmenu-gtk-module.so" ==> 0x802fbc180 in "libgobject-2.0.so.0"
"g_quark_from_static_string" in "libappmenu-gtk-module.so" ==> 0x8030b8100 in "libglib-2.0.so.0"
"g_object_get_qdata" in "libappmenu-gtk-module.so" ==> 0x802fa7940 in "libgobject-2.0.so.0"
"g_strdup_printf" in "libappmenu-gtk-module.so" ==> 0x8030c8360 in "libglib-2.0.so.0"
"gtk_widget_get_window" in "libappmenu-gtk-module.so" ==> 0x802741090 in "libgtk-3.so.0"
"gdk_window_get_display" in "libappmenu-gtk-module.so" ==> 0x80284c630 in "libgdk-3.so.0"
"gdk_x11_display_get_xdisplay" in "libappmenu-gtk-module.so" ==> 0x802868b50 in "libgdk-3.so.0"
"gdk_x11_window_get_xid" in "libappmenu-gtk-module.so" ==> 0x802880450 in "libgdk-3.so.0"
"gdk_x11_get_xatom_by_name_for_display" in "libappmenu-gtk-module.so" ==> 0x802877890 in "libgdk-3.so.0"
"XGetWindowProperty" in "libappmenu-gtk-module.so" ==> 0x802972340 in "libX11.so.6"
"g_slice_alloc" in "libappmenu-gtk-module.so" ==> 0x8030c5930 in "libglib-2.0.so.0"
"g_menu_new" in "libappmenu-gtk-module.so" ==> 0x802db4af0 in "libgio-2.0.so.0"
"g_action_group_get_type" in "libappmenu-gtk-module.so" ==> 0x802dacd10 in "libgio-2.0.so.0"
"unity_gtk_action_group_new" in "libappmenu-gtk-module.so" ==> 0x80d101170 in "libappmenu-gtk3-parser.so.0"
"g_once_init_enter" in "libappmenu-gtk3-parser.so.0" ==> 0x8030d2070 in "libglib-2.0.so.0"
"g_intern_static_string" in "libappmenu-gtk3-parser.so.0" ==> 0x8030b8270 in "libglib-2.0.so.0"
"g_type_register_static_simple" in "libappmenu-gtk3-parser.so.0" ==> 0x802fb9660 in "libgobject-2.0.so.0"
"g_action_group_get_type" in "libappmenu-gtk3-parser.so.0" ==> 0x802dacd10 in "libgio-2.0.so.0"
"g_type_add_interface_static" in "libappmenu-gtk3-parser.so.0" ==> 0x802fba000 in "libgobject-2.0.so.0"
"g_once_init_leave" in "libappmenu-gtk3-parser.so.0" ==> 0x8030d2120 in "libglib-2.0.so.0"
"g_object_new" in "libappmenu-gtk3-parser.so.0" ==> 0x802fa47a0 in "libgobject-2.0.so.0"
"g_type_class_peek_parent" in "libappmenu-gtk3-parser.so.0" ==> 0x802fbaf60 in "libgobject-2.0.so.0"
"g_type_check_class_cast" in "libappmenu-gtk3-parser.so.0" ==> 0x802fbc710 in "libgobject-2.0.so.0"
"g_hash_table_new_full" in "libappmenu-gtk3-parser.so.0" ==> 0x803093580 in "libglib-2.0.so.0"
"g_menu_model_get_type" in "libappmenu-gtk-module.so" ==> 0x802db3740 in "libgio-2.0.so.0"
"g_dbus_connection_export_menu_model" in "libappmenu-gtk-module.so" ==> 0x802db6350 in "libgio-2.0.so.0"
"g_dbus_connection_export_action_group" in "libappmenu-gtk-module.so" ==> 0x802daf2f0 in "libgio-2.0.so.0"
"g_dbus_connection_get_unique_name" in "libappmenu-gtk-module.so" ==> 0x802dd34d0 in "libgio-2.0.so.0"
"g_utf8_strlen" in "libappmenu-gtk-module.so" ==> 0x8030dad50 in "libglib-2.0.so.0"
"XChangeProperty" in "libappmenu-gtk-module.so" ==> 0x802968530 in "libX11.so.6"
"g_object_set_qdata_full" in "libappmenu-gtk-module.so" ==> 0x802fa7b50 in "libgobject-2.0.so.0"
"gtk_menu_item_new" in "libxul.so" ==> 0x8025e2780 in "libgtk-3.so.0"
"gtk_menu_new" in "libxul.so" ==> 0x8025d5500 in "libgtk-3.so.0"
"gtk_menu_get_type" in "libxul.so" ==> 0x8025d4d70 in "libgtk-3.so.0"
"gtk_menu_attach_to_widget" in "libxul.so" ==> 0x8025d4e20 in "libgtk-3.so.0"
"gtk_menu_bar_new" in "libxul.so" ==> 0x8025df8e0 in "libgtk-3.so.0"
"gtk_menu_shell_get_type" in "libxul.so" ==> 0x8025e7530 in "libgtk-3.so.0"
"gtk_menu_shell_append" in "libxul.so" ==> 0x8025e75e0 in "libgtk-3.so.0"
"g_log" in "libappmenu-gtk-module.so" ==> 0x8030af520 in "libglib-2.0.so.0"
loading "/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so"
/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so valid_hash_sysv 1 valid_hash_gnu 1 dynsymcount 122
  0x80d15c000 .. 0x80d166fff: /usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so
 Searching for "libappmenu-gtk3-parser.so.0"
lm_find("/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so", "/usr/local/lib/firefox")
lmp_find("/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so")
  Trying "/usr/local/lib/firefox/libappmenu-gtk3-parser.so.0"
  Failed to open "/usr/local/lib/firefox/libappmenu-gtk3-parser.so.0": No such file or directory
lm_find("/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so", "/usr/local/lib")
lmp_find("/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so")
  Trying "/usr/local/lib/libappmenu-gtk3-parser.so.0"
  Opened "/usr/local/lib/libappmenu-gtk3-parser.so.0", fd 11
loading "/usr/local/lib/libappmenu-gtk3-parser.so.0"
/usr/local/lib/libappmenu-gtk3-parser.so.0 valid_hash_sysv 1 valid_hash_gnu 1 dynsymcount 170
  0x80d167000 .. 0x80d17afff: /usr/local/lib/libappmenu-gtk3-parser.so.0
relocating "/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so"
relocating "/usr/local/lib/libappmenu-gtk3-parser.so.0"
calling init function for /usr/local/lib/libappmenu-gtk3-parser.so.0 at 0x80d1774e8
calling init function for /usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so at 0x80d162b38
"g_getenv" in "libappmenu-gtk-module.so" ==> 0x80308ff30 in "libglib-2.0.so.0"
"gdk_display_get_default" in "libappmenu-gtk-module.so" ==> 0x8028395c0 in "libgdk-3.so.0"
"gdk_x11_display_get_type" in "libappmenu-gtk-module.so" ==> 0x8028674b0 in "libgdk-3.so.0"
"g_ascii_strcasecmp" in "libappmenu-gtk-module.so" ==> 0x8030c9090 in "libglib-2.0.so.0"
"g_get_prgname" in "libappmenu-gtk-module.so" ==> 0x8030e2b30 in "libglib-2.0.so.0"
"g_strcmp0" in "libappmenu-gtk-module.so" ==> 0x8030cda40 in "libglib-2.0.so.0"
"g_settings_new" in "libappmenu-gtk-module.so" ==> 0x802dc2640 in "libgio-2.0.so.0"
"g_settings_get_value" in "libappmenu-gtk-module.so" ==> 0x802dc2ae0 in "libgio-2.0.so.0"
"g_variant_type_checked_" in "libappmenu-gtk-module.so" ==> 0x8030f5a00 in "libglib-2.0.so.0"
"g_variant_is_of_type" in "libappmenu-gtk-module.so" ==> 0x8030e4730 in "libglib-2.0.so.0"
reloc_jmpslot: *0x80d50c3f8 = 0x8030a3dd0"g_variant_iter_init" in "libappmenu-gtk-module.so" ==> 0x8030e5eb0 in "libglib-2.0.so.0"
"g_variant_iter_loop" in "libappmenu-gtk-module.so" ==> 0x8030ebfe0 in "libglib-2.0.so.0"
"g_object_unref" in "libappmenu-gtk-module.so" ==> 0x802fa3e60 in "libgobject-2.0.so.0"
"g_variant_unref" in "libappmenu-gtk-module.so" ==> 0x8030ed270 in "libglib-2.0.so.0"
"g_bus_get_sync" in "libappmenu-gtk-module.so" ==> 0x802dd6690 in "libgio-2.0.so.0"
"g_dbus_connection_call_sync" in "libappmenu-gtk-module.so" ==> 0x802dd5bd0 in "libgio-2.0.so.0"
"g_variant_get_child_value" in "libappmenu-gtk-module.so" ==> 0x8030ed900 in "libglib-2.0.so.0"
"g_variant_get" in "libappmenu-gtk-module.so" ==> 0x8030eb430 in "libglib-2.0.so.0"
"g_str_equal" in "libappmenu-gtk-module.so" ==> 0x803095d80 in "libglib-2.0.so.0""g_dbus_connection_call_finish" in "libdconfsettings.so" ==> 0x802dd5aa0 in "libgio-2.0.so.0"
"g_variant_iter_free" in "libappmenu-gtk-module.so" ==> 0x8030e8940 in "libglib-2.0.so.0"
"gtk_settings_get_default" in "libappmenu-gtk-module.so" ==> 0x80266a690 in "libgtk-3.so.0"
 Searching for "libdbusmenu-glib.so.4"
search_library_pathfds('libdbusmenu-glib.so.4', '(null)', fdp)
  Trying "/lib/libdbusmenu-glib.so.4"
  Failed to open "/lib/libdbusmenu-glib.so.4": No such file or directory
  Trying "/usr/lib/libdbusmenu-glib.so.4"
  Failed to open "/usr/lib/libdbusmenu-glib.so.4": No such file or directory"strcmp" in "libgvfsdbus.so" ==> 0x80142a740 in "libc.so.7"
  Trying "/usr/lib/compat/libdbusmenu-glib.so.4""g_strv_length" in "libgvfsdbus.so" ==> 0x8030ca630 in "libglib-2.0.so.0"
  Failed to open "/usr/lib/compat/libdbusmenu-glib.so.4": No such file or directory
  Trying "/usr/local/lib/libdbusmenu-glib.so.4"
  Opened "/usr/local/lib/libdbusmenu-glib.so.4", fd 55
loading "/usr/local/lib/libdbusmenu-glib.so.4"
/usr/local/lib/libdbusmenu-glib.so.4 valid_hash_sysv 1 valid_hash_gnu 1 dynsymcount 278
  0x81908c000 .. 0x8190acfff: /usr/local/lib/libdbusmenu-glib.so.4
relocating "/usr/local/lib/libdbusmenu-glib.so.4"
calling init function for /usr/local/lib/libdbusmenu-glib.so.4 at 0x8190a8458
 Searching for "libdbusmenu-gtk3.so.4"
search_library_pathfds('libdbusmenu-gtk3.so.4', '(null)', fdp)
  Trying "/lib/libdbusmenu-gtk3.so.4"
  Failed to open "/lib/libdbusmenu-gtk3.so.4": No such file or directory
  Trying "/usr/lib/libdbusmenu-gtk3.so.4"
  Failed to open "/usr/lib/libdbusmenu-gtk3.so.4": No such file or directory"g_hash_table_new" in "libgvfsdbus.so" ==> 0x803093570 in "libglib-2.0.so.0"
  Trying "/usr/lib/compat/libdbusmenu-gtk3.so.4"
  Failed to open "/usr/lib/compat/libdbusmenu-gtk3.so.4": No such file or directory
  Trying "/usr/local/lib/libdbusmenu-gtk3.so.4"
  Opened "/usr/local/lib/libdbusmenu-gtk3.so.4", fd 55
loading "/usr/local/lib/libdbusmenu-gtk3.so.4"
/usr/local/lib/libdbusmenu-gtk3.so.4 valid_hash_sysv 1 valid_hash_gnu 1 dynsymcount 293
  0x8190ad000 .. 0x8190c3fff: /usr/local/lib/libdbusmenu-gtk3.so.4
relocating "/usr/local/lib/libdbusmenu-gtk3.so.4"
calling init function for /usr/local/lib/libdbusmenu-gtk3.so.4 at 0x8190bfb28
"g_once_init_enter" in "libdbusmenu-glib.so.4" ==> 0x8030d2070 in "libglib-2.0.so.0"
"g_intern_static_string" in "libdbusmenu-glib.so.4" ==> 0x8030b8270 in "libglib-2.0.so.0"
"g_type_register_static_simple" in "libdbusmenu-glib.so.4" ==> 0x802fb9660 in "libgobject-2.0.so.0"
"g_once_init_leave" in "libdbusmenu-glib.so.4" ==> 0x8030d2120 in "libglib-2.0.so.0"
"g_object_new" in "libdbusmenu-glib.so.4" ==> 0x802fa47a0 in "libgobject-2.0.so.0"
reloc_jmpslot: *0x8027a0820 = 0x8030c6480"g_type_class_peek_parent" in "libdbusmenu-glib.so.4" ==> 0x802fbaf60 in "libgobject-2.0.so.0"
"g_type_check_class_cast" in "libdbusmenu-glib.so.4" ==> 0x802fbc710 in "libgobject-2.0.so.0"
"g_type_class_add_private" in "libdbusmenu-glib.so.4" ==> 0x802fbd4b0 in "libgobject-2.0.so.0"
"g_signal_new" in "libdbusmenu-glib.so.4" ==> 0x802faf090 in "libgobject-2.0.so.0"
"g_param_spec_string" in "libdbusmenu-glib.so.4" ==> 0x802fad850 in "libgobject-2.0.so.0"
"g_object_class_install_property" in "libdbusmenu-glib.so.4" ==> 0x802fa3370 in "libgobject-2.0.so.0"
"dbusmenu_menuitem_get_type" in "libdbusmenu-glib.so.4" ==> 0x819098c90 in "libdbusmenu-glib.so.4"
"g_param_spec_object" in "libdbusmenu-glib.so.4" ==> 0x802fadaf0 in "libgobject-2.0.so.0"
"g_param_spec_uint" in "libdbusmenu-glib.so.4" ==> 0x802fad2c0 in "libgobject-2.0.so.0"
"dbusmenu_text_direction_get_type" in "libdbusmenu-glib.so.4" ==> 0x819098990 in "libdbusmenu-glib.so.4"
"g_enum_register_static" in "libdbusmenu-glib.so.4" ==> 0x802fa0600 in "libgobject-2.0.so.0"
"g_param_spec_enum" in "libdbusmenu-glib.so.4" ==> 0x802fad580 in "libgobject-2.0.so.0"
"dbusmenu_status_get_type" in "libdbusmenu-glib.so.4" ==> 0x819098b10 in "libdbusmenu-glib.so.4"
"g_dbus_node_info_new_for_xml" in "libdbusmenu-glib.so.4" ==> 0x802ded2b0 in "libgio-2.0.so.0"
"g_dbus_node_info_lookup_interface" in "libdbusmenu-glib.so.4" ==> 0x802deeca0 in "libgio-2.0.so.0"
"g_type_instance_get_private" in "libdbusmenu-glib.so.4" ==> 0x802fbda40 in "libgobject-2.0.so.0"
"g_type_check_instance_cast" in "libdbusmenu-glib.so.4" ==> 0x802fbc410 in "libgobject-2.0.so.0"
"g_hash_table_new_full" in "libdbusmenu-glib.so.4" ==> 0x803093580 in "libglib-2.0.so.0"
"g_getenv" in "libdbusmenu-glib.so.4" ==> 0x80308ff30 in "libglib-2.0.so.0"
"g_dpgettext" in "libdbusmenu-glib.so.4" ==> 0x8030931c0 in "libglib-2.0.so.0"
"g_strcmp0" in "libdbusmenu-glib.so.4" ==> 0x8030cda40 in "libglib-2.0.so.0"
"g_value_dup_string" in "libdbusmenu-glib.so.4" ==> 0x802fc4c80 in "libgobject-2.0.so.0"
"g_cancellable_new" in "libdbusmenu-glib.so.4" ==> 0x802d19b60 in "libgio-2.0.so.0"
reloc_jmpslot: *0x8027a0ee0 = 0x802fc4450"g_object_ref" in "libdbusmenu-glib.so.4" ==> 0x802fa3d60 in "libgobject-2.0.so.0"
"g_bus_get" in "libdbusmenu-glib.so.4" ==> 0x802dd6840 in "libgio-2.0.so.0"
"g_param_spec_int" in "libdbusmenu-glib.so.4" ==> 0x802fad240 in "libgobject-2.0.so.0"
"g_value_type_transformable" in "libdbusmenu-glib.so.4" ==> 0x802fc1410 in "libgobject-2.0.so.0"
"g_value_register_transform_func" in "libdbusmenu-glib.so.4" ==> 0x802fc1160 in "libgobject-2.0.so.0"
"dbusmenu_defaults_ref_default" in "libdbusmenu-glib.so.4" ==> 0x819098120 in "libdbusmenu-glib.so.4"
"g_variant_new_boolean" in "libdbusmenu-glib.so.4" ==> 0x8030e4630 in "libglib-2.0.so.0"
"dbusmenu_defaults_default_set" in "libdbusmenu-glib.so.4" ==> 0x819098200 in "libdbusmenu-glib.so.4"
"g_hash_table_lookup" in "libdbusmenu-glib.so.4" ==> 0x803094280 in "libglib-2.0.so.0"
"g_strdup" in "libdbusmenu-glib.so.4" ==> 0x8030c8190 in "libglib-2.0.so.0"reloc_jmpslot: *0x802f70040 = 0x8030b8270
"g_malloc0" in "libdbusmenu-glib.so.4" ==> 0x8030aeb60 in "libglib-2.0.so.0"
"g_variant_type_copy" in "libdbusmenu-glib.so.4" ==> 0x8030f57a0 in "libglib-2.0.so.0"
"g_variant_ref_sink" in "libdbusmenu-glib.so.4" ==> 0x8030ed410 in "libglib-2.0.so.0"
"g_hash_table_insert" in "libdbusmenu-glib.so.4" ==> 0x8030945d0 in "libglib-2.0.so.0"
"g_hash_table_replace" in "libdbusmenu-glib.so.4" ==> 0x803094750 in "libglib-2.0.so.0"
"g_dgettext" in "libdbusmenu-glib.so.4" ==> 0x803093100 in "libglib-2.0.so.0"
"g_variant_new_string" in "libdbusmenu-glib.so.4" ==> 0x8030e64d0 in "libglib-2.0.so.0"
"g_variant_type_checked_" in "libdbusmenu-glib.so.4" ==> 0x8030f5a00 in "libglib-2.0.so.0"
"g_object_add_weak_pointer" in "libdbusmenu-glib.so.4" ==> 0x802fa7450 in "libgobject-2.0.so.0"reloc_jmpslot: *0x8027a2b50 = 0x802f47330
"g_value_get_int" in "libdbusmenu-glib.so.4" ==> 0x802fc44f0 in "libgobject-2.0.so.0"
"g_value_init" in "libdbusmenu-glib.so.4" ==> 0x802fc08a0 in "libgobject-2.0.so.0"
"g_value_set_object" in "libdbusmenu-glib.so.4" ==> 0x802fa7fa0 in "libgobject-2.0.so.0"
"g_object_set_property" in "libdbusmenu-glib.so.4" ==> 0x802fa65c0 in "libgobject-2.0.so.0"
"g_value_get_object" in "libdbusmenu-glib.so.4" ==> 0x802fa8160 in "libgobject-2.0.so.0"
"dbusmenu_menuitem_get_id" in "libdbusmenu-glib.so.4" ==> 0x819098dd0 in "libdbusmenu-glib.so.4"
"g_object_get_property" in "libdbusmenu-glib.so.4" ==> 0x802fa6610 in "libgobject-2.0.so.0"
"dbusmenu_menuitem_get_root" in "libdbusmenu-glib.so.4" ==> 0x81909a7b0 in "libdbusmenu-glib.so.4"
"g_value_set_int" in "libdbusmenu-glib.so.4" ==> 0x802fc44a0 in "libgobject-2.0.so.0"
"dbusmenu_menuitem_get_children" in "libdbusmenu-glib.so.4" ==> 0x8190990d0 in "libdbusmenu-glib.so.4"
"dbusmenu_menuitem_set_root" in "libdbusmenu-glib.so.4" ==> 0x81909b600 in "libdbusmenu-glib.so.4"
"dbusmenu_menuitem_foreach" in "libdbusmenu-glib.so.4" ==> 0x81909b970 in "libdbusmenu-glib.so.4"
"g_signal_connect_data" in "libdbusmenu-glib.so.4" ==> 0x802fb2190 in "libgobject-2.0.so.0"
"g_list_foreach" in "libdbusmenu-glib.so.4" ==> 0x8030a22f0 in "libglib-2.0.so.0"
"dbusmenu_menuitem_properties_list" in "libdbusmenu-glib.so.4" ==> 0x81909b150 in "libdbusmenu-glib.so.4"
"g_hash_table_get_keys" in "libdbusmenu-glib.so.4" ==> 0x803095b90 in "libglib-2.0.so.0"
"g_list_free" in "libdbusmenu-glib.so.4" ==> 0x8030a2260 in "libglib-2.0.so.0"
"g_idle_add" in "libdbusmenu-glib.so.4" ==> 0x8030a92d0 in "libglib-2.0.so.0"
"g_object_unref" in "libdbusmenu-glib.so.4" ==> 0x802fa3e60 in "libgobject-2.0.so.0"
"g_bus_get_finish" in "libdbusmenu-glib.so.4" ==> 0x802dd6a00 in "libgio-2.0.so.0"
"g_dbus_connection_signal_subscribe" in "libdbusmenu-glib.so.4" ==> 0x802dd39b0 in "libgio-2.0.so.0"
"g_dbus_connection_register_object" in "libdbusmenu-glib.so.4" ==> 0x802dd4510 in "libgio-2.0.so.0""__error" in "libgtk-3.so.0" ==> 0x80143d730 in "libc.so.7"
"g_signal_emit" in "libdbusmenu-glib.so.4" ==> 0x802fb5a90 in "libgobject-2.0.so.0"
"g_variant_new" in "libdbusmenu-glib.so.4" ==> 0x8030ea9d0 in "libglib-2.0.so.0"
"g_dbus_connection_emit_signal" in "libdbusmenu-glib.so.4" ==> 0x802dd5360 in "libgio-2.0.so.0"reloc_jmpslot: *0x8027a09d0 = 0x8030aeb00
"dbusmenu_menuitem_property_set_variant" in "libdbusmenu-glib.so.4" ==> 0x81909a8e0 in "libdbusmenu-glib.so.4"
"g_utf8_validate" in "libdbusmenu-glib.so.4" ==> 0x8030dd0b0 in "libglib-2.0.so.0"
"dbusmenu_defaults_default_get_type" in "libdbusmenu-glib.so.4" ==> 0x819098540 in "libdbusmenu-glib.so.4"
"g_variant_is_of_type" in "libdbusmenu-glib.so.4" ==> 0x8030e4730 in "libglib-2.0.so.0"
"dbusmenu_defaults_default_get" in "libdbusmenu-glib.so.4" ==> 0x819098460 in "libdbusmenu-glib.so.4"
"g_variant_equal" in "libdbusmenu-glib.so.4" ==> 0x8030e8420 in "libglib-2.0.so.0"
"g_hash_table_lookup_extended" in "libdbusmenu-glib.so.4" ==> 0x8030943f0 in "libglib-2.0.so.0"
"g_list_find" in "libdbusmenu-glib.so.4" ==> 0x8030a2c80 in "libglib-2.0.so.0"
"dbusmenu_menuitem_set_parent" in "libdbusmenu-glib.so.4" ==> 0x819099930 in "libdbusmenu-glib.so.4"
"dbusmenu_menuitem_property_exist" in "libdbusmenu-glib.so.4" ==> 0x819099aa0 in "libdbusmenu-glib.so.4"
"g_list_append" in "libdbusmenu-glib.so.4" ==> 0x8030a2330 in "libglib-2.0.so.0"
"g_list_length" in "libdbusmenu-glib.so.4" ==> 0x8030a2db0 in "libglib-2.0.so.0"
"g_variant_unref" in "libdbusmenu-glib.so.4" ==> 0x8030ed270 in "libglib-2.0.so.0"
"g_value_peek_pointer" in "libdbusmenu-glib.so.4" ==> 0x802fc0cd0 in "libgobject-2.0.so.0"
"g_array_new" in "libdbusmenu-glib.so.4" ==> 0x80306fce0 in "libglib-2.0.so.0"
"g_array_append_vals" in "libdbusmenu-glib.so.4" ==> 0x803070100 in "libglib-2.0.so.0"
"dbusmenu_menuitem_property_is_default" in "libdbusmenu-glib.so.4" ==> 0x81909bdf0 in "libdbusmenu-glib.so.4"
"g_value_set_string" in "libdbusmenu-glib.so.4" ==> 0x802fc49c0 in "libgobject-2.0.so.0"
"gtk_settings_get_type" in "libappmenu-gtk-module.so" ==> 0x802669ec0 in "libgtk-3.so.0"
"g_object_class_find_property" in "libappmenu-gtk-module.so" ==> 0x802fa38b0 in "libgobject-2.0.so.0"
"g_type_check_instance_is_fundamentally_a" in "libappmenu-gtk-module.so" ==> 0x802fbc300 in "libgobject-2.0.so.0"
"g_settings_get_boolean" in "libappmenu-gtk-module.so" ==> 0x802dc3f40 in "libgio-2.0.so.0"
"g_object_set" in "libappmenu-gtk-module.so" ==> 0x802fa63e0 in "libgobject-2.0.so.0"
"g_bus_watch_name" in "libappmenu-gtk-module.so" ==> 0x802de4180 in "libgio-2.0.so.0"
"unity_gtk_menu_shell_set_debug" in "libappmenu-gtk-module.so" ==> 0x80d173100 in "libappmenu-gtk3-parser.so.0"
"unity_gtk_action_group_set_debug" in "libappmenu-gtk-module.so" ==> 0x80d16f5f0 in "libappmenu-gtk3-parser.so.0"
"gtk_widget_get_type" in "libappmenu-gtk-module.so" ==> 0x80272f1b0 in "libgtk-3.so.0"
"g_type_class_ref" in "libappmenu-gtk-module.so" ==> 0x802fb7a30 in "libgobject-2.0.so.0"
"gtk_application_window_get_type" in "libappmenu-gtk-module.so" ==> 0x80248e130 in "libgtk-3.so.0"
"gtk_window_get_type" in "libappmenu-gtk-module.so" ==> 0x802748c20 in "libgtk-3.so.0"
"g_type_children" in "libappmenu-gtk-module.so" ==> 0x802fbb990 in "libgobject-2.0.so.0"
"g_free" in "libappmenu-gtk-module.so" ==> 0x8030aec20 in "libglib-2.0.so.0"
reloc_jmpslot: *0x80b2f9490 = 0x802838250"gtk_menu_bar_get_type" in "libappmenu-gtk-module.so" ==> 0x8025df830 in "libgtk-3.so.0"
"g_type_check_instance_cast" in "libappmenu-gtk3-parser.so.0" ==> 0x802fbc410 in "libgobject-2.0.so.0""_ZNKSt3__18ios_base6getlocEv" in "libxul.so" ==> 0x8011c3ef0 in "libc++.so.1""poll" in "libnspr4.so" ==> 0x8013109d0 in "libc.so.7"
"g_hash_table_size" in "libappmenu-gtk3-parser.so.0" ==> 0x803095b60 in "libglib-2.0.so.0"
"g_malloc_n" in "libappmenu-gtk3-parser.so.0" ==> 0x8030aecb0 in "libglib-2.0.so.0"
"g_hash_table_iter_init" in "libappmenu-gtk3-parser.so.0" ==> 0x803093630 in "libglib-2.0.so.0"
"g_log" in "libappmenu-gtk-module.so" ==> 0x8030af520 in "libglib-2.0.so.0"
loading "/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so"
/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so valid_hash_sysv 1 valid_hash_gnu 1 dynsymcount 122
  0x80d173000 .. 0x80d17dfff: /usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so
 Searching for "libappmenu-gtk3-parser.so.0"
lm_find("/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so", "/usr/local/lib/firefox")
lmp_find("/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so")
  Trying "/usr/local/lib/firefox/libappmenu-gtk3-parser.so.0"
  Failed to open "/usr/local/lib/firefox/libappmenu-gtk3-parser.so.0": No such file or directory
lm_find("/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so", "/usr/local/lib")
lmp_find("/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so")
  Trying "/usr/local/lib/libappmenu-gtk3-parser.so.0"
  Opened "/usr/local/lib/libappmenu-gtk3-parser.so.0", fd 11
loading "/usr/local/lib/libappmenu-gtk3-parser.so.0"
/usr/local/lib/libappmenu-gtk3-parser.so.0 valid_hash_sysv 1 valid_hash_gnu 1 dynsymcount 170
  0x80d17e000 .. 0x80d191fff: /usr/local/lib/libappmenu-gtk3-parser.so.0
relocating "/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so"
relocating "/usr/local/lib/libappmenu-gtk3-parser.so.0"
calling init function for /usr/local/lib/libappmenu-gtk3-parser.so.0 at 0x80d18e4e8
calling init function for /usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so at 0x80d179b38
"g_getenv" in "libappmenu-gtk-module.so" ==> 0x80308ff30 in "libglib-2.0.so.0"
"gdk_display_get_default" in "libappmenu-gtk-module.so" ==> 0x8028395c0 in "libgdk-3.so.0"
"gdk_x11_display_get_type" in "libappmenu-gtk-module.so" ==> 0x8028674b0 in "libgdk-3.so.0"
"g_ascii_strcasecmp" in "libappmenu-gtk-module.so" ==> 0x8030c9090 in "libglib-2.0.so.0"
"g_get_prgname" in "libappmenu-gtk-module.so" ==> 0x8030e2b30 in "libglib-2.0.so.0"
"g_strcmp0" in "libappmenu-gtk-module.so" ==> 0x8030cda40 in "libglib-2.0.so.0"
"g_settings_new" in "libappmenu-gtk-module.so" ==> 0x802dc2640 in "libgio-2.0.so.0"
"g_settings_get_value" in "libappmenu-gtk-module.so" ==> 0x802dc2ae0 in "libgio-2.0.so.0"
"g_variant_type_checked_" in "libappmenu-gtk-module.so" ==> 0x8030f5a00 in "libglib-2.0.so.0"
"g_variant_is_of_type" in "libappmenu-gtk-module.so" ==> 0x8030e4730 in "libglib-2.0.so.0"
"g_variant_iter_init" in "libappmenu-gtk-module.so" ==> 0x8030e5eb0 in "libglib-2.0.so.0"
"g_variant_iter_loop" in "libappmenu-gtk-module.so" ==> 0x8030ebfe0 in "libglib-2.0.so.0"
"g_object_unref" in "libappmenu-gtk-module.so" ==> 0x802fa3e60 in "libgobject-2.0.so.0"
"g_variant_unref" in "libappmenu-gtk-module.so" ==> 0x8030ed270 in "libglib-2.0.so.0"
"g_bus_get_sync" in "libappmenu-gtk-module.so" ==> 0x802dd6690 in "libgio-2.0.so.0"
"g_dbus_connection_call_sync" in "libappmenu-gtk-module.so" ==> 0x802dd5bd0 in "libgio-2.0.so.0"
"g_variant_get_child_value" in "libappmenu-gtk-module.so" ==> 0x8030ed900 in "libglib-2.0.so.0"
"g_variant_get" in "libappmenu-gtk-module.so" ==> 0x8030eb430 in "libglib-2.0.so.0"
"g_str_equal" in "libappmenu-gtk-module.so" ==> 0x803095d80 in "libglib-2.0.so.0""g_dbus_connection_call_finish" in "libdconfsettings.so" ==> 0x802dd5aa0 in "libgio-2.0.so.0"
"g_variant_iter_free" in "libappmenu-gtk-module.so" ==> 0x8030e8940 in "libglib-2.0.so.0"
"gtk_settings_get_default" in "libappmenu-gtk-module.so" ==> 0x80266a690 in "libgtk-3.so.0"
"gtk_settings_get_type" in "libappmenu-gtk-module.so" ==> 0x802669ec0 in "libgtk-3.so.0"
"g_object_class_find_property" in "libappmenu-gtk-module.so" ==> 0x802fa38b0 in "libgobject-2.0.so.0"
"g_type_check_instance_is_fundamentally_a" in "libappmenu-gtk-module.so" ==> 0x802fbc300 in "libgobject-2.0.so.0"
"g_settings_get_boolean" in "libappmenu-gtk-module.so" ==> 0x802dc3f40 in "libgio-2.0.so.0"
"g_object_set" in "libappmenu-gtk-module.so" ==> 0x802fa63e0 in "libgobject-2.0.so.0"
"g_bus_watch_name" in "libappmenu-gtk-module.so" ==> 0x802de4180 in "libgio-2.0.so.0"
"unity_gtk_menu_shell_set_debug" in "libappmenu-gtk-module.so" ==> 0x80d18a100 in "libappmenu-gtk3-parser.so.0"
"unity_gtk_action_group_set_debug" in "libappmenu-gtk-module.so" ==> 0x80d1865f0 in "libappmenu-gtk3-parser.so.0"
"gtk_widget_get_type" in "libappmenu-gtk-module.so" ==> 0x80272f1b0 in "libgtk-3.so.0"
"g_type_class_ref" in "libappmenu-gtk-module.so" ==> 0x802fb7a30 in "libgobject-2.0.so.0"
"gtk_application_window_get_type" in "libappmenu-gtk-module.so" ==> 0x80248e130 in "libgtk-3.so.0"
"gtk_window_get_type" in "libappmenu-gtk-module.so" ==> 0x802748c20 in "libgtk-3.so.0"
"g_type_children" in "libappmenu-gtk-module.so" ==> 0x802fbb990 in "libgobject-2.0.so.0"
"g_free" in "libappmenu-gtk-module.so" ==> 0x8030aec20 in "libglib-2.0.so.0"
"gtk_menu_bar_get_type" in "libappmenu-gtk-module.so" ==> 0x8025df830 in "libgtk-3.so.0"
"g_log" in "libappmenu-gtk-module.so" ==> 0x8030af520 in "libglib-2.0.so.0"
"g_value_set_enum" in "libdbusmenu-glib.so.4" ==> 0x802fa1120 in "libgobject-2.0.so.0"
"g_value_get_enum" in "libdbusmenu-glib.so.4" ==> 0x802fa1180 in "libgobject-2.0.so.0"
"g_value_unset" in "libdbusmenu-glib.so.4" ==> 0x802fc0c10 in "libgobject-2.0.so.0"
"g_object_set_qdata" in "libappmenu-gtk-module.so" ==> 0x802fa79a0 in "libgobject-2.0.so.0"
"g_dbus_connection_unexport_action_group" in "libappmenu-gtk-module.so" ==> 0x802dafc10 in "libgio-2.0.so.0"
"g_dbus_connection_unexport_menu_model" in "libappmenu-gtk-module.so" ==> 0x802db6e40 in "libgio-2.0.so.0"
"g_slice_free1" in "libappmenu-gtk-module.so" ==> 0x8030c6480 in "libglib-2.0.so.0"
"g_hash_table_unref" in "libappmenu-gtk3-parser.so.0" ==> 0x803093f10 in "libglib-2.0.so.0"
"dbusmenu_menuitem_exposed" in "libdbusmenu-glib.so.4" ==> 0x81909bed0 in "libdbusmenu-glib.so.4"
"g_variant_parse" in "libdbusmenu-glib.so.4" ==> 0x8030edef0 in "libglib-2.0.so.0"
  0x803897000 .. 0x8039effff: /usr/local/lib/libdav1d.so.5"g_free" in "libdbusmenu-glib.so.4" ==> 0x8030aec20 in "libglib-2.0.so.0"
"g_array_free" in "libdbusmenu-glib.so.4" ==> 0x803070020 in "libglib-2.0.so.0"
loading "/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so"
/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so valid_hash_sysv 1 valid_hash_gnu 1 dynsymcount 122
  0x80d173000 .. 0x80d17dfff: /usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so
 Searching for "libappmenu-gtk3-parser.so.0"
lm_find("/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so", "/usr/local/lib/firefox")
lmp_find("/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so")
  Trying "/usr/local/lib/firefox/libappmenu-gtk3-parser.so.0"
  Failed to open "/usr/local/lib/firefox/libappmenu-gtk3-parser.so.0": No such file or directory
lm_find("/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so", "/usr/local/lib")
lmp_find("/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so")
  Trying "/usr/local/lib/libappmenu-gtk3-parser.so.0"
  Opened "/usr/local/lib/libappmenu-gtk3-parser.so.0", fd 11
loading "/usr/local/lib/libappmenu-gtk3-parser.so.0"
/usr/local/lib/libappmenu-gtk3-parser.so.0 valid_hash_sysv 1 valid_hash_gnu 1 dynsymcount 170
  0x80d17e000 .. 0x80d191fff: /usr/local/lib/libappmenu-gtk3-parser.so.0
relocating "/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so"
relocating "/usr/local/lib/libappmenu-gtk3-parser.so.0"
calling init function for /usr/local/lib/libappmenu-gtk3-parser.so.0 at 0x80d18e4e8
calling init function for /usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so at 0x80d179b38
"g_getenv" in "libappmenu-gtk-module.so" ==> 0x80308ff30 in "libglib-2.0.so.0"
"gdk_display_get_default" in "libappmenu-gtk-module.so" ==> 0x8028395c0 in "libgdk-3.so.0"
"gdk_x11_display_get_type" in "libappmenu-gtk-module.so" ==> 0x8028674b0 in "libgdk-3.so.0"
"g_ascii_strcasecmp" in "libappmenu-gtk-module.so" ==> 0x8030c9090 in "libglib-2.0.so.0"
"g_get_prgname" in "libappmenu-gtk-module.so" ==> 0x8030e2b30 in "libglib-2.0.so.0"
"g_strcmp0" in "libappmenu-gtk-module.so" ==> 0x8030cda40 in "libglib-2.0.so.0"
"g_settings_new" in "libappmenu-gtk-module.so" ==> 0x802dc2640 in "libgio-2.0.so.0"
"g_settings_get_value" in "libappmenu-gtk-module.so" ==> 0x802dc2ae0 in "libgio-2.0.so.0"
"g_variant_type_checked_" in "libappmenu-gtk-module.so" ==> 0x8030f5a00 in "libglib-2.0.so.0"
"g_variant_is_of_type" in "libappmenu-gtk-module.so" ==> 0x8030e4730 in "libglib-2.0.so.0"
"g_variant_iter_init" in "libappmenu-gtk-module.so" ==> 0x8030e5eb0 in "libglib-2.0.so.0"
"g_variant_iter_loop" in "libappmenu-gtk-module.so" ==> 0x8030ebfe0 in "libglib-2.0.so.0"
"g_object_unref" in "libappmenu-gtk-module.so" ==> 0x802fa3e60 in "libgobject-2.0.so.0"
"g_variant_unref" in "libappmenu-gtk-module.so" ==> 0x8030ed270 in "libglib-2.0.so.0"
"g_bus_get_sync" in "libappmenu-gtk-module.so" ==> 0x802dd6690 in "libgio-2.0.so.0"
"g_dbus_connection_call_sync" in "libappmenu-gtk-module.so" ==> 0x802dd5bd0 in "libgio-2.0.so.0"
"g_variant_get_child_value" in "libappmenu-gtk-module.so" ==> 0x8030ed900 in "libglib-2.0.so.0"
"g_variant_get" in "libappmenu-gtk-module.so" ==> 0x8030eb430 in "libglib-2.0.so.0"
"g_str_equal" in "libappmenu-gtk-module.so" ==> 0x803095d80 in "libglib-2.0.so.0"
"g_variant_iter_free" in "libappmenu-gtk-module.so" ==> 0x8030e8940 in "libglib-2.0.so.0"
"gtk_settings_get_default" in "libappmenu-gtk-module.so" ==> 0x80266a690 in "libgtk-3.so.0"
"gtk_settings_get_type" in "libappmenu-gtk-module.so" ==> 0x802669ec0 in "libgtk-3.so.0"
"g_object_class_find_property" in "libappmenu-gtk-module.so" ==> 0x802fa38b0 in "libgobject-2.0.so.0"
"g_type_check_instance_is_fundamentally_a" in "libappmenu-gtk-module.so" ==> 0x802fbc300 in "libgobject-2.0.so.0"
"g_settings_get_boolean" in "libappmenu-gtk-module.so" ==> 0x802dc3f40 in "libgio-2.0.so.0"
"g_object_set" in "libappmenu-gtk-module.so" ==> 0x802fa63e0 in "libgobject-2.0.so.0"
"g_bus_watch_name" in "libappmenu-gtk-module.so" ==> 0x802de4180 in "libgio-2.0.so.0"
"unity_gtk_menu_shell_set_debug" in "libappmenu-gtk-module.so" ==> 0x80d18a100 in "libappmenu-gtk3-parser.so.0"
"unity_gtk_action_group_set_debug" in "libappmenu-gtk-module.so" ==> 0x80d1865f0 in "libappmenu-gtk3-parser.so.0"
"gtk_widget_get_type" in "libappmenu-gtk-module.so" ==> 0x80272f1b0 in "libgtk-3.so.0"
"g_type_class_ref" in "libappmenu-gtk-module.so" ==> 0x802fb7a30 in "libgobject-2.0.so.0"
"gtk_application_window_get_type" in "libappmenu-gtk-module.so" ==> 0x80248e130 in "libgtk-3.so.0"
"gtk_window_get_type" in "libappmenu-gtk-module.so" ==> 0x802748c20 in "libgtk-3.so.0"
"g_type_children" in "libappmenu-gtk-module.so" ==> 0x802fbb990 in "libgobject-2.0.so.0"
"g_free" in "libappmenu-gtk-module.so" ==> 0x8030aec20 in "libglib-2.0.so.0"
"gtk_menu_bar_get_type" in "libappmenu-gtk-module.so" ==> 0x8025df830 in "libgtk-3.so.0"
"g_log" in "libappmenu-gtk-module.so" ==> 0x8030af520 in "libglib-2.0.so.0"
"dbusmenu_menuitem_get_parent" in "libdbusmenu-glib.so.4" ==> 0x819099fe0 in "libdbusmenu-glib.so.4"
"g_list_remove" in "libdbusmenu-glib.so.4" ==> 0x8030a27f0 in "libglib-2.0.so.0"
"dbusmenu_menuitem_unparent" in "libdbusmenu-glib.so.4" ==> 0x81909a0b0 in "libdbusmenu-glib.so.4"
"g_object_remove_weak_pointer" in "libdbusmenu-glib.so.4" ==> 0x802fa74c0 in "libgobject-2.0.so.0"
"g_signal_handlers_disconnect_matched" in "libdbusmenu-glib.so.4" ==> 0x802fb3790 in "libgobject-2.0.so.0"
"g_hash_table_remove" in "libdbusmenu-glib.so.4" ==> 0x803094ba0 in "libglib-2.0.so.0"
"dbusmenu_menuitem_property_remove" in "libdbusmenu-glib.so.4" ==> 0x819099370 in "libdbusmenu-glib.so.4"
"g_hash_table_steal" in "libdbusmenu-glib.so.4" ==> 0x803094d90 in "libglib-2.0.so.0"
"g_hash_table_destroy" in "libdbusmenu-glib.so.4" ==> 0x8030941d0 in "libglib-2.0.so.0"
probonopd commented 3 years ago

I hate it when software tries to outsmart you and refuses to run as root!

% sudo truss firefox 2>&1 | grep -e menu  

# Does not work, because:

% sudo firefox
Running Firefox as root in a regular user's session is not supported.  ($XAUTHORITY is /home/user/.Xauthority which is owned by user.)
probonopd commented 3 years ago

Thanks @crees for pointing out that one can run truss as non-root after one does sysctl security.bsd.unprivileged_proc_debug=1. So here we go:

% truss firefox 2>&1 | grep -e menu 
access("/usr/local/lib/gtk-3.0/3.0.0/amd64-portbld-freebsd12.1/modules/libappmenu-gtk-module.so",F_OK) ERR#2 'No such file or directory'
access("/usr/local/lib/gtk-3.0/3.0.0/amd64-portbld-freebsd12.1/modules/libappmenu-gtk-module.la",F_OK) ERR#2 'No such file or directory'
access("/usr/local/lib/gtk-3.0/3.0.0/modules/libappmenu-gtk-module.so",F_OK) ERR#2 'No such file or directory'
access("/usr/local/lib/gtk-3.0/3.0.0/modules/libappmenu-gtk-module.la",F_OK) ERR#2 'No such file or directory'
access("/usr/local/lib/gtk-3.0/amd64-portbld-freebsd12.1/modules/libappmenu-gtk-module.so",F_OK) ERR#2 'No such file or directory'
access("/usr/local/lib/gtk-3.0/amd64-portbld-freebsd12.1/modules/libappmenu-gtk-module.la",F_OK) ERR#2 'No such file or directory'
access("/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so",F_OK) = 0 (0x0)
fstatat(AT_FDCWD,"/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so",{ mode=-rwxr-xr-x ,inode=146910,size=39552,blksize=39936 },0x0) = 0 (0x0)
openat(AT_FDCWD,"/usr/local/lib/gtk-3.0/modules/libappmenu-gtk-module.so",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 5 (0x5)
openat(AT_FDCWD,"/usr/local/lib/libappmenu-gtk3-parser.so.0",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 5 (0x5)
read(15,"[Settings]\ngtk-modules=appmenu-"...,4096) = 68 (0x44)
openat(AT_FDCWD,"/lib/libdbusmenu-glib.so.4",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/libdbusmenu-glib.so.4",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/compat/libdbusmenu-glib.so.4",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/lib/libdbusmenu-glib.so.4",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 42 (0x2a)
openat(AT_FDCWD,"/lib/libdbusmenu-gtk3.so.4",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/libdbusmenu-gtk3.so.4",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/lib/compat/libdbusmenu-gtk3.so.4",O_RDONLY|O_CLOEXEC|O_VERIFY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/lib/libdbusmenu-gtk3.so.4",O_RDONLY|O_CLOEXEC|O_VERIFY,00) = 42 (0x2a)
openat(AT_FDCWD,"/usr/local/share/locale/de_DE.UTF-8/LC_MESSAGES/libdbusmenu.mo",O_RDONLY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/share/locale/de_DE.utf8/LC_MESSAGES/libdbusmenu.mo",O_RDONLY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/share/locale/de_DE/LC_MESSAGES/libdbusmenu.mo",O_RDONLY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/share/locale/de.UTF-8/LC_MESSAGES/libdbusmenu.mo",O_RDONLY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/share/locale/de.utf8/LC_MESSAGES/libdbusmenu.mo",O_RDONLY,00) ERR#2 'No such file or directory'
openat(AT_FDCWD,"/usr/local/share/locale/de/LC_MESSAGES/libdbusmenu.mo",O_RDONLY,00) ERR#2 'No such file or directory'
recvmsg(11,{NULL,0,[{"\^A\^Ao\0\^Y\0\0\0/org/appmenu/g"...,120}],1,{},0,0x40000},0x40000) = 120 (0x78)
recvmsg(11,{NULL,0,[{"\^A\^Ao\0\^Y\0\0\0/org/appmenu/g"...,128}],1,{},0,0x40000},0x40000) = 128 (0x80)
probonopd commented 3 years ago

Maybe we need to run the Linux equivalents of those debugging commands on a Linux system on which the global menu is working; possibly we can learn something from the comparison.

probonopd commented 3 years ago

https://github.com/airyxos/Firefox_app/ patched by @mszoek works with the latest patch for Menu by @jsm222:

image

The extra "!Firefox" menu comes from https://github.com/airyxos/Firefox_app/, so we need to either get the global menu patch upstreamed into the Firefox Port (which would be the best thing), or we need to build Firefox ourselves.

I tried building Firefox on Cirrus CI and from how I read the logs the build "almost" succeeded but not quite: https://cirrus-ci.com/task/5185344850100224?logs=main#L9174