You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
With the work in #414, we're going to need to expose handles to server-side objects. The tasklist (and perhaps decorations) will need some form of ForeignToplevelHandle, and workspaces will need ExtWorkspaceHandles, names up for bikeshedding.
Currently, Pinnacle uses a pull-based API for all handles, with signals providing push-based information updates. I am considering a more push-based event stream to implement Snowcap handles with an eye towards maybe moving the Pinnacle API to something similar. This would be similar to event streams implemented in niri and hyprland—a single stream from which all object creation, update, and destruction events flow through. Currently with Pinnacle there are a bunch of different RPCs for single properties and I believe consolidating everything under a single source of truth is better long-term.
To implement this, I propose a single EventStream RPC:
This makes the update message look a little funky, especially when dealing with setting explicit nulls, but this isn't a dealbreaker.
We could also do a more Wayland-style approach and have Created just supply the identifier and split all of the fields of Update into their own message. I'm not sure how good of an idea that is.
I'm not sure if we should also roll in all the other stream-type RPCs we have like widget events and the recently-merged layer and popup events.
With the work in #414, we're going to need to expose handles to server-side objects. The tasklist (and perhaps decorations) will need some form of
ForeignToplevelHandle, and workspaces will needExtWorkspaceHandles, names up for bikeshedding.Currently, Pinnacle uses a pull-based API for all handles, with signals providing push-based information updates. I am considering a more push-based event stream to implement Snowcap handles with an eye towards maybe moving the Pinnacle API to something similar. This would be similar to event streams implemented in niri and hyprland—a single stream from which all object creation, update, and destruction events flow through. Currently with Pinnacle there are a bunch of different RPCs for single properties and I believe consolidating everything under a single source of truth is better long-term.
To implement this, I propose a single
EventStreamRPC:Each handle has its own create, update, and destroy messages.
However, there are a few questions that need answering:
What exactly should those messages look like?
A rough translation of the create, update, and destroy events initially implemented in Snowcap: Add WlrTaskList support #415 is this:
This makes the update message look a little funky, especially when dealing with setting explicit nulls, but this isn't a dealbreaker.
We could also do a more Wayland-style approach and have
Createdjust supply the identifier and split all of the fields ofUpdateinto their own message. I'm not sure how good of an idea that is.I'm not sure if we should also roll in all the other stream-type RPCs we have like widget events and the recently-merged layer and popup events.
@Ph4ntomas What do you think?