helloSystem / Menu

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

Export Gtk3/Gnome hamburger menu items to global menu bar #76

Open probonopd opened 3 years ago

probonopd commented 3 years ago

Export Gtk3/Gnome hamburger menu items to the global menu bar:

image

How?

Possibly using LD_PRELOAD trickery or a custom Gtk3 theme?

kettle-7 commented 3 years ago

GTK themes are not like Qt platform themes, more like stylesheets. The question to ask is how much you want this, cause it involves forking GTK and a lot of messy C code.

kettle-7 commented 3 years ago

Actually, with that said, there are the gtk plugins like the menu one...

probonopd commented 3 years ago

Check out https://hellosystem.github.io/docs/developer/menu

There are (at least):

Mostly undocumented, at least how they all play together.

So the question is, if it can be done for "normal" Gtk menus (e.g., Inkscape, GIMP,...) why can't it be done for what is in those pesky "Hamburger" menus which Gnome seems to love so much these days (because they apparently think they are a mobile phone now).

kettle-7 commented 3 years ago

they apparently think they are a mobile phone now

They are a mobile phone. GNOME is designed as a touchscreen desktop environment.

probonopd commented 3 years ago

GNOME is designed as a touchscreen desktop environment.

Do you have a source for this? It would explain many things I am unhappy with in Gnome as a desktop environment, as I generally consider mobile devices and especially phones as unsuitable for "real work".

Most users who are running Fedora or Ubuntu (and thus Gnome by default) are using it as a desktop system. And have been since Gnome 1 (before Fedora and Ubuntu even existed).

probonopd commented 3 years ago

According to https://twitter.com/alexm_gnome/status/1448978239125430272 it is "not possible" with Gtk currently. The question is what would need to be done on the Gtk side to make it work.

Could we hook into some Gtk/Gnome function using LD_PRELOAD that would export that hamburger menu over D-Bus?

probonopd commented 3 years ago

In Gtk lingo, the "hamburger menu button" is a Gtk.MenuButton with icon-name: "open-menu-symbolic":

image (Source)

We must somehow intercept the drawing of those and export their contexts to D-Bus like "normal" Gtk menus.

This gives a first indication of what implements them:

FreeBSD% grep -r MenuButton /usr/local/lib/libg*
Binary file /usr/local/lib/libgtk-3.so matches
Binary file /usr/local/lib/libgtk-3.so.0 matches
Binary file /usr/local/lib/libgtk-3.so.0.2404.26 matches
Binary file /usr/local/lib/libgtkmm-3.0.so matches
Binary file /usr/local/lib/libgtkmm-3.0.so.1 matches
Binary file /usr/local/lib/libgtkmm-3.0.so.1.1.0 matches
probonopd commented 3 years ago

Here someone asks for the same thing but the other way around: https://www.reddit.com/r/gnome/comments/g1vw93/gtk_appmenu_to_menubutton/

No clear answer given on how to do it.

Is there a HUD DBus service under GNOME/Gtk?

probonopd commented 3 years ago

9 years ago someone wrote:

GtkMenuButton needs to export its menus to dbus for use by the HUD

https://blueprints.launchpad.net/ubuntu/+spec/desktop-r-default-file-manager

Was it ever implemented?