diff options
Diffstat (limited to 'protocol')
| -rw-r--r-- | protocol/river-options-unstable-v1.xml | 162 | ||||
| -rw-r--r-- | protocol/river-options-v2.xml | 209 |
2 files changed, 209 insertions, 162 deletions
diff --git a/protocol/river-options-unstable-v1.xml b/protocol/river-options-unstable-v1.xml deleted file mode 100644 index 9e393ba..0000000 --- a/protocol/river-options-unstable-v1.xml +++ /dev/null @@ -1,162 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<protocol name="river_options_unstable_v1"> - <copyright> - Copyright 2020 The River Developers - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - </copyright> - - <interface name="zriver_options_manager_v1" version="1"> - <description summary="set and retrieve options"> - This protocol allows clients to access a typed key-value store of - options. These options are identified by string keys and are scoped - either globally or per-output. This protocol does not define any - semantic meaning of the options, that is left up to compositors. - - Compositors are free to set options themselves at any time, though - the type of any given option is immutable once set. - - Options may never be unset once set. - </description> - - <request name="destroy" type="destructor"> - <description summary="destroy the zriver_options_manager_v1 object"> - This request indicates that the client will not use the manager object - any more. Objects that have been created through this instance are - not affected. - </description> - </request> - - <request name="get_option_handle"> - <description summary="get an option handle for the given key"> - If the output argument is non-null, the option is local to the given - output. Otherwise it is considered global. - </description> - <arg name="key" type="string"/> - <arg name="output" type="object" interface="wl_output" allow-null="true"/> - <arg name="handle" type="new_id" interface="zriver_option_handle_v1"/> - </request> - </interface> - - <interface name="zriver_option_handle_v1" version="1"> - <description summary="handle to an option"> - On binding this object, one of the events will immediately be sent by - the server to inform the client of the current state of the option. New - events will be sent as the state changes. - </description> - - <request name="destroy" type="destructor"> - <description summary="destroy the handle"> - This request indicates that the client will not use the - zriver_option_handle_v1 any more and that it may be safely destroyed. - </description> - </request> - - <event name="unset"> - <description summary="the option is currently unset"> - The option with this key has never been set, so the first set_*_value - request received from any client will determine its type. - - This can only ever be sent as the first event after binding this - interface as options cannot be unset once set. - </description> - </event> - - <event name="int_value"> - <description summary="the current value of the int option"> - This indicates to the client that the option is of type int as well - as the current value of the option. Once set the type of the option - can never change. - </description> - <arg name="value" type="int"/> - </event> - - <event name="uint_value"> - <description summary="the current value of the uint option"> - This indicates to the client that the option is of type uint as well - as the current value of the option. Once set the type of the option - can never change. - </description> - <arg name="value" type="uint"/> - </event> - - <event name="fixed_value"> - <description summary="the current value of the fixed option"> - This indicates to the client that the option is of type fixed as - well as the current value of the option. Once set the type of the option - can never change. - </description> - <arg name="value" type="fixed"/> - </event> - - <event name="string_value"> - <description summary="the current value of the string option"> - This indicates to the client that the option is of type string as - well as the current value of the option. Once set the type of the option - can never change. - </description> - <arg name="value" type="string" allow-null="true"/> - </event> - - <request name="set_int_value"> - <description summary="set the value of the option"> - If the option is either unset or set to a value of type int, this - request asks the compositor to set the value of the option as well - as the type if previously unset. The compositor is not required to - honor this request. - - If the option is already set and is not of type int, this request does nothing. - </description> - <arg name="value" type="int"/> - </request> - - <request name="set_uint_value"> - <description summary="set the value of the option"> - If the option is either unset or set to a value of type uint, this - request asks the compositor to set the value of the option as well - as the type if previously unset. The compositor is not required to - honor this request. - - If the option is already set and is not of type uint, this request - does nothing. - </description> - <arg name="value" type="uint"/> - </request> - - <request name="set_fixed_value"> - <description summary="set the value of the option"> - If the option is either unset or set to a value of type fixed, this - request asks the compositor to set the value of the option as well - as the type if previously unset. The compositor is not required to - honor this request. - - If the option is already set and is not of type fixed, this request - does nothing. - </description> - <arg name="value" type="fixed"/> - </request> - - <request name="set_string_value"> - <description summary="set the value of the option"> - If the option is either unset or set to a value of type string, - this request asks the compositor to set the value of the option as - well as the type if previously unset. The compositor is not required - to honor this request. - - If the option is already set and is not of type string, this request - does nothing. - </description> - <arg name="value" type="string" allow-null="true"/> - </request> - </interface> -</protocol> diff --git a/protocol/river-options-v2.xml b/protocol/river-options-v2.xml new file mode 100644 index 0000000..cb9f1d0 --- /dev/null +++ b/protocol/river-options-v2.xml @@ -0,0 +1,209 @@ +<?xml version="1.0" encoding="UTF-8"?> +<protocol name="river_options_v2"> + <copyright> + Copyright 2020-2021 The River Developers + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + </copyright> + + <description summary="set and retrieve options"> + This protocol allows clients to access a typed key-value store of + options. These options are global but may be overridden using a handle + scoped to a wl_output. If no output scoped value has been set, then the + global value is provided to this handle. + + This protocol does not define any semantic meaning of the options, + that is left up to compositors. + + Compositors are free to set or declare options themselves at any time, + though the type of any given option is immutable once set. + + Options are never removed once declared. + + Warning! The protocol described in this file is currently in the + testing phase. Backward compatible changes may be added together with + the corresponding interface version bump. Backward incompatible changes + can only be done by creating a new major version of the extension. + </description> + + <interface name="river_options_manager_v2" version="1"> + <description summary="declare options and get handles"> + This interface allows clients to declare new options and create + river_option_v2 handle objects in order to retrieve the current + value or set a new one. + </description> + + <request name="destroy" type="destructor"> + <description summary="destroy the river_options_manager_v2 object"> + This request indicates that the client will not use the manager object + any more. Objects that have been created through this instance are + not affected. + </description> + </request> + + <request name="declare_int_option"> + <description summary="declare a new option"> + The option is created in the global scope and is initialized with the + provided value. This request is ignored if the option already exists. + </description> + <arg name="key" type="string"/> + <arg name="value" type="int"/> + </request> + + <request name="declare_uint_option"> + <description summary="declare a new option"> + The option is created in the global scope and is initialized with the + provided value. This request is ignored if the option already exists. + </description> + <arg name="key" type="string"/> + <arg name="value" type="uint"/> + </request> + + <request name="declare_string_option"> + <description summary="declare a new option"> + The option is created in the global scope and is initialized with the + provided value. This request is ignored if the option already exists. + </description> + <arg name="key" type="string"/> + <arg name="value" type="string" allow-null="true"/> + </request> + + <request name="declare_fixed_option"> + <description summary="declare a new option"> + The option is created in the global scope and is initialized with the + provided value. This request is ignored if the option already exists. + </description> + <arg name="key" type="string"/> + <arg name="value" type="fixed"/> + </request> + + <request name="get_option_handle"> + <description summary="get an option handle for the given key"> + If the output argument is non-null, the option is local to the given + output. Otherwise it is considered global. + </description> + <arg name="key" type="string"/> + <arg name="output" type="object" interface="wl_output" allow-null="true"/> + <arg name="handle" type="new_id" interface="river_option_handle_v2"/> + </request> + + <request name="unset_option"> + <description summary="unset an output-local value if any"> + This causes the value of the option for the given output to fall + back to the global value. + </description> + <arg name="key" type="string"/> + <arg name="output" type="object" interface="wl_output"/> + </request> + </interface> + + <interface name="river_option_handle_v2" version="1"> + <description summary="handle to an option"> + On binding this object, one of the events will immediately be sent by + the server to inform the client of the current state of the option, + including its type. Making one of the 4 set requests before receiving + this first event would be a bug as the client would not yet know the + type of the option. New events will be sent as the state changes. + </description> + + <request name="destroy" type="destructor"> + <description summary="destroy the handle"> + This request indicates that the client will not use the + river_option_handle_v2 any more and that it may be safely destroyed. + </description> + </request> + + <enum name="error"> + <entry name="request_while_undeclared" value="0" summary="a request other + than destroy was made after receiving the undeclared event"/> + <entry name="type_mismatch" value="1" + summary="a set request of the wrong type was made"/> + </enum> + + <event name="undeclared"> + <description summary="the option has never been declared"> + No option with the the given name has ever been declared. All requests + on this object aside from the destroy request are a protocol error and + no further events will be sent. + </description> + </event> + + <event name="int_value"> + <description summary="the current value of the int option"> + This indicates to the client that the option is of type int as well + as the current value of the option. Once set the type of the option + can never change. + </description> + <arg name="value" type="int"/> + </event> + + <event name="uint_value"> + <description summary="the current value of the uint option"> + This indicates to the client that the option is of type uint as well + as the current value of the option. Once set the type of the option + can never change. + </description> + <arg name="value" type="uint"/> + </event> + + <event name="string_value"> + <description summary="the current value of the string option"> + This indicates to the client that the option is of type string as well + as the current value of the option. Once set the type of the option + can never change. + </description> + <arg name="value" type="string" allow-null="true"/> + </event> + + <event name="fixed_value"> + <description summary="the current value of the fixed option"> + This indicates to the client that the option is of type fixed as well + as the current value of the option. Once set the type of the option + can never change. + </description> + <arg name="value" type="fixed"/> + </event> + + <request name="set_int_value"> + <description summary="set the value of the option"> + If the option is of type int, set the value of the option. + Otherwise, this request is a protocol error. + </description> + <arg name="value" type="int"/> + </request> + + <request name="set_uint_value"> + <description summary="set the value of the option"> + If the option is of type uint, set the value of the option. + Otherwise, this request is a protocol error. + </description> + <arg name="value" type="uint"/> + </request> + + <request name="set_string_value"> + <description summary="set the value of the option"> + If the option is of type string, set the value of the option. + Otherwise, this request is a protocol error. + </description> + <arg name="value" type="string" allow-null="true"/> + </request> + + <request name="set_fixed_value"> + <description summary="set the value of the option"> + If the option is of type fixed, set the value of the option. + Otherwise, this request is a protocol error. + </description> + <arg name="value" type="fixed"/> + </request> + </interface> +</protocol> |
