KDE output management v2
此接口使客户端能够通过服务器设置输出设备的属性,用于屏幕配置。为此,输出设备通过全局 kde_output_device_v2 对象引用。
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
服务器将一个 outputmanagement 对象注册为全局对象。要配置输出,客户端请求 create_configuration,该请求提供一个引用 outputconfiguration 的资源用于一次性配置。这样服务器就知道哪些请求属于一起,并可以按此分组。
在 outputconfiguration 对象上,客户端为每个输出调用是否启用该输出、应设置哪个模式(通过引用已公布模式列表中的模式)以及输出的全局位置。以这种方式配置完所有输出后,客户端调用 apply。 此时(而非更早)服务器应尝试应用配置。如果成功,服务器发出 applied 信号,否则发出 failed 信号,以便配置客户端了解其配置请求的结果。
通过这种设计,如果服务器内部支持,该接口可以实现原子性的输出配置更改。
警告!此文件中描述的协议是桌面环境的实现细节。普通客户端不得使用此协议。可能会添加不向后兼容的更改,而无需递增扩展的主版本号。
create_configuration(id: new_id<kde_output_configuration_v2>)
参数 | 类型 | 描述 |
|---|---|---|
| id | new_id<kde_output_configuration_v2> |
请求一个 outputconfiguration 对象,客户端可以通过它配置输出设备。
create_mode_list(id: new_id<kde_mode_list_v2>)
参数 | 类型 | 描述 |
|---|---|---|
| id | new_id<kde_mode_list_v2> |
有关详细信息,请参阅 kde_mode_list_v2 和 kde_output_configuration_v2.set_custom_modes 的描述。
outputconfiguration 是一个客户端特定的资源,可用于请求服务器对可用输出设备应用更改。
客户端从注册表接收输出设备列表。当它想要应用新设置时,它从 outputmanagement 全局对象创建一个配置对象,通过此对象的 enable、scale、transform 和 mode 调用写入更改。然后它要求服务器以原子方式应用这些设置,例如通过 Linux 的 DRM 接口。
服务器发回信号,指示新设置是已成功应用还是应用失败。outputdevice 对象在更改应用到硬件之后、服务器端发送 applied 事件之前更新。
enable(outputdevice: object<kde_output_device_v2>, enable: int)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice to be en- or disabled |
| enable | int | 1 to enable or 0 to disable this output |
将输出标记为启用或禁用。
mode(outputdevice: object<kde_output_device_v2>, mode: object<kde_output_device_mode_v2>)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this mode change applies to |
| mode | object<kde_output_device_mode_v2> | the mode to apply |
为给定输出设置模式。
transform(outputdevice: object<kde_output_device_v2>, transform: int)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this transformation change applies to |
| transform | int | transform enum |
为给定输出设置变换。
position(outputdevice: object<kde_output_device_v2>, x: int, y: int)
参数 | 类型 | 描述 |
|---|---|---|
| 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 |
设置此输出设备的位置。(x,y) 描述输出在全局空间中的左上角,其中全局空间的原点 (0,0) 必须与最左侧输出的左上角对齐,如果这不能定义唯一的输出,则与顶部输出对齐。
输出之间不能有间隙或重叠,即输出在水平、垂直或两个方向上堆叠。
scale(outputdevice: object<kde_output_device_v2>, scale: fixed)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this scale change applies to |
| scale | fixed | scaling factor |
设置此输出设备的缩放因子。
apply()
请求服务器在服务器端将通过此 outputconfiguration 对象请求的属性更改应用到所有输出。
输出配置只能应用一次。如果第二次调用 apply 请求,将发布 already_applied 协议错误。
overscan(outputdevice: object<kde_output_device_v2>, overscan: uint)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice overscan applies to |
| overscan | uint | overscan value |
以百分比值设置此输出设备的过扫描值。
set_vrr_policy(outputdevice: object<kde_output_device_v2>, policy: uint<kde_output_configuration_v2.vrr_policy>)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this VRR policy applies to |
| policy | uint<kde_output_configuration_v2.vrr_policy> | the vrr policy to apply |
设置合成器在使用可变刷新率时应采用的策略。
set_rgb_range(outputdevice: object<kde_output_device_v2>, rgb_range: uint<kde_output_configuration_v2.rgb_range>)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice the rgb range applies to |
| rgb_range | uint<kde_output_configuration_v2.rgb_range> |
应使用全范围还是有限范围的颜色。
set_primary_output(output: object<kde_output_device_v2>)
参数 | 类型 | 描述 |
|---|---|---|
| output | object<kde_output_device_v2>允许为空 |
set_priority(outputdevice: object<kde_output_device_v2>, priority: uint)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice the index applies to |
| priority | uint | the priority of the output |
设置输出在输出顺序列表中的位置,较小的值排在前面。列表没有特定的起始值,此值仅用于排序输出。
输出顺序可用于将桌面环境组件分配到特定屏幕,详见 kde_output_order_v1 和 kde_output-device-v2。请注意,为了行为一致,priority 值在所有已启用的输出中必须是唯一的。
set_high_dynamic_range(outputdevice: object<kde_output_device_v2>, enable_hdr: uint)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this setting applies to |
| enable_hdr | uint | 1 to enable, 0 to disable hdr |
设置输出是否应设置为 HDR 模式。
set_sdr_brightness(outputdevice: object<kde_output_device_v2>, sdr_brightness: uint)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this setting applies to |
| sdr_brightness | uint |
以 nits 为单位设置标准动态范围内容的亮度。仅在输出处于 HDR 模式时有效。请注意,虽然值以 nits 为单位,但这不一定转化为屏幕上相同的亮度。
set_wide_color_gamut(outputdevice: object<kde_output_device_v2>, enable_wcg: uint)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this setting applies to |
| enable_wcg | uint | 1 to enable, 0 to disable wcg |
输出是否应使用广色域。
set_auto_rotate_policy(outputdevice: object<kde_output_device_v2>, policy: uint<kde_output_configuration_v2.auto_rotate_policy>)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this setting applies to |
| policy | uint<kde_output_configuration_v2.auto_rotate_policy> |
set_icc_profile_path(outputdevice: object<kde_output_device_v2>, profile_path: string)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this setting applies to |
| profile_path | string |
set_brightness_overrides(outputdevice: object<kde_output_device_v2>, max_peak_brightness: int, max_frame_average_brightness: int, min_brightness: int)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this setting applies to |
| max_peak_brightness | int | -1 for not overriding, or positive values in nits |
| max_frame_average_brightness | int | -1 for not overriding, or positive values in nits |
| min_brightness | int | -1 for not overriding, or positive values in 0.0001 nits |
set_sdr_gamut_wideness(outputdevice: object<kde_output_device_v2>, gamut_wideness: uint)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this setting applies to |
| gamut_wideness | uint | 0 means rec.709 primaries, 10000 means native primaries |
这可用于提供用户基于许多现代 sRGB 屏幕上的默认体验所期望的 sRGB 应用程序应有的颜色。
set_color_profile_source(outputdevice: object<kde_output_device_v2>, color_profile_source: uint<kde_output_configuration_v2.color_profile_source>)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this setting applies to |
| color_profile_source | uint<kde_output_configuration_v2.color_profile_source> | the color profile source |
set_brightness(outputdevice: object<kde_output_device_v2>, brightness: uint)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this setting applies to |
| brightness | uint | brightness in 0-10000 |
设置输出的亮度调节器。它不指定任何绝对值,而只是其他亮度值(如 sdr_brightness 和 brightness_metadata)之上的乘数。0 是最小亮度(不是完全黑暗),10000 是最大亮度。 在版本 8 及以下的 HDR 激活时支持,在版本 9 及以上时在设备支持 "brightness" 能力时支持。
set_color_power_tradeoff(outputdevice: object<kde_output_device_v2>, preference: uint<kde_output_configuration_v2.color_power_tradeoff>)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this setting applies to |
| preference | uint<kde_output_configuration_v2.color_power_tradeoff> |
set_dimming(outputdevice: object<kde_output_device_v2>, multiplier: uint)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this setting applies to |
| multiplier | uint | multiplier in 0-10000 |
设置输出的调光乘数。这类似于亮度设置,但它仅用于临时设置,不是持久的,并且可能因显示器而有不同的实现方式。0 是最小调光因子(不是完全黑暗),10000 表示输出未被调光。
仅在同时支持 "brightness" 能力时才支持此功能。
set_replication_source(outputdevice: object<kde_output_device_v2>, source: string)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this setting applies to |
| source | string | uuid of the source output |
设置输出设备应镜像其视口的源输出。
set_ddc_ci_allowed(outputdevice: object<kde_output_device_v2>, allowed: uint)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this setting applies to |
| allowed | uint | 1 if allowed, 0 if disabled |
set_max_bits_per_color(outputdevice: object<kde_output_device_v2>, max_bpc: uint)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this setting applies to |
| max_bpc | uint | 0 for the default / automatic |
这限制了发送到显示器的每种颜色的位数。
set_edr_policy(outputdevice: object<kde_output_device_v2>, policy: uint<kde_output_configuration_v2.edr_policy>)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this setting applies to |
| policy | uint<kde_output_configuration_v2.edr_policy> |
当 EDR 启用时,合成器可以将背光提高到用户指定设置之上,以便在没有原生 HDR 支持的显示器上呈现 HDR 内容。这通常会带来更好的视觉效果,但也会增加电池使用量。
set_sharpness(outputdevice: object<kde_output_device_v2>, sharpness: uint)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this setting applies to |
| sharpness | uint | sharpness in 0-10000 |
这是输出的锐度调节器。0 表示禁用锐度,10000 表示最大锐度。
set_custom_modes(outputdevice: object<kde_output_device_v2>, modes: object<kde_mode_list_v2>)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this setting applies to |
| modes | object<kde_mode_list_v2> |
设置此输出的自定义模式列表。合成器将响应生成请求的模式并将其添加到输出(或删除不再在列表中的模式)。这对于超频显示器或解决损坏的 EDID 很有用。 请注意,不保证任何自定义模式实际上能工作,甚至不保证不会损坏显示器(对于 CRT)。确保每个添加的模式适合其显示器完全是用户的责任。
set_auto_brightness(outputdevice: object<kde_output_device_v2>, enabled: uint)
参数 | 类型 | 描述 |
|---|---|---|
| outputdevice | object<kde_output_device_v2> | outputdevice this setting applies to |
| enabled | uint | 1 for enabled, 0 for disabled |
failure_reason(reason: string)
参数 | 类型 | 描述 |
|---|---|---|
| reason | string | reason for failure |
描述应用输出配置失败的原因。仅在 failure 事件之前发送。
error { already_applied }
参数 | 值 | 描述 |
|---|---|---|
| already_applied | 0 | 配置已被应用 |
这些错误可以在响应 kde_output_configuration_v2 请求时发出。
描述合成器何时可以使用可变刷新率。
此输出应使用全范围还是有限范围的 RGB。
color_power_tradeoff { efficiency, accuracy }
参数 | 值 | 描述 |
|---|---|---|
| efficiency | 0 | 优先考虑效率和性能 |
| accuracy | 1 | 优先考虑准确性 |
合成器可以在性能、功耗和颜色准确性之间做很多事情。此设置描述了用户关于应在哪个方向进行权衡的高级偏好。
kde_mode_list_v2
此列表通过首先设置每个相关属性,然后调用 add_mode 来添加具有这些属性的模式来填充。例如,可以调用
- set_resolution
- set_refresh_rate
- set_reduced_blanking
- add_mode
add_mode 不会重置先前设置的属性,它们在对象被销毁之前有效。合成器可能对某些属性(如 reduced_blanking)有合理的默认值,但为了获得一致的结果,最好每次都设置每个已知属性。
参数 resolution 和 refresh rate 是必需的,如果未设置,将发出 missing_parameters 错误。
set_reduced_blanking(reduced: uint)
参数 | 类型 | 描述 |
|---|---|---|
| reduced | uint | 1 for reduced blanking, 0 for normal vblank duration |
减少消隐是一种优化,可以通过减少 vblank 所需的时间来降低显示模式的带宽/时序要求。由于并非所有显示器都支持它,可能仍需要关闭它(如 CRT 需要完全消隐)。
error { missing_parameters }
参数 | 值 | 描述 |
|---|---|---|
| missing_parameters | 0 | 未设置必需的参数 |
这些错误可以在响应 add_mode 请求时发出。
合成器支持
Cage | COSMIC | GameScope | Hyprland | Jay | KWin | Labwc | Louvre | Mir | Muffin | Mutter | niri | phoc | river | Sway | Treeland | Wayfire | Weston | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| kde_output_management_v2 | x | x | x | x | x | 19 | x | x | x | x | x | x | x | x | x | x | x | x |
Copyright
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