buffet / kiwmi

A fully programmable Wayland Compositor
Mozilla Public License 2.0
612 stars 22 forks source link

Expose wlr_scene to the config #60

Open ghost opened 2 years ago

ghost commented 2 years ago

Once #50 is merged, the next logical step is letting the config manipulate the scene: if for nothing else, at least for decorations. These are some possibilities how to do it; however, none seems ideal. Which is the least bad? Any better suggestions?

permission-wise:

api-wise:

Also, should kiwmi_view be treated like a scene node (which could be terrible kiwmi-side with some implementations), or should it have :scene_tree() (which could feel unintuitive)?

ghost commented 2 years ago

@Uks2 moving discussion from #63 to here.

We might be able to wrap that up in an output:draw_rect() lua function, with just an extra parameter for whether it goes above or below the windows. How you delete those rectangles is another matter though.

That would be pretty ugly IMO (why would you make the user draw rects ‘sometime before a view’ [exaggregating] if you place them into a nice tree) and leave out nice possibilities that the scene graph offers us: the user could organise everything in a tree without the need to keep their own state (given there would be only one source of truth, there would be less stuff to debug AFAICT), having more control and saving us some worries (although adding other).

...or we go nuts and create a whole API for drawing on wlr_buffers. :)

I believe that’s the plan – for the future, no sooner than simple rects.