You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							473 lines
						
					
					
						
							18 KiB
						
					
					
				
			
		
		
	
	
							473 lines
						
					
					
						
							18 KiB
						
					
					
				| <?xml version="1.0" encoding="UTF-8"?>
 | |
| <protocol name="wayland">
 | |
| 
 | |
|   <!-- The core global object. This is a special singleton object.
 | |
|        It is used for internal wayland protocol features. -->
 | |
|   <interface name="display" version="1">
 | |
|     <!-- sync is an just an echo, which will reply with a sync event.
 | |
|          Since requests are handled in-order, this can be used as a
 | |
|          barrier to ensure all previous requests have ben handled.
 | |
|          The key argument can be used to correlate between multiple
 | |
|          sync invocations. -->
 | |
|     <request name="sync">
 | |
|       <arg name="key" type="uint"/>
 | |
|     </request>
 | |
| 
 | |
|     <!-- Request notification when the next frame is displayed.
 | |
|          Useful for throttling redrawing operations, and driving
 | |
|          animations.  The notification will only be posted for one
 | |
|          frame unless requested again. -->
 | |
|     <request name="frame">
 | |
|       <arg name="key" type="uint"/>
 | |
|     </request>
 | |
| 
 | |
|     <!-- A request addressed a non-existent object id. This is
 | |
|          tyipcally a fatal error. -->
 | |
|     <event name="invalid_object">
 | |
|       <arg name="object_id" type="uint"/>
 | |
|     </event>
 | |
| 
 | |
|     <!-- A request tried to invoke an opcode out of range.  This is
 | |
|          typically a fatal error. -->
 | |
|     <event name="invalid_method">
 | |
|       <arg name="object_id" type="uint"/>
 | |
|       <arg name="opcode" type="uint"/>
 | |
|     </event>
 | |
| 
 | |
|     <!-- A request has failed due to an out of memory error. -->
 | |
|     <event name="no_memory"/>
 | |
| 
 | |
|     <!-- Notify the client of global objects. These are objects that
 | |
|          are created by the server. Globals are published on the
 | |
|          initial client connection sequence, upon device hotplugs,
 | |
|          device disconnects, reconfiguration or other events.  The
 | |
|          server will always announce an object before the object sends
 | |
|          out events. -->
 | |
|     <event name="global">
 | |
|       <arg name="id" type="new_id" interface="object"/>
 | |
|       <arg name="name" type="string"/>
 | |
|       <arg name="version" type="uint"/>
 | |
|     </event>
 | |
| 
 | |
|     <!-- Internal, deprecated, and will be changed.  This is an object
 | |
|          IDs range that is used by the client to allocate object IDs
 | |
|          in "new_id" type arguments.  The server sends range
 | |
|          allocations to the client before the next range is about to
 | |
|          be depleted. -->
 | |
|     <event name="range">
 | |
|       <arg name="base" type="uint"/>
 | |
|     </event>
 | |
| 
 | |
|     <!-- A reply to the frame or sync request.  The key is the one
 | |
|          used in the request.  time is in millisecond units, and
 | |
|          denotes the time when the frame was posted on the
 | |
|          display. time can be used to estimaate frame rate, determine
 | |
|          how much to advance animations and compensate for jitter. -->
 | |
|     <event name="key">
 | |
|       <arg name="key" type="uint"/>
 | |
|       <arg name="time" type="uint"/>
 | |
|     </event>
 | |
|   </interface>
 | |
| 
 | |
| 
 | |
|   <!-- A compositor. This object is a global.  The compositor is in
 | |
|        charge of combining the contents of multiple surfaces into one
 | |
|        displayable output. -->
 | |
|   <interface name="compositor" version="1">
 | |
|     <!-- Factory request for a surface objects. A surface is akin to a
 | |
|          window. -->
 | |
|     <request name="create_surface">
 | |
|       <arg name="id" type="new_id" interface="surface"/>
 | |
|     </request>
 | |
|   </interface>
 | |
| 
 | |
| 
 | |
|   <!-- drm support. This object is created by the server and published
 | |
|        using the display's global event. -->
 | |
|   <interface name="drm" version="1">
 | |
|     <!-- Call this request with the magic received from drmGetMagic().
 | |
|          It will be passed on to the drmAuthMagic() or
 | |
|          DRIAuthConnection() call.  This authentication must be
 | |
|          completed before create_buffer could be used. -->
 | |
|     <request name="authenticate">
 | |
|       <arg name="id" type="uint"/>
 | |
|     </request>
 | |
| 
 | |
|     <!-- Create a wayland buffer for the named DRM buffer.  The DRM
 | |
|          surface must have a name using the flink ioctl -->
 | |
|     <request name="create_buffer">
 | |
|       <arg name="id" type="new_id" interface="buffer"/>
 | |
|       <arg name="name" type="uint"/>
 | |
|       <arg name="width" type="int"/>
 | |
|       <arg name="height" type="int"/>
 | |
|       <arg name="stride" type="uint"/>
 | |
|       <arg name="visual" type="object" interface="visual"/>
 | |
|     </request>
 | |
| 
 | |
|     <!-- Notification of the path of the drm device which is used by
 | |
|          the server.  The client should use this device for creating
 | |
|          local buffers.  Only buffers created from this device should
 | |
|          be be passed to the server using this drm object's
 | |
|          create_buffer request. -->
 | |
|     <event name="device">
 | |
|       <arg name="name" type="string"/>
 | |
|     </event>
 | |
| 
 | |
|     <!-- Raised if the authenticate request succeeded -->
 | |
|     <event name="authenticated"/>
 | |
|   </interface>
 | |
| 
 | |
| 
 | |
|   <!-- Shared memory support -->
 | |
|   <interface name="shm" version="1">
 | |
|     <!-- Transfer a shm buffer to the server.  The allocated buffer
 | |
|          would include at least stride * height bytes starting at the
 | |
|          beginning of fd.  The file descriptor is transferred over the
 | |
|          socket using AF_UNIX magical features. width, height, stride
 | |
|          and visual describe the respective properties of the pixel
 | |
|          data contained in the buffer. -->
 | |
|     <request name="create_buffer">
 | |
|       <arg name="id" type="new_id" interface="buffer"/>
 | |
|       <arg name="fd" type="fd"/>
 | |
|       <arg name="width" type="int"/>
 | |
|       <arg name="height" type="int"/>
 | |
|       <arg name="stride" type="uint"/>
 | |
|       <arg name="visual" type="object" interface="visual"/>
 | |
|     </request>
 | |
|   </interface>
 | |
| 
 | |
| 
 | |
|   <!-- A pixel buffer. Created using the drm, shm or similar objects.
 | |
|        It has a size, visual and contents, but not a location on the
 | |
|        screen -->
 | |
|   <interface name="buffer" version="1">
 | |
|     <!-- Abandon a buffer.  This will invalidate the object id. -->
 | |
|     <request name="destroy" type="destructor"/>
 | |
|   </interface>
 | |
| 
 | |
|   <interface name="shell" version="1">
 | |
|     <request name="move">
 | |
|       <arg name="surface" type="object" interface="surface"/>
 | |
|       <arg name="input_device" type="object" interface="input_device"/>
 | |
|       <arg name="time" type="uint"/>
 | |
|     </request>
 | |
| 
 | |
|     <enum name="resize">
 | |
|       <entry name="none" value="0"/>
 | |
|       <entry name="top" value="1"/>
 | |
|       <entry name="bottom" value="2"/>
 | |
|       <entry name="left" value="4"/>
 | |
|       <entry name="top_left" value="5"/>
 | |
|       <entry name="bottom_left" value="6"/>
 | |
|       <entry name="right" value="8"/>
 | |
|       <entry name="top_right" value="9"/>
 | |
|       <entry name="bottom_right" value="10"/>
 | |
|     </enum>
 | |
| 
 | |
|     <request name="resize">
 | |
|       <arg name="surface" type="object" interface="surface"/>
 | |
|       <arg name="input_device" type="object" interface="input_device"/>
 | |
|       <arg name="time" type="uint"/>
 | |
|       <!-- edges is an enum, need to get the values in here -->
 | |
|       <arg name="edges" type="uint"/>
 | |
|     </request>
 | |
| 
 | |
|     <request name="create_drag">
 | |
|       <arg name="id" type="new_id" interface="drag"/>
 | |
|     </request>
 | |
| 
 | |
|     <request name="create_selection">
 | |
|       <arg name="id" type="new_id" interface="selection"/>
 | |
|     </request>
 | |
| 
 | |
|     <!-- The configure event asks the client to resize its surface.
 | |
|          The size is a hint, in the sense that the client is free to
 | |
|          ignore it if it doesn't resize, pick a smaller size (to
 | |
|          satisfy aspect ration or resize in steps of NxM pixels).  The
 | |
|          client is free to dismiss all but the last configure event it
 | |
|          received. -->
 | |
|     <event name="configure">
 | |
|       <arg name="time" type="uint"/>
 | |
|       <arg name="edges" type="uint"/>
 | |
|       <arg name="surface" type="object" interface="surface"/>
 | |
|       <arg name="width" type="int"/>
 | |
|       <arg name="height" type="int"/>
 | |
|     </event>
 | |
|   </interface>
 | |
| 
 | |
|   <interface name="selection" version="1">
 | |
|     <!-- Add an offered mime type.  Can be called several times to
 | |
|          offer multiple types, but must be called before 'activate'. -->
 | |
|     <request name="offer">
 | |
|       <arg name="type" type="string"/>
 | |
|     </request>
 | |
| 
 | |
|     <!-- Can the selection be activated for multiple devices? -->
 | |
|     <request name="activate">
 | |
|       <arg name="input_device" type="object" interface="input_device"/>
 | |
|       <arg name="time" type="uint"/>
 | |
|     </request>
 | |
| 
 | |
|     <!-- Destroy the selection. -->
 | |
|     <request name="destroy" type="destructor"/>
 | |
| 
 | |
|     <!-- Another client pasted the selection, send the mime-type over
 | |
|          the passed fd. -->
 | |
|     <event name="send">
 | |
|       <arg name="mime_type" type="string"/>
 | |
|       <arg name="fd" type="fd"/>
 | |
|     </event>
 | |
| 
 | |
|     <!-- Another selection became active. -->
 | |
|     <event name="cancelled"/>
 | |
|   </interface>
 | |
| 
 | |
|   <interface name="selection_offer" version="1">
 | |
|     <!-- Called to receive the selection data as the specified type.
 | |
|          Sends the pipe fd to the compositor, which forwards it to the
 | |
|          source in the 'send' event -->
 | |
|     <request name="receive">
 | |
|       <arg name="mime_type" type="string"/>
 | |
|       <arg name="fd" type="fd"/>
 | |
|     </request>
 | |
| 
 | |
|     <!-- Sent before the keyboard_focus event to announce the types
 | |
|          offered.  One event per offered mime type.  A mime type of
 | |
|          NULL means the selection offer is going away.  -->
 | |
|     <event name="offer">
 | |
|       <arg name="type" type="string"/>
 | |
|     </event>
 | |
| 
 | |
|     <event name="keyboard_focus">
 | |
|       <arg name="input_device" type="object" interface="input_device"/>
 | |
|     </event>
 | |
|   </interface>
 | |
| 
 | |
|   <interface name="drag" version="1">
 | |
|     <!-- Add an offered mime type.  Can be called several times to
 | |
|          offer multiple types, but must be called before 'activate'. -->
 | |
|     <request name="offer">
 | |
|       <arg name="type" type="string"/>
 | |
|     </request>
 | |
| 
 | |
|     <request name="activate">
 | |
|       <arg name="surface" type="object" interface="surface"/>
 | |
|       <arg name="input_device" type="object" interface="input_device"/>
 | |
|       <arg name="time" type="uint"/>
 | |
|     </request>
 | |
| 
 | |
|     <!-- Destroy the drag and cancel the session. -->
 | |
|     <request name="destroy" type="destructor"/>
 | |
| 
 | |
|     <!-- Sent when a target accepts pointer_focus or motion events.
 | |
|          If a target does not accept any of the offered types, type is
 | |
|          NULL -->
 | |
|     <event name="target">
 | |
|       <arg name="mime_type" type="string"/>
 | |
|     </event>
 | |
| 
 | |
|     <!-- Sent when the drag is finished.  The final mime type is that
 | |
|          of the last target event.  If that was NULL, no drag target
 | |
|          was valid when the drag finished, fd is undefined and the
 | |
|          source should not send data.  The event is also sent in case
 | |
|          a drag source tries to activate a drag after the grab was
 | |
|          released, in which case mime_type will also be NULL. -->
 | |
|     <event name="finish">
 | |
|       <arg name="fd" type="fd"/>
 | |
|     </event>
 | |
| 
 | |
|     <event name="reject"/>
 | |
|   </interface>
 | |
| 
 | |
| 
 | |
|   <interface name="drag_offer" version="1">
 | |
|     <!-- Call to accept the offer of the given type -->
 | |
|     <request name="accept">
 | |
|       <arg name="time" type="uint"/>
 | |
|       <arg name="type" type="string"/>
 | |
|     </request>
 | |
| 
 | |
|     <!-- Called to initiate the drag finish sequence.  Sends the pipe
 | |
|          fd to the compositor, which forwards it to the source in the
 | |
|          'finish' event -->
 | |
|     <request name="receive">
 | |
|       <arg name="fd" type="fd"/>
 | |
|     </request>
 | |
| 
 | |
|     <!-- Called to reject a drop  -->
 | |
|     <request name="reject"/>
 | |
| 
 | |
|     <!-- Sent before the pointer_focus event to announce the types
 | |
|          offered.  One event per offered mime type. -->
 | |
|     <event name="offer">
 | |
|       <arg name="type" type="string"/>
 | |
|     </event>
 | |
| 
 | |
|     <!-- Similar to device::pointer_focus.  Sent to potential target
 | |
|          surfaces to offer drag data.  If the device leaves the
 | |
|          window, the drag stops or the originator cancels the drag,
 | |
|          this event is sent with the NULL surface, at which point the
 | |
|          drag object may no longer be valid. -->
 | |
|     <event name="pointer_focus">
 | |
|       <arg name="time" type="uint"/>
 | |
|       <arg name="surface" type="object" interface="surface"/>
 | |
|       <arg name="x" type="int"/>
 | |
|       <arg name="y" type="int"/>
 | |
|       <arg name="surface_x" type="int"/>
 | |
|       <arg name="surface_y" type="int"/>
 | |
|     </event>
 | |
| 
 | |
|     <!-- Similar to device::motion.  Sent to potential target surfaces
 | |
|          as the drag pointer moves around in the surface. -->
 | |
|     <event name="motion">
 | |
|       <arg name="time" type="uint"/>
 | |
|       <arg name="x" type="int"/>
 | |
|       <arg name="y" type="int"/>
 | |
|       <arg name="surface_x" type="int"/>
 | |
|       <arg name="surface_y" type="int"/>
 | |
|     </event>
 | |
| 
 | |
|     <!-- Sent to indicate that the drag is finishing.  The last
 | |
|          motion/pointer_focus event gives the location of the drop.
 | |
|          Target must respond with the 'receive' request, which sends
 | |
|          an fd to the source for writing the drag data. -->
 | |
|     <event name="drop"/>
 | |
|   </interface>
 | |
| 
 | |
| 
 | |
|   <!-- A surface. This is an image that is displayed on the screen.
 | |
|        It has a location, size and pixel contents. Similar to a window. -->
 | |
|   <interface name="surface" version="1">
 | |
|     <!-- Deletes the surface and invalidates its object id. -->
 | |
|     <request name="destroy" type="destructor"/>
 | |
| 
 | |
|     <!-- Copy the contents of a buffer into this surface. The x and y
 | |
|          arguments specify the location of the new buffers upper left
 | |
|          corner, relative to the old buffers upper left corner. -->
 | |
|     <request name="attach">
 | |
|       <arg name="buffer" type="object" interface="buffer"/>
 | |
|       <arg name="x" type="int"/>
 | |
|       <arg name="y" type="int"/>
 | |
|     </request>
 | |
| 
 | |
|     <!-- Make the surface visible as a toplevel window. -->
 | |
|     <request name="map_toplevel"/>
 | |
| 
 | |
|     <!-- Map the surface relative to an existing surface. The x and y
 | |
|          arguments specify the locations of the upper left corner of
 | |
|          the surface relative to the upper left corner of the parent
 | |
|          surface.  The flags argument controls overflow/clipping
 | |
|          behaviour when the surface would intersect a screen edge,
 | |
|          panel or such.  And possibly whether the offset only
 | |
|          determines the initial position or if the surface is locked
 | |
|          to that relative position during moves. -->
 | |
|     <request name="map_transient">
 | |
|       <arg name="parent" type="object" interface="surface"/>
 | |
|       <arg name="x" type="int"/>
 | |
|       <arg name="y" type="int"/>
 | |
|       <arg name="flags" type="uint"/>
 | |
|     </request>
 | |
| 
 | |
|     <!-- Notify the server that the attached buffer's contents have
 | |
|          changed, and request a redraw. The arguments allow you to
 | |
|          damage only a part of the surface, but the server may ignore
 | |
|          it and redraw the entire contents of the surface.  To
 | |
|          describe a more complicated area of damage, use this request
 | |
|          several times. -->
 | |
|     <request name="damage">
 | |
|       <arg name="x" type="int"/>
 | |
|       <arg name="y" type="int"/>
 | |
|       <arg name="width" type="int"/>
 | |
|       <arg name="height" type="int"/>
 | |
|     </request>
 | |
|   </interface>
 | |
| 
 | |
| 
 | |
|   <!-- A group of keyboards and pointer devices (mice, for
 | |
|        example). This object is published as a global during start up,
 | |
|        or when such a device is hot plugged.  A input_device group
 | |
|        typically has a pointer and maintains a keyboard_focus and a
 | |
|        pointer_focus.  -->
 | |
|   <interface name="input_device" version="1">
 | |
|     <!-- Set the pointer's image.  This request only takes effect if
 | |
|          the pointer focus for this device is one of the requesting
 | |
|          clients surfaces.  -->
 | |
|     <request name="attach">
 | |
|       <arg name="time" type="uint"/>
 | |
|       <arg name="buffer" type="object" interface="buffer"/>
 | |
|       <arg name="hotspot_x" type="int"/>
 | |
|       <arg name="hotspot_y" type="int"/>
 | |
|     </request>
 | |
| 
 | |
|     <!-- Notification of pointer location change.
 | |
|          x,y are the absolute location on the screen.
 | |
|          surface_[xy] are the location relative to the focused surface. -->
 | |
|     <event name="motion">
 | |
|       <arg name="time" type="uint"/>
 | |
|       <arg name="x" type="int"/>
 | |
|       <arg name="y" type="int"/>
 | |
|       <arg name="surface_x" type="int"/>
 | |
|       <arg name="surface_y" type="int"/>
 | |
|     </event>
 | |
| 
 | |
|     <!-- Mouse button click and release notifications.  The location
 | |
|          of the click is given by the last motion or pointer_focus
 | |
|          event. -->
 | |
|     <event name="button">
 | |
|       <arg name="time" type="uint"/>
 | |
|       <arg name="button" type="uint"/>
 | |
|       <arg name="state" type="uint"/>
 | |
|     </event>
 | |
| 
 | |
|     <!-- Keyboard press. -->
 | |
|     <event name="key">
 | |
|       <arg name="time" type="uint"/>
 | |
|       <arg name="key" type="uint"/>
 | |
|       <arg name="state" type="uint"/>
 | |
|     </event>
 | |
| 
 | |
|     <!-- Notification that this input device's pointer is focused on
 | |
|          certain surface. When an input_device enters a surface, the
 | |
|          pointer image is undefined and a client should respond to
 | |
|          this event by setting an apropriate pointer image. -->
 | |
|     <event name="pointer_focus">
 | |
|       <arg name="time" type="uint"/>
 | |
|       <arg name="surface" type="object" interface="surface"/>
 | |
|       <arg name="x" type="int"/>
 | |
|       <arg name="y" type="int"/>
 | |
|       <arg name="surface_x" type="int"/>
 | |
|       <arg name="surface_y" type="int"/>
 | |
|     </event>
 | |
| 
 | |
|     <event name="keyboard_focus">
 | |
|       <arg name="time" type="uint"/>
 | |
|       <arg name="surface" type="object" interface="surface"/>
 | |
|       <arg name="keys" type="array"/>
 | |
|     </event>
 | |
|   </interface>
 | |
| 
 | |
| 
 | |
|   <!-- An output describes part of the compositor geometry.  The
 | |
|        compositor work in the 'compositor coordinate system' and an
 | |
|        output corresponds to rectangular area in that space that is
 | |
|        actually visible.  This typically corresponds to a monitor that
 | |
|        displays part of the compositor space.  This object is
 | |
|        published as global during start up, or when a screen is hot
 | |
|        plugged.  -->
 | |
|   <interface name="output" version="1">
 | |
|     <!-- Notification about the screen size. -->
 | |
|     <event name="geometry">
 | |
|       <arg name="x" type="int"/>
 | |
|       <arg name="y" type="int"/>
 | |
|       <arg name="width" type="int"/>
 | |
|       <arg name="height" type="int"/>
 | |
|     </event>
 | |
|   </interface>
 | |
| 
 | |
| 
 | |
|   <!-- A visual is the pixel format.  The different visuals are
 | |
|        currently only identified by the order they are advertised by
 | |
|        the 'global' events.  We need something better.  -->
 | |
|   <interface name="visual" version="1"/>
 | |
| 
 | |
| </protocol>
 | |
| 
 |