kde_output_management_v2 protocol

kde_output_management_v2 interface version 2

This interface enables clients to set properties of output devices for screen configuration purposes via the server. To this end output devices are referenced by global kde_output_device_v2 objects. outputmanagement (wl_global) -------------------------- request: * create_configuration -> outputconfiguration (wl_resource) outputconfiguration (wl_resource) -------------------------- requests: * enable(outputdevice, bool) * mode(outputdevice, mode) * transformation(outputdevice, flag) * position(outputdevice, x, y) * apply events: * applied * failed The server registers one outputmanagement object as a global object. In order to configure outputs a client requests create_configuration, which provides a resource referencing an outputconfiguration for one-time configuration. That way the server knows which requests belong together and can group them by that. On the outputconfiguration object the client calls for each output whether the output should be enabled, which mode should be set (by referencing the mode from the list of announced modes) and the output's global position. Once all outputs are configured that way, the client calls apply. At that point and not earlier the server should try to apply the configuration. If this succeeds the server emits the applied signal, otherwise the failed signal, such that the configuring client is noticed about the success of its configuration request. Through this design the interface enables atomic output configuration changes if internally supported by the server.

Requests

create_configuration since version 0

create_configuration(id new_id[kde_output_configuration_v2])

Request an outputconfiguration object through which the client can configure output devices.

Arguments
Name Type Description
id new_id[kde_output_configuration_v2]


kde_output_configuration_v2 interface version 2

outputconfiguration is a client-specific resource that can be used to ask the server to apply changes to available output devices. The client receives a list of output devices from the registry. When it wants to apply new settings, it creates a configuration object from the outputmanagement global, writes changes through this object's enable, scale, transform and mode calls. It then asks the server to apply these settings in an atomic fashion, for example through Linux' DRM interface. The server signals back whether the new settings have applied successfully or failed to apply. outputdevice objects are updated after the changes have been applied to the hardware and before the server side sends the applied event.

Requests

enable since version 0

enable(outputdevice object[kde_output_device_v2], enable int)

Mark the output as enabled or disabled.

Arguments
Name Type Description
outputdevice object[kde_output_device_v2] outputdevice to be en- or disabled
enable int 1 to enable or 0 to disable this output

mode since version 0

mode(outputdevice object[kde_output_device_v2], mode object[kde_output_device_mode_v2])

Sets the mode for a given output.

Arguments
Name Type Description
outputdevice object[kde_output_device_v2] outputdevice this mode change applies to
mode object[kde_output_device_mode_v2] the mode to apply

transform since version 0

transform(outputdevice object[kde_output_device_v2], transform int)

Sets the transformation for a given output.

Arguments
Name Type Description
outputdevice object[kde_output_device_v2] outputdevice this transformation change applies to
transform int transform enum

position since version 0

position(outputdevice object[kde_output_device_v2], x int, y int)

Sets the position for this output device. (x,y) describe the top-left corner of the output in global space, whereby the origin (0,0) of the global space has to be aligned with the top-left corner of the most left and in case this does not define a single one the top output. There may be no gaps or overlaps between outputs, i.e. the outputs are stacked horizontally, vertically, or both on each other.

Arguments
Name Type Description
outputdevice object[kde_output_device_v2] outputdevice this position applies to
x int position on the x-axis
y int position on the y-axis

scale since version 0

scale(outputdevice object[kde_output_device_v2], scale fixed)

Sets the scaling factor for this output device.

Arguments
Name Type Description
outputdevice object[kde_output_device_v2] outputdevice this scale change applies to
scale fixed scaling factor

apply since version 0

apply()

Asks the server to apply property changes requested through this outputconfiguration object to all outputs on the server side.


destroy (destructor) since version 0

~destroy()

overscan since version 0

overscan(outputdevice object[kde_output_device_v2], overscan uint)

Set the overscan value of this output device with a value in percent.

Arguments
Name Type Description
outputdevice object[kde_output_device_v2] outputdevice overscan applies to
overscan uint overscan value

set_vrr_policy since version 0

set_vrr_policy(outputdevice object[kde_output_device_v2], policy uint)

Set what policy the compositor should employ regarding its use of variable refresh rate.

Arguments
Name Type Description
outputdevice object[kde_output_device_v2] outputdevice this VRR policy applies to
policy uint the vrr policy to apply

set_rgb_range since version 0

set_rgb_range(outputdevice object[kde_output_device_v2], rgb_range uint)

Whether full or limited color range should be used

Arguments
Name Type Description
outputdevice object[kde_output_device_v2] outputdevice the rgb range applies to
rgb_range uint

set_primary_output since version 2

set_primary_output(output object[kde_output_device_v2])
Arguments
Name Type Description
output object[kde_output_device_v2]

Events

applied since version 0

applied()

Sent after the server has successfully applied the changes. .


failed since version 0

failed()

Sent if the server rejects the changes or failed to apply them.


Enums

vrr_policy since version 0

Describes when the compositor may employ variable refresh rate

enum vrr_policy {
never = 0,
always = 1,
automatic = 2,
}
Entries
Name Value Description
never 0
always 1
automatic 2

rgb_range since version 0

Whether this output should use full or limited rgb.

enum rgb_range {
automatic = 0,
full = 1,
limited = 2,
}
Entries
Name Value Description
automatic 0
full 1
limited 2

SPDX-FileCopyrightText: 2008-2011 Kristian Høgsberg SPDX-FileCopyrightText: 2010-2011 Intel Corporation SPDX-FileCopyrightText: 2012-2013 Collabora, Ltd. SPDX-FileCopyrightText: 2015 Sebastian Kügler <sebas@kde.org> SPDX-FileCopyrightText: 2021 Méven Car <meven.car@enioka.com> SPDX-License-Identifier: MIT-CMU