123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- <?xml version="1.0" encoding="UTF-8"?>
- <protocol name="xdg_foreign_unstable_v2">
- <copyright>
- Copyright © 2015-2016 Red Hat Inc.
- Permission is hereby granted, free of charge, to any person obtaining a
- copy of this software and associated documentation files (the "Software"),
- to deal in the Software without restriction, including without limitation
- the rights to use, copy, modify, merge, publish, distribute, sublicense,
- and/or sell copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following conditions:
- The above copyright notice and this permission notice (including the next
- paragraph) shall be included in all copies or substantial portions of the
- Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- DEALINGS IN THE SOFTWARE.
- </copyright>
- <description summary="Protocol for exporting xdg surface handles">
- This protocol specifies a way for making it possible to reference a surface
- of a different client. With such a reference, a client can, by using the
- interfaces provided by this protocol, manipulate the relationship between
- its own surfaces and the surface of some other client. For example, stack
- some of its own surface above the other clients surface.
- In order for a client A to get a reference of a surface of client B, client
- B must first export its surface using xdg_exporter.export_toplevel. Upon
- doing this, client B will receive a handle (a unique string) that it may
- share with client A in some way (for example D-Bus). After client A has
- received the handle from client B, it may use xdg_importer.import_toplevel
- to create a reference to the surface client B just exported. See the
- corresponding requests for details.
- A possible use case for this is out-of-process dialogs. For example when a
- sandboxed client without file system access needs the user to select a file
- on the file system, given sandbox environment support, it can export its
- surface, passing the exported surface handle to an unsandboxed process that
- can show a file browser dialog and stack it above the sandboxed client's
- surface.
- Warning! The protocol described in this file is experimental and backward
- incompatible changes may be made. Backward compatible changes may be added
- together with the corresponding interface version bump. Backward
- incompatible changes are done by bumping the version number in the protocol
- and interface names and resetting the interface version. Once the protocol
- is to be declared stable, the 'z' prefix and the version number in the
- protocol and interface names are removed and the interface version number is
- reset.
- </description>
- <interface name="zxdg_exporter_v2" version="1">
- <description summary="interface for exporting surfaces">
- A global interface used for exporting surfaces that can later be imported
- using xdg_importer.
- </description>
- <request name="destroy" type="destructor">
- <description summary="destroy the xdg_exporter object">
- Notify the compositor that the xdg_exporter object will no longer be
- used.
- </description>
- </request>
- <enum name="error">
- <description summary="error values">
- These errors can be emitted in response to invalid xdg_exporter
- requests.
- </description>
- <entry name="invalid_surface" value="0" summary="surface is not an xdg_toplevel"/>
- </enum>
- <request name="export_toplevel">
- <description summary="export a toplevel surface">
- The export_toplevel request exports the passed surface so that it can later be
- imported via xdg_importer. When called, a new xdg_exported object will
- be created and xdg_exported.handle will be sent immediately. See the
- corresponding interface and event for details.
- A surface may be exported multiple times, and each exported handle may
- be used to create an xdg_imported multiple times. Only xdg_toplevel
- equivalent surfaces may be exported, otherwise an invalid_surface
- protocol error is sent.
- </description>
- <arg name="id" type="new_id" interface="zxdg_exported_v2"
- summary="the new xdg_exported object"/>
- <arg name="surface" type="object" interface="wl_surface"
- summary="the surface to export"/>
- </request>
- </interface>
- <interface name="zxdg_importer_v2" version="1">
- <description summary="interface for importing surfaces">
- A global interface used for importing surfaces exported by xdg_exporter.
- With this interface, a client can create a reference to a surface of
- another client.
- </description>
- <request name="destroy" type="destructor">
- <description summary="destroy the xdg_importer object">
- Notify the compositor that the xdg_importer object will no longer be
- used.
- </description>
- </request>
- <request name="import_toplevel">
- <description summary="import a toplevel surface">
- The import_toplevel request imports a surface from any client given a handle
- retrieved by exporting said surface using xdg_exporter.export_toplevel.
- When called, a new xdg_imported object will be created. This new object
- represents the imported surface, and the importing client can
- manipulate its relationship using it. See xdg_imported for details.
- </description>
- <arg name="id" type="new_id" interface="zxdg_imported_v2"
- summary="the new xdg_imported object"/>
- <arg name="handle" type="string"
- summary="the exported surface handle"/>
- </request>
- </interface>
- <interface name="zxdg_exported_v2" version="1">
- <description summary="an exported surface handle">
- An xdg_exported object represents an exported reference to a surface. The
- exported surface may be referenced as long as the xdg_exported object not
- destroyed. Destroying the xdg_exported invalidates any relationship the
- importer may have established using xdg_imported.
- </description>
- <request name="destroy" type="destructor">
- <description summary="unexport the exported surface">
- Revoke the previously exported surface. This invalidates any
- relationship the importer may have set up using the xdg_imported created
- given the handle sent via xdg_exported.handle.
- </description>
- </request>
- <event name="handle">
- <description summary="the exported surface handle">
- The handle event contains the unique handle of this exported surface
- reference. It may be shared with any client, which then can use it to
- import the surface by calling xdg_importer.import_toplevel. A handle
- may be used to import the surface multiple times.
- </description>
- <arg name="handle" type="string" summary="the exported surface handle"/>
- </event>
- </interface>
- <interface name="zxdg_imported_v2" version="1">
- <description summary="an imported surface handle">
- An xdg_imported object represents an imported reference to surface exported
- by some client. A client can use this interface to manipulate
- relationships between its own surfaces and the imported surface.
- </description>
- <enum name="error">
- <description summary="error values">
- These errors can be emitted in response to invalid xdg_imported
- requests.
- </description>
- <entry name="invalid_surface" value="0" summary="surface is not an xdg_toplevel"/>
- </enum>
- <request name="destroy" type="destructor">
- <description summary="destroy the xdg_imported object">
- Notify the compositor that it will no longer use the xdg_imported
- object. Any relationship that may have been set up will at this point
- be invalidated.
- </description>
- </request>
- <request name="set_parent_of">
- <description summary="set as the parent of some surface">
- Set the imported surface as the parent of some surface of the client.
- The passed surface must be an xdg_toplevel equivalent, otherwise an
- invalid_surface protocol error is sent. Calling this function sets up
- a surface to surface relation with the same stacking and positioning
- semantics as xdg_toplevel.set_parent.
- </description>
- <arg name="surface" type="object" interface="wl_surface"
- summary="the child surface"/>
- </request>
- <event name="destroyed">
- <description summary="the imported surface handle has been destroyed">
- The imported surface handle has been destroyed and any relationship set
- up has been invalidated. This may happen for various reasons, for
- example if the exported surface or the exported surface handle has been
- destroyed, if the handle used for importing was invalid.
- </description>
- </event>
- </interface>
- </protocol>
|