kde_output_management_v2
-
# kde_output_management_v2
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. Warning! The protocol described in this file is a desktop environment implementation detail. Regular clients must not use this protocol. Backward incompatible changes may be added without bumping the major version of the extension.Requests
-
struct kde_output_configuration_v2* kde_output_management_v2_create_configuration(struct kde_output_management_v2* kde_output_management_v2)Request an outputconfiguration object through which the client can configure output devices.
-
-
# kde_output_configuration_v2
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
-
void kde_output_configuration_v2_enable(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* outputdevice, /* outputdevice to be en- or disabled */int32_t enable /* 1 to enable or 0 to disable this output */)Mark the output as enabled or disabled.
-
void kde_output_configuration_v2_mode(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* outputdevice, /* outputdevice this mode change applies to */struct kde_output_device_mode_v2* mode /* the mode to apply */)Sets the mode for a given output.
-
void kde_output_configuration_v2_transform(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* outputdevice, /* outputdevice this transformation change applies to */int32_t transform /* transform enum */)Sets the transformation for a given output.
-
void kde_output_configuration_v2_position(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* outputdevice, /* outputdevice this position applies to */int32_t x, /* position on the x-axis */int32_t y /* position on the y-axis */)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.
-
void kde_output_configuration_v2_scale(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* outputdevice, /* outputdevice this scale change applies to */wl_fixed_t scale /* scaling factor */)Sets the scaling factor for this output device.
-
void kde_output_configuration_v2_apply(struct kde_output_configuration_v2* kde_output_configuration_v2)Asks the server to apply property changes requested through this outputconfiguration object to all outputs on the server side. The output configuration can be applied only once. The already_applied protocol error will be posted if the apply request is called the second time.
-
void kde_output_configuration_v2_destroy(struct kde_output_configuration_v2* kde_output_configuration_v2)
-
void kde_output_configuration_v2_overscan(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* outputdevice, /* outputdevice overscan applies to */uint32_t overscan /* overscan value */)Set the overscan value of this output device with a value in percent.
-
void kde_output_configuration_v2_set_vrr_policy(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* outputdevice, /* outputdevice this VRR policy applies to */uint32_t policy /* the vrr policy to apply */)Set what policy the compositor should employ regarding its use of variable refresh rate.
-
void kde_output_configuration_v2_set_rgb_range(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* outputdevice, /* outputdevice the rgb range applies to */uint32_t rgb_range)Whether full or limited color range should be used
-
void kde_output_configuration_v2_set_primary_output(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* output)
-
void kde_output_configuration_v2_set_priority(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* outputdevice, /* outputdevice the index applies to */uint32_t priority /* the priority of the output */)The order of outputs can be used to assign desktop environment components to a specific screen, see kde_output_order_v1 for details. The priority is 1-based for outputs that will be enabled after this changeset is applied, all outputs that are disabled need to have the index set to zero.
-
void kde_output_configuration_v2_set_high_dynamic_range(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* outputdevice, /* outputdevice this setting applies to */uint32_t enable_hdr /* 1 to enable, 0 to disable hdr */)Sets whether or not the output should be set to HDR mode.
-
void kde_output_configuration_v2_set_sdr_brightness(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* outputdevice, /* outputdevice this setting applies to */uint32_t sdr_brightness)Sets the brightness of standard dynamic range content in nits. Only has an effect while the output is in HDR mode. Note that while the value is in nits, that doesn't necessarily translate to the same brightness on the screen.
-
void kde_output_configuration_v2_set_wide_color_gamut(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* outputdevice, /* outputdevice this setting applies to */uint32_t enable_wcg /* 1 to enable, 0 to disable wcg */)Whether or not the output should use a wide color gamut
-
void kde_output_configuration_v2_set_auto_rotate_policy(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* outputdevice, /* outputdevice this setting applies to */uint32_t policy)
-
void kde_output_configuration_v2_set_icc_profile_path(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* outputdevice, /* outputdevice this setting applies to */const char* profile_path)
-
void kde_output_configuration_v2_set_brightness_overrides(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* outputdevice, /* outputdevice this setting applies to */int32_t max_peak_brightness, /* -1 for not overriding, or positive values in nits */int32_t max_frame_average_brightness, /* -1 for not overriding, or positive values in nits */int32_t min_brightness /* -1 for not overriding, or positive values in 0.0001 nits */)
-
void kde_output_configuration_v2_set_sdr_gamut_wideness(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* outputdevice, /* outputdevice this setting applies to */uint32_t gamut_wideness /* 0 means rec.709 primaries, 10000 means native primaries */)This can be used to provide the colors users assume sRGB applications should have based on the default experience on many modern sRGB screens.
-
void kde_output_configuration_v2_set_color_profile_source(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* outputdevice, /* outputdevice this setting applies to */uint32_t color_profile_source /* the color profile source */)
-
void kde_output_configuration_v2_set_brightness(struct kde_output_configuration_v2* kde_output_configuration_v2,struct kde_output_device_v2* outputdevice, /* outputdevice this setting applies to */uint32_t brightness /* brightness in 0-10000 */)Set the brightness modifier of the output. It doesn't specify any absolute values, but is merely a multiplier on top of other brightness values, like sdr_brightness and brightness_metadata. 0 is the minimum brightness (not completely dark) and 10000 is the maximum brightness. This is supported while HDR is active in versions 8 and below, or when the device supports the brightness_control capability in versions 9 and above.
Events
-
Sent after the server has successfully applied the changes. .
-
Sent if the server rejects the changes or failed to apply them.
Enums
-
KDE_OUTPUT_CONFIGURATION_V2_ERROR_ALREADY_APPLIED /* the config is already applied */These error can be emitted in response to kde_output_configuration_v2 requests.
-
KDE_OUTPUT_CONFIGURATION_V2_VRR_POLICY_NEVERKDE_OUTPUT_CONFIGURATION_V2_VRR_POLICY_ALWAYSKDE_OUTPUT_CONFIGURATION_V2_VRR_POLICY_AUTOMATICDescribes when the compositor may employ variable refresh rate
-
KDE_OUTPUT_CONFIGURATION_V2_RGB_RANGE_AUTOMATICKDE_OUTPUT_CONFIGURATION_V2_RGB_RANGE_FULLKDE_OUTPUT_CONFIGURATION_V2_RGB_RANGE_LIMITEDWhether this output should use full or limited rgb.
-
KDE_OUTPUT_CONFIGURATION_V2_AUTO_ROTATE_POLICY_NEVERKDE_OUTPUT_CONFIGURATION_V2_AUTO_ROTATE_POLICY_IN_TABLET_MODEKDE_OUTPUT_CONFIGURATION_V2_AUTO_ROTATE_POLICY_ALWAYS
-
KDE_OUTPUT_CONFIGURATION_V2_COLOR_PROFILE_SOURCE_SRGBKDE_OUTPUT_CONFIGURATION_V2_COLOR_PROFILE_SOURCE_ICCKDE_OUTPUT_CONFIGURATION_V2_COLOR_PROFILE_SOURCE_EDID
-
Copyright Info
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-FileCopyrightText: 2023 Xaver Hugl <xaver.hugl@kde.org>
SPDX-License-Identifier: MIT-CMU