summaryrefslogtreecommitdiffstats
path: root/protocol
AgeCommit message (Collapse)AuthorFilesLines
2024-02-22grpc-proxy/shell: Add sticky parameter when setting up split windowMarius Vlad1-0/+6
This allow to further customize how to handle the split window. There's no implementation in the compositor for allow this functionality to take place, but doing so can be at a later point in time. Tagging the split window as sticky should allow activation of other windows while keeping the split window always displayed. Bug-AGL: SPEC-4839 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Iae4d18d2a857497c11d0e77bf43f654e2b8ed501
2024-02-22grpc-proxy/shell: Add width for split windowMarius Vlad1-1/+6
It might be useful in the future to let clients choose how much of the window to split so allow passing that. Note that there's no actual implementation but if there's a need in the future it can be easily added so it's better to add this now. Bug-AGL: SPEC-4839 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I82f36e86f56b0a65cbacac8368b63f68df69a350
2024-02-22layout/shell: Add basic support for split windowMarius Vlad1-1/+72
This introduces a new set_split request to allow changing the tile orientation of the window. See the protocol XML for more implementation details. Of importance difference from the previous implementation is that this patch makes use of the xdg-shell protocol, such that orientation is being handled over the configure event to the client. The protocol specifies a width to allow the client to control how much of the output be assign the split window and also a sticky window functionality. Bug-AGL: SPEC-4839 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ia8b7d04a7514f55d647c3ea76b13bab51a3586aa
2023-08-29grpc-proxy: Add dynamic scale of floating windowsMarius Vlad1-1/+19
This adds basic scaling for floating windows, sending new dimensions to the clients to resize itself. Bug-AGL: SPEC-4862 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ic693153cd704b278dcddd2514afc8dafecf8829b
2023-08-29grpc-proxy: Add dynamic floating window movementMarius Vlad1-7/+27
This adds basic movement for floating type of windows. The window needs to be a floating type for this request to work out. For the agl-shell protocol, this adds a set_app_float() request while for gRPC it adds a SetAppPosition() request. Bug-AGL: SPEC-4863 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I5ecc4257c3e84d15a8cabb183757753be37867f5
2023-04-27grpc-proxy: Added set_app_output requestMarius Vlad1-1/+32
This is identical to the remote role, but I feel this conveys more information than remote role, as remote denotes that the output is displayed on another device, which it isn't always the case (the system has multiple outputs all connected directly). This introduces two new additions to the agl-shell protocol, a request to use a different output to display/show the application and an event to inform the shell client to use as a map between the application id and its output. The event is necessary to let the shell client know which output to activate the application on. This requests implements a wrapper for gRPC that maps 1-to-1 to the agl-shell request. There's no gRPC subscription similar to the event though. Bug-AGL: SPEC-4673 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I070e9fdbafd5616f3a98415193bf846aeaee9a4a
2023-03-03grpc-proxy: Add set_app_fullscreen functionalityMarius Vlad1-1/+22
This implements set_app_fullscreen which clients can set-up before being mapped. The worthwhile change here was the fact that transitioning between fullscreen, normal, and float would cause invalid tracking of the active window when switching between these states. This would make floating operation display the incorrect active window, so in order to reconcile that, we only update the previous surface if it is different that the current active one. Otherwise this fairly similar to set_app_float. Bug-AGL: SPEC-4673 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ie912c86ff7ac38d034cf4d97b2adbc5ef47ce9d3
2023-03-01protocol: Add set_app_normal requestMarius Vlad1-0/+9
This request allows transitioning back from other roles like float/split/fullscreen to regular maximized, normal state. Bug-AGL: SPEC-4673 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Id7f04ffee193677621bd32860998457498acc388
2023-03-01protocol, grpc-proxy: Add support for set_app_floatMarius Vlad1-1/+27
Add support for setting a window as float/popup. This allows either the application itself be set-up as float, or from other gRPC clients. Bug-AGL: SPEC-4673 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ic7ee8203cd9c4dfcc51b7fc9709f35be504ae9d0
2023-03-01protocol/grpc-proxy: Add deactivate_app requestMarius Vlad1-1/+18
This request will hide the currently active window, and activate either the background or the previously active window. This request mimics the agl-shell-desktop request, actually using the same code path. It only handles regular windows and float/pop-up. Once we add other roles like fullscreen/split we can improve on this. Bug-AGL: SPEC-4673 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I593cda5d008dfc32fe5e3b079fad9450dc1a490d
2022-12-05agl-shell.xml: Introduce a new interfaceMarius Vlad1-0/+54
In order to allow another other client bind to agl_shell interface, this introduces a new specific interface which the client would bind to first, issue a doas_shell_client request, wait for a response, and proceeed further if the event received was successful. Afterwards, the client can bind to agl_shell protocol (and assuming it got 'bound_ok' event back) can further use the agl_shell protocol as it happens with the shell client. This approach avoids adding a new protocol interface and instead re-uses the same interface, with the note that the shell client is still in charge of handling background and panels. Bug-AGL: SPEC-4503 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Iac1d840a5f917b2a92fdfbdcdc583144d3942a1c
2022-11-01agl-shell: Add support for defining an activation areaMarius Vlad1-2/+27
This introduces a new request, 'set_activate_region' that hints to the compositor to use a defined rectangle area, rather than to infer it. This is a follow-up from commit 924473ef016ba8dcfa863, 'Add manual activation area configuration option' which brough in the same feature but by using the ini configuration file. Bug-AGL: SPEC-4594 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: If9395268e68de6b0d01f04b90822e06603808299
2022-09-14protocol/agl-shell.xml: Add an app_state event -- app state notificationMarius Vlad1-1/+20
This protocol bump will notify the client binding to the agl-shell protocol when a particular application changed its state. This includes four (4) different events: - started - terminated - activated - deactivated This should allow orchestrating start-up with activation as we don't really know when it would be the proper time to activate an application when starting up (for the first time). A started event will notify the shell client we it can do that. These events are not sticky such that the shell would be responsabile for keep track of the state, if it wants to. Bug-AGL: SPEC-4528 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Id162874fa68946bb9b1db9fa356dd617a0db9eb7
2022-08-31agl-shell: Add bound_ok and bound_fail events and a default destructorMarius Vlad1-3/+46
As we're increasing the amount of combinations we could have in the AGL platforms, in which we're mixing various platforms, we require a way to tell clients that there's already a shell client which in charge. We can't really have multiple shell clients managing the windows and surfaces, but in the same time we don't want to sever the wayland connection the way it happens currently. Racy alternatives might exist, which avoid advertising the interface altogether once a client did bind to the interface but that's not really a viable solution. So instead of doing that, this patch introduces two new events which tells the client that it was either successful, and it can continue issue requests and receive events or a that it the bind failed. The client can chose to wait and try later and abandon to bind to the agl_shell intefface, and behave like a regular client. While doing an update to protocol to add those two events this patch add also a default destructor for the protocol. Bug-AGL: SPEC-4502 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Iacb86a668d1c4630724eecdb18e4b4c2d4e8e34a
2021-12-20agl-compositor: Correct several spell issues in the protocol xml filesAndyZhou3-5/+5
There are several spell issues in the protocol xml files. Modify to correct them. Bug-AGL: SPEC-4174 Signed-off-by: ZhouMingying <zhoumy@cn.fujitsu.com> Change-Id: I052a1cb4b1a0054305899a1d83e4be0fd9d03c2b
2021-12-08src/shell: Add set_app_property_mode requestMarius Vlad1-1/+21
Bug-AGL: SPEC-4133 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Iffc770e079788bb553077665169365dc7b2d901e
2021-02-17Notify about application destructionWalter Lozano1-0/+1
Currently agl-compositor notifies about application ids which can be activated/deactivated, as well as the application state. However, when an application is destroyed this information is not communicated to desktop making it out of sync with the actual list of available applications. To overcome this limitation extend the protocol and the logic to notify about application destruction on surface remove. Signed-off-by: Walter Lozano <walter.lozano@collabora.com> Change-Id: Ib766cf3f3fbd10f55b85212480dc4717ab1bec22
2020-09-30screenshooter: Add agl-screenshooter protocolMarius Vlad1-0/+84
Just like weston, we add a private protocol. Underneath we make use of the weston renderer to get a hold of the pixels and transfer them to a user-supplied buffer. This only brings up the server side implementation of the protocol. Bug-AGL: SPEC-3580 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I02a07ad5eb492ef2ecad74efb34d1453ebcbedc0
2020-06-26README: Add a few words about the deny-all policy enginejellyfish_9.99.1jellyfish/9.99.19.99.1Marius Vlad1-2/+2
Replaces the agl-shell-desktop mention that all clients can bind to the interface with a mention that that happens only if the policy engine allows. Bug-AGL: SPEC-3413 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ieb6b9df1181cb7a0ad6da09519655ebd8f73a1a5
2020-06-15agl-shell-desktop: Add the ability to pass width and height asMarius Vlad1-3/+29
area of the bounding box The width and height will represent a rectangle which can be used to define the maxium area to have the surface in. Any part of the surface area that exceeds the area delimited by this bounding box will be clipped away. The initial position of the bounding box is specified using the bx and by values. Bug-AGL: SPEC-3419 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ie24f469662dd686c49f658c415ccd2664d9a9b5b
2020-06-14src/: Add the remote surface roleMarius Vlad1-0/+1
This patch adds the 'remote' surface role, which clients can make use of to hint the compositor that it should place the surface on other output. While both private extension protocols (agl-shell and agl-shell-desktop) explicitly require a wl_output when activating or when setting surface roles, we still need the inform the compositor that the surface should be placed on another output. This is due to the activate_by_default functionality that requires having an output being present, with the default regular XDG desktop role deriving its output by using the output of the backgound surface (which is being normally set by the client shell). Just like pop-up dialog role and split surface role this patch adds another temporary hold up place before the surface is actually created. Bug-AGL: SPEC-3280 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ic67246ecc183826ae59b2c99a671885d61040249
2020-06-08shell: Introduce fullscreen and split role type of a surfaceMarius Vlad1-0/+2
With it, this also adds two pending lists, for each role type and aggregates the checks used to compare against the roles type when the surface is being created. There's no functional at this stage. Bug-AGL: SPEC-3334 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I1900399fe35d9dbc26a93c374ac2f86efa860ba6
2020-05-12protocol: agl-shell-desktop: Send notification for application state changeMarius Vlad1-0/+17
The events are sent straight after the activation took place. The state changes are the surface role (for instance, pop-up) and the activate/de-activate type of event. With that information there's also a string type of data which can be used as easy way to forward data. Note that this isn't the proper way for applications to communicate with each other, but merely as a convenient way to pass data from one application to another. In order to hang-off the data, the 'activate_app' request also got an additional argument which is relayed back with the event. Bug-AGL: SPEC-3269 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I0c9be86f6ff227b59271cac1c060563b5aac9b6c
2020-05-12agl-shell-desktop: Add the ability to hide client windowsMarius Vlad1-0/+16
This would be particularly useful to pop-up kind of window(s). It implements the 'deactivate_app' request. For the pop-up role we just remove the view from the layer while for the desktop we store the previous surface and re-use it if that's set. Otherwise we just display the background surface. As we now allow to hide client windows, we need to able to activate/show them back so this also adds a slight modification to take care to handle the pop-up role separately when calling the 'activate_app' request. Bug-AGL: SPEC-3269 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Iec5ccbe2815f4b0e32086fd49856f5f338147f79
2020-05-12agl-shell-desktop: Allow to set role properties for the applicationMarius Vlad1-0/+21
This extends the agl-shell-desktop protocol with a new request that allows to set further properties on the window/client. Bug-AGL: SPEC-3269 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ia88e23c8c1cbc55c5423de480bba7f86c79897d0
2020-03-06protocol: Advertise the applications to regular clientsMarius Vlad1-0/+12
The application ids will be advertised when binding the protocol interface but also when the regular clients will create their surface. Client are responsible for filtering their own name. Bug-AGL: SPEC-3252 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ia196e7d3b34694d7cb169228429a0e940eae8b3b
2020-03-06protocol: Add agl-shell-desktop protocolMarius Vlad1-0/+47
Protocol intented for use by regular XDG application which want to tell the compositor to activate another application. This mimics the activate_app request from agl-shell, and assumes the application is already started. Bug-AGL: SPEC-3252 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I1f7bd1d8d2f7d8f1eedf710aef1bf1046846f9be
2020-01-30src/: Add basic support for app switchingScott Anderson1-0/+17
- adds a new request for agl-shell, 'activate_app', which allows to specify which application should switch to. With it, client shell commands which application to switch to. - ties the layout (panel and background initizatlon) bits into its own specific file Bug-AGL: SPEC-3117 Change-Id: I1b3d89ff77c0e0e439666227ef3319b2107406c0 Signed-off-by: Daniel Stone <daniels@collabora.com>
2019-11-25Import source, backport to libweston 6.0icefish_8.99.5icefish_8.99.4icefish_8.99.3icefish_8.99.2icefish/8.99.5icefish/8.99.4icefish/8.99.3icefish/8.99.28.99.58.99.48.99.38.99.2Daniel Stone1-0/+100
Signed-off-by: Daniel Stone <daniels@collabora.com> Change-Id: I7705fa82dab29a27e4913cd548a2f5c3247dc5ad