<?xml version="1.0" encoding="UTF-8"?>
<protocol name="agl_shell">
<copyright>
- Copyright © 2019 Collabora, Ltd.
+ Copyright © 2019, 2022 Collabora, Ltd.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
</copyright>
- <interface name="agl_shell" version="1">
- <description summary="user interface for weston-ivi">
+ <interface name="agl_shell" version="4">
+ <description summary="user interface for Automotive Grade Linux platform">
+ Starting with version 2 of the protocol, the client is required to wait
+ for the 'bound_ok' or 'bound_fail' events in order to proceed further.
+
+ In case the client gets a 'bound_fail' event then it should consider that
+ there's another client already bound to the agl_shell protocol.
+ A client that receives a 'bound_ok' event should consider that there's
+ no other client already bound to the interface and can proceed further.
+
+ If the client uses an older version of the protocol it will receive
+ automatically an error and the compositor will terminate the connection,
+ if there's another client already bound the interface.
+
+ If the client receives the 'bound_fail' event and attempts to use the
+ interface further it will receive an error and the compositor will
+ terminate the connection. After the 'bound_fail' event was received the
+ client should call the destructor, which has been added with version 2
+ of the protocol. The client is free to try at a later point in time to
+ see if it will receive the 'bound_ok' event, but there's no explicit way
+ of finding out when that event will delivered. It is assumed that it can
+ infer that information through other means/other channels.
</description>
+ <request name="destroy" type="destructor" since="2">
+ <description summary="destroys the factory object">
+ </description>
+ </request>
+
<enum name="error">
<entry name="invalid_argument" value="0"/>
<entry name="background_exists" value="1"/>
<entry name="right" value="3"/>
</enum>
+ <enum name="app_state" since="4">
+ <entry name="started" value="0"/>
+ <entry name="activated" value="1"/>
+ <entry name="deactivated" value="2"/>
+ <entry name="destroyed" value="3"/>
+ </enum>
+
+ <enum name="app_role" since="4">
+ <entry name="float" value="0"/>
+ <entry name="remote" value="1"/>
+ </enum>
+
<request name="ready">
<description summary="client is ready to be shown">
Tell the server that this client is ready to be shown. The server
will delay presentation during start-up until all shell clients are
ready to be shown, and will display a black screen instead.
- This gives the client an oppurtunity to set up and configure several
+ This gives the client an opportunity to set up and configure several
surfaces into a coherent interface.
The client that binds to this interface must send this request, otherwise
Set the surface to act as a panel of an output. The 'edge' argument
says what edge of the output the surface will be anchored to.
After this request, the server will send a configure event with the
- correponding width/height that the client should use, and 0 for the
+ corresponding width/height that the client should use, and 0 for the
other dimension. E.g. if the edge is 'top', the width will be the
output's width, and the height will be 0.
<arg name="app_id" type="string"/>
<arg name="output" type="object" interface="wl_output"/>
</request>
+
+ <request name="deactivate_app" since="3">
+ <description summary="de-activate/hide window identified by app_id">
+ Ask the compositor to hide the toplevel window for window
+ management purposes. Depending on the window role, this request
+ will either display the previously active window (or the background
+ in case there's no previously active surface) or temporarily (or
+ until a 'activate_app' is called upon) hide the surface. All
+ the surfaces are identifiable by using the app_id, and no actions are
+ taken in case the app_id is not/was not present.
+
+ See xdg_toplevel.set_app_id from the xdg-shell protocol for a
+ description of app_id.
+ </description>
+ <arg name="app_id" type="string"/>
+ </request>
+
+ <event name="bound_ok" since="2">
+ <description>
+ Informs the client that it was able to bind the agl_shell
+ interface succesfully. Clients are required to wait for this
+ event before continuing further.
+ </description>
+ </event>
+
+ <event name="bound_fail" since="2">
+ <description>
+ Informs the client that binding to the agl_shell interface was
+ unsuccesfull. Clients are required to wait for this event for
+ continuing further.
+ </description>
+ </event>
+
+ <event name="app_state" since="4">
+ <description summary="event sent when application has suffered state modification">
+ Notifies application(s) when other application have suffered state modifications.
+ </description>
+ <arg name="app_id" type="string"/>
+ <arg name="state" type="uint" enum="app_state"/>
+ <arg name="role" type="uint" enum="app_role"/>
+ </event>
+
</interface>
</protocol>