elementary / dock

A quick app launcher and window switcher for Pantheon and elementary OS
https://elementary.io
GNU General Public License v3.0
88 stars 23 forks source link

Draft Dock API #145

Closed cassidyjames closed 2 years ago

cassidyjames commented 2 years ago

A desktop dev (e.g. David or Corentin?) should draft any required API that will be needed e.g. in Gala before we get too far implementation in case any problems/better designs emerge.

davidmhewitt commented 2 years ago

One note here before we go too deep into designing and implementing some Gala <-> Dock API that ties the two together and essentially stops them from being modular:

We should investigate what the current Wayland protocols are for this kind of thing and whether any of them are suitable.

None of them will be implemented in Mutter because GNOME Shell is monolithic. But there will already be some standard Wayland protocols for this kind of thing for other Wayland compositors like Sway.

So we should at least look at those (proposing changes if necessary) and the feasibility of using custom Wayland protocols in Gala.

That way, the dock could in theory be used on other compositors that implement those protocols. And alternative dock-like applications would run on Gala.

Marukesu commented 2 years ago

One note here before we go too deep into designing and implementing some Gala <-> Dock API that ties the two together and essentially stops them from being modular:

We should investigate what the current Wayland protocols are for this kind of thing and whether any of them are suitable.

there's the wlr_foreign_toplevel_manager for window management (the current alternative would be implementing the org.gnome.Shell.Introspect interface as said in #142), and wlr_layer_shell for positioning shell components surfaces (the current alternative is using the Meta.WaylandClient class to launch shell components and use that to find the components surfaces and positioning them on the desired areas).

So we should at least look at those (proposing changes if necessary) and the feasibility of using custom Wayland protocols in Gala.

there's an open issue in mutter about allowing libmutter users to implement others protocols, however, i don't think there's a way to implement custom protocols in Gtk4.

danirabbit commented 2 years ago

Before investing any time here we still need the results of the user study. From the initial data I had seen it sounds like we might not have to implement any window management features at all and users are more interested in backgrounding

cassidyjames commented 2 years ago

I agree it's too early to get into the weeds here. The UI study's not even wrapped up and we haven't aggregated and interpreted the results at all; I opened this to help plan out the overall project, but I'm marking as blocked for now while that other work is ongoing.

(Sharing what APIs and whatnot do exist is still helpful, though! That's part of the process as well.)

danirabbit commented 2 years ago

I'm going to close this in favor of a few other issues that are more scoped down to individual APIs that we'll want. A couple of them are:

https://github.com/elementary/gala/issues/1377 https://github.com/elementary/gala/issues/1317