|
|
|
@ -26,7 +26,7 @@
|
|
|
|
|
</copyright>
|
|
|
|
|
|
|
|
|
|
<description summary="protocol to configure output devices">
|
|
|
|
|
This protocol exposes interfaces to get and change output device
|
|
|
|
|
This protocol exposes interfaces to obtain and modify output device
|
|
|
|
|
configuration.
|
|
|
|
|
|
|
|
|
|
Warning! The protocol described in this file is experimental and
|
|
|
|
@ -46,15 +46,23 @@
|
|
|
|
|
|
|
|
|
|
Output devices that display pixels (e.g. a physical monitor or a virtual
|
|
|
|
|
output in a window) are represented as heads. Heads cannot be created nor
|
|
|
|
|
destroyed, but they can be enabled or disabled and their properties can be
|
|
|
|
|
changed. Each head may have one or more available modes.
|
|
|
|
|
destroyed by the client, but they can be enabled or disabled and their
|
|
|
|
|
properties can be changed. Each head may have one or more available modes.
|
|
|
|
|
|
|
|
|
|
Heads are advertised when the output manager is bound, and whenever they
|
|
|
|
|
appear.
|
|
|
|
|
Whenever a head appears (e.g. a monitor is plugged in), it will be
|
|
|
|
|
advertised via the head event. Immediately after the output manager is
|
|
|
|
|
bound, all current heads are advertised.
|
|
|
|
|
|
|
|
|
|
Whenever the number of heads or modes changes, the done event will be
|
|
|
|
|
sent. It carries a serial which can be used in a create_configuration
|
|
|
|
|
request to change heads properties.
|
|
|
|
|
Whenever a head's properties change, the relevant wlr_output_head events
|
|
|
|
|
will be sent. Not all head properties will be sent: only properties that
|
|
|
|
|
have changed need to.
|
|
|
|
|
|
|
|
|
|
Whenever a head disappears (e.g. a monitor is unplugged), a
|
|
|
|
|
wlr_output_head.finished event will be sent.
|
|
|
|
|
|
|
|
|
|
After one or more heads appear, change or disappear, the done event will
|
|
|
|
|
be sent. It carries a serial which can be used in a create_configuration
|
|
|
|
|
request to update heads properties.
|
|
|
|
|
|
|
|
|
|
The information obtained from this protocol should only be used for output
|
|
|
|
|
configuration purposes. This protocol is not designed to be a generic
|
|
|
|
@ -64,7 +72,9 @@
|
|
|
|
|
|
|
|
|
|
<event name="head">
|
|
|
|
|
<description summary="introduce a new head">
|
|
|
|
|
This event introduces a new head.
|
|
|
|
|
This event introduces a new head. This happens whenever a new head
|
|
|
|
|
appears (e.g. a monitor is plugged in) or after the output manager is
|
|
|
|
|
bound.
|
|
|
|
|
</description>
|
|
|
|
|
<arg name="head" type="new_id" interface="zwlr_output_head_v1"/>
|
|
|
|
|
</event>
|
|
|
|
@ -75,7 +85,8 @@
|
|
|
|
|
the output manager object and after any subsequent changes. This applies
|
|
|
|
|
to child head and mode objects as well. In other words, this event is
|
|
|
|
|
sent whenever a head or mode is created or destroyed and whenever one of
|
|
|
|
|
their properties has been changed.
|
|
|
|
|
their properties has been changed. Not all state is re-sent each time
|
|
|
|
|
the current configuration changes: only the actual changes are sent.
|
|
|
|
|
|
|
|
|
|
This allows changes to the output configuration to be seen as atomic,
|
|
|
|
|
even if they happen via multiple events.
|
|
|
|
@ -116,28 +127,21 @@
|
|
|
|
|
|
|
|
|
|
<interface name="zwlr_output_head_v1" version="1">
|
|
|
|
|
<description summary="output device">
|
|
|
|
|
A head is an output device. The difference with wl_output is that heads
|
|
|
|
|
are advertized even if they are turned off. A head object only advertises
|
|
|
|
|
properties and cannot be used directly to change them. In order to update
|
|
|
|
|
some properties, one needs to create a wlr_output_configuration object.
|
|
|
|
|
A head is an output device. The difference between a wl_output object and
|
|
|
|
|
a head is that heads are advertised even if they are turned off. A head
|
|
|
|
|
object only advertises properties and cannot be used directly to change
|
|
|
|
|
them.
|
|
|
|
|
|
|
|
|
|
A head has some read-only properties: mode, name, description and
|
|
|
|
|
A head has some read-only properties: modes, name, description and
|
|
|
|
|
physical_size. These cannot be changed by clients.
|
|
|
|
|
|
|
|
|
|
enabled and current_mode are physical properties. Updating them might take
|
|
|
|
|
some time, depending on hardware limitations.
|
|
|
|
|
Other properties can be updated via a wlr_output_configuration object.
|
|
|
|
|
|
|
|
|
|
position, transform and scale are logical properties. They describe how
|
|
|
|
|
the output is mapped in the global compositor space.
|
|
|
|
|
Properties sent via this interface are applied atomically via the
|
|
|
|
|
wlr_output_manager.done event. No guarantees are made regarding the order
|
|
|
|
|
in which properties are sent.
|
|
|
|
|
</description>
|
|
|
|
|
|
|
|
|
|
<event name="mode">
|
|
|
|
|
<description summary="advertise a supported mode">
|
|
|
|
|
If the head supports modes, this event is sent once per supported mode.
|
|
|
|
|
</description>
|
|
|
|
|
<arg name="mode" type="new_id" interface="zwlr_output_mode_v1"/>
|
|
|
|
|
</event>
|
|
|
|
|
|
|
|
|
|
<event name="name">
|
|
|
|
|
<description summary="head name">
|
|
|
|
|
This event describes the head name.
|
|
|
|
@ -168,7 +172,9 @@
|
|
|
|
|
|
|
|
|
|
The description is a UTF-8 string with no convention defined for its
|
|
|
|
|
contents. Examples might include 'Foocorp 11" Display' or 'Virtual X11
|
|
|
|
|
output via :1'.
|
|
|
|
|
output via :1'. However, do not assume that the name is a reflection of
|
|
|
|
|
the make, model, serial of the underlying DRM connector or the display
|
|
|
|
|
name of the underlying X11 connection, etc.
|
|
|
|
|
|
|
|
|
|
If the compositor implements xdg-output and this head is enabled,
|
|
|
|
|
the xdg_output.description must report the same description.
|
|
|
|
@ -190,6 +196,14 @@
|
|
|
|
|
<arg name="height" type="int" summary="height in millimeters of the output"/>
|
|
|
|
|
</event>
|
|
|
|
|
|
|
|
|
|
<event name="mode">
|
|
|
|
|
<description summary="introduce a mode">
|
|
|
|
|
This event introduces a mode for this head. It is sent once per
|
|
|
|
|
supported mode.
|
|
|
|
|
</description>
|
|
|
|
|
<arg name="mode" type="new_id" interface="zwlr_output_mode_v1"/>
|
|
|
|
|
</event>
|
|
|
|
|
|
|
|
|
|
<event name="enabled">
|
|
|
|
|
<description summary="head is enabled or disabled">
|
|
|
|
|
This event describes whether the head is enabled. A disabled head is not
|
|
|
|
@ -204,7 +218,7 @@
|
|
|
|
|
<event name="current_mode">
|
|
|
|
|
<description summary="current mode">
|
|
|
|
|
This event describes the mode currently in use for this head. It is only
|
|
|
|
|
sent if the output is enabled and supports modes.
|
|
|
|
|
sent if the output is enabled.
|
|
|
|
|
</description>
|
|
|
|
|
<arg name="mode" type="object" interface="zwlr_output_mode_v1"/>
|
|
|
|
|
</event>
|
|
|
|
@ -251,6 +265,10 @@
|
|
|
|
|
|
|
|
|
|
Some heads don't support output modes, in which case modes won't be
|
|
|
|
|
advertised.
|
|
|
|
|
|
|
|
|
|
Properties sent via this interface are applied atomically via the
|
|
|
|
|
wlr_output_manager.done event. No guarantees are made regarding the order
|
|
|
|
|
in which properties are sent.
|
|
|
|
|
</description>
|
|
|
|
|
|
|
|
|
|
<event name="size">
|
|
|
|
@ -266,7 +284,8 @@
|
|
|
|
|
|
|
|
|
|
<event name="refresh">
|
|
|
|
|
<description summary="mode refresh rate">
|
|
|
|
|
This event describes the mode's fixed vertical refresh rate, if any.
|
|
|
|
|
This event describes the mode's fixed vertical refresh rate. It is only
|
|
|
|
|
sent if the mode has a fixed refresh rate.
|
|
|
|
|
</description>
|
|
|
|
|
<arg name="refresh" type="int" summary="vertical refresh rate in mHz"/>
|
|
|
|
|
</event>
|
|
|
|
@ -322,7 +341,7 @@
|
|
|
|
|
|
|
|
|
|
<request name="disable_head">
|
|
|
|
|
<description summary="disable a head">
|
|
|
|
|
Disable a head. The head's properties are irrelevant in this case.
|
|
|
|
|
Disable a head.
|
|
|
|
|
</description>
|
|
|
|
|
<arg name="head" type="object" interface="zwlr_output_head_v1"
|
|
|
|
|
summary="the head to be disabled"/>
|
|
|
|
@ -363,6 +382,9 @@
|
|
|
|
|
tested them.
|
|
|
|
|
|
|
|
|
|
Upon receiving this event, the client should destroy this object.
|
|
|
|
|
|
|
|
|
|
If the current configuration has changed, events to describe the changes
|
|
|
|
|
will be sent followed by a wlr_output_manager.done event.
|
|
|
|
|
</description>
|
|
|
|
|
</event>
|
|
|
|
|
|
|
|
|
@ -404,12 +426,16 @@
|
|
|
|
|
<interface name="zwlr_output_configuration_head_v1" version="1">
|
|
|
|
|
<description summary="head configuration">
|
|
|
|
|
This object is used by the client to update a single head's configuration.
|
|
|
|
|
|
|
|
|
|
It is a protocol error to set the same property twice.
|
|
|
|
|
</description>
|
|
|
|
|
|
|
|
|
|
<enum name="error">
|
|
|
|
|
<entry name="invalid_mode" value="1" summary="mode doesn't belong to head"/>
|
|
|
|
|
<entry name="invalid_transform" value="2" summary="transform value outside enum"/>
|
|
|
|
|
<entry name="invalid_scale" value="3" summary="scale negative or zero"/>
|
|
|
|
|
<entry name="already_set" value="1" summary="property has already been set"/>
|
|
|
|
|
<entry name="invalid_mode" value="2" summary="mode doesn't belong to head"/>
|
|
|
|
|
<entry name="invalid_custom_mode" value="3" summary="mode is invalid"/>
|
|
|
|
|
<entry name="invalid_transform" value="4" summary="transform value outside enum"/>
|
|
|
|
|
<entry name="invalid_scale" value="5" summary="scale negative or zero"/>
|
|
|
|
|
</enum>
|
|
|
|
|
|
|
|
|
|
<request name="set_mode">
|
|
|
|
@ -419,6 +445,19 @@
|
|
|
|
|
<arg name="mode" type="object" interface="zwlr_output_mode_v1"/>
|
|
|
|
|
</request>
|
|
|
|
|
|
|
|
|
|
<request name="set_custom_mode">
|
|
|
|
|
<description summary="set a custom mode">
|
|
|
|
|
This request assigns a custom mode to the head. The size is given in
|
|
|
|
|
physical hardware units of the output device. If set to zero, the
|
|
|
|
|
refresh rate is unspecified.
|
|
|
|
|
|
|
|
|
|
It is a protocol error to set both a mode and a custom mode.
|
|
|
|
|
</description>
|
|
|
|
|
<arg name="width" type="int" summary="width of the mode in hardware units"/>
|
|
|
|
|
<arg name="height" type="int" summary="height of the mode in hardware units"/>
|
|
|
|
|
<arg name="refresh" type="int" summary="vertical refresh rate in mHz or zero"/>
|
|
|
|
|
</request>
|
|
|
|
|
|
|
|
|
|
<request name="set_position">
|
|
|
|
|
<description summary="set the position">
|
|
|
|
|
This request sets the head's position in the global compositor space.
|
|
|
|
|