wlr output management

用于配置输出设备的协议

此协议暴露用于获取和修改输出设备配置的接口。

警告!此文件中描述的协议是实验性的,可能会进行不兼容的更改。向后兼容的更改可能会与相应的接口版本号一起添加。不兼容的更改通过提升协议和接口名称中的版本号并重置接口版本来完成。一旦协议被宣布为稳定版本,协议和接口名称中的 'z' 前缀和版本号将被移除,接口版本号将被重置。

输出设备配置管理器

此接口是一个管理器,允许读取和写入当前输出设备配置。

显示像素的输出设备(例如物理监视器或窗口中的虚拟输出)被表示为 head。客户端无法创建或销毁 head,但可以启用或禁用它们,并且可以更改它们的属性。每个 head 可以有一个或多个可用的模式。

每当 head 出现时(例如插入监视器),它将通过 head 事件进行通告。在绑定输出管理器之后,所有当前的 head 都会被通告。

每当 head 的属性发生变化时,相关的 wlr_output_head 事件将被发送。并非所有 head 属性都会被发送:只有已更改的属性需要发送。

每当 head 消失时(例如拔出监视器),将发送 wlr_output_head.finished 事件。

在一个或多个 head 出现、更改或消失之后,将发送 done 事件。它携带一个序列号,可用于 create_configuration 请求来更新 head 属性。

从此协议获取的信息应仅用于输出配置目的。此协议不是为常规客户端设计的通用输出属性通告协议。应改用 xdg-output 等协议。

create_configuration(id: new_id<zwlr_output_configuration_v1>, serial: uint)
参数
类型
描述
idnew_id<zwlr_output_configuration_v1>
serialuint
创建新的输出配置对象

创建一个新的输出配置对象。这允许更新 head 属性。

stop()
停止发送事件

表示客户端不再希望接收输出配置更改的事件。但是 compositor 可能会发出更多事件,直到发出 finished 事件。

客户端在此请求之后不得发送任何更多请求。

head(head: new_id<zwlr_output_head_v1>)
参数
类型
描述
headnew_id<zwlr_output_head_v1>
引入新的 head

此事件引入一个新的 head。每当新的 head 出现时(例如插入监视器)或在绑定输出管理器之后会发生这种情况。

done(serial: uint)
参数
类型
描述
serialuint
current configuration serial
已发送当前配置的所有信息

在绑定到输出管理器对象之后以及任何后续更改之后,所有信息发送完毕后发送此事件。这也适用于子 head 和 mode 对象。换句话说,每当 head 或 mode 被创建或销毁以及它们的属性之一被更改时,都会发送此事件。并非每次当前配置更改时都会重新发送所有状态:只发送实际的更改。

这使得输出配置的更改可以被视为原子操作,即使它们通过多个事件发生。

发送一个序列号以供将来在 create_configuration 请求中使用。

finished()
compositor 已完成管理器操作

此事件表示 compositor 已完成发送管理器事件。compositor 将在此事件发送后立即销毁该对象,因此它将变为无效,客户端应释放与其关联的任何资源。


输出设备

head 是一个输出设备。wl_output 对象和 head 之间的区别在于,即使 head 被关闭也会被通告。head 对象仅通告属性,不能直接用于更改它们。

head 有一些只读属性:modes、name、description 和 physical_size。客户端无法更改这些属性。

其他属性可以通过 wlr_output_configuration 对象进行更新。

通过此接口发送的属性通过 wlr_output_manager.done 事件原子地应用。不保证属性发送的顺序。

release
类型: destructor起始版本 3
release()
销毁 head 对象

此请求表示客户端将不再使用此 head 对象。

name(name: string)
参数
类型
描述
namestring
head 名称

此事件描述 head 名称。

命名约定由 compositor 定义,但仅限于字母数字字符和连字符 (-)。每个名称在所有 wlr_output_head 对象中是唯一的,但如果 wlr_output_head 对象被销毁,相同的名称可能会在以后被重用。在具有相同硬件和软件配置的会话中,名称也将保持一致。

名称的示例包括 'HDMI-A-1'、'WL-1'、'X11-1' 等。但是,不要假设名称是底层 DRM 连接器、X11 连接等的反映。

如果此 head 匹配 wl_output,则 wl_output.name 事件必须报告相同的名称。

name 事件在创建 wlr_output_head 对象之后发送。此事件每个对象只发送一次,并且在 wlr_output_head 对象的生命周期内名称不会更改。

description(description: string)
参数
类型
描述
descriptionstring
head 描述

此事件描述 head 的人类可读描述。

description 是一个 UTF-8 字符串,其内容没有定义的约定。示例可能包括 'Foocorp 11" Display' 或 'Virtual X11 output via :1'。但是,不要假设名称是底层 DRM 连接器的品牌、型号、序列号或底层 X11 连接的显示名称等的反映。

如果此 head 匹配 wl_output,则 wl_output.description 事件必须报告相同的名称。

description 事件在创建 wlr_output_head 对象之后发送。此事件每个对象只发送一次,并且在 wlr_output_head 对象的生命周期内描述不会更改。

physical_size(width: int, height: int)
参数
类型
描述
widthint
width in millimeters of the output
heightint
height in millimeters of the output
head 物理尺寸

此事件描述 head 的物理尺寸。仅当 head 具有物理尺寸时(例如不是投影仪或虚拟设备),才会发送此事件。

physical_size 事件在创建 wlr_output_head 对象之后发送。此事件每个对象只发送一次,并且在 wlr_output_head 对象的生命周期内物理尺寸不会更改。

mode(mode: new_id<zwlr_output_mode_v1>)
参数
类型
描述
modenew_id<zwlr_output_mode_v1>
引入模式

此事件为此 head 引入一个模式。每个支持的模式发送一次。

enabled(enabled: int)
参数
类型
描述
enabledint
zero if disabled, non-zero if enabled
head 已启用或禁用

此事件描述 head 是否已启用。禁用的 head 不会映射到全局 compositor 空间的某个区域。

当 head 被禁用时,某些属性(current_mode、position、transform 和 scale)将无关紧要。

current_mode(mode: object<zwlr_output_mode_v1>)
参数
类型
描述
modeobject<zwlr_output_mode_v1>
当前模式

此事件描述此 head 当前使用的模式。仅在输出已启用时才会发送。

position(x: int, y: int)
参数
类型
描述
xint
x position within the global compositor space
yint
y position within the global compositor space
当前位置

此事件描述 head 在全局 compositor 空间中的位置。仅在输出已启用时才会发送。

参数
类型
描述
transformint<wl_output.transform>
当前变换

此事件描述当前应用于 head 的变换。仅在输出已启用时才会发送。

scale(scale: fixed)
参数
类型
描述
scalefixed
当前缩放比例

此事件描述 head 在全局 compositor 空间中的缩放比例。仅在输出已启用时才会发送。

finished()
head 已消失

此事件表示 head 不再可用。head 对象变为无效。客户端应发送销毁请求并释放与其关联的任何资源。

make(make: string)
参数
类型
描述
makestring
head 制造商

此事件描述 head 的制造商。

与 model 和 serial_number 事件一起,其目的是允许客户端识别来自以前会话的 head,并例如加载特定于 head 的配置。

不保证此事件会被发送。原因可能是 compositor 没有关于 head 制造商的信息,或者在当前设置中制造商的定义不合理,例如在虚拟会话中。客户端仍然可以尝试通过其他事件的可用信息来识别 head,但应注意误报的风险增加。

如果发送,make 事件在创建 wlr_output_head 对象之后发送,并且每个对象只发送一次。在 wlr_output_head 对象的生命周期内,制造商不会更改。

不建议在 UI 中向用户显示 make 字符串。为此,应优先使用 description 事件提供的字符串。

model(model: string)
参数
类型
描述
modelstring
head 型号

此事件描述 head 的型号。

与 make 和 serial_number 事件一起,其目的是允许客户端识别来自以前会话的 head,并例如加载特定于 head 的配置。

不保证此事件会被发送。原因可能是 compositor 没有关于 head 型号的信息,或者在当前设置中型号的定义不合理,例如在虚拟会话中。客户端仍然可以尝试通过其他事件的可用信息来识别 head,但应注意误报的风险增加。

如果发送,model 事件在创建 wlr_output_head 对象之后发送,并且每个对象只发送一次。在 wlr_output_head 对象的生命周期内,型号不会更改。

不建议在 UI 中向用户显示 model 字符串。为此,应优先使用 description 事件提供的字符串。

serial_number(serial_number: string)
参数
类型
描述
serial_numberstring
head 序列号

此事件描述 head 的序列号。

与 make 和 model 事件一起,其目的是允许客户端识别来自以前会话的 head,并例如加载特定于 head 的配置。

不保证此事件会被发送。原因可能是 compositor 没有关于 head 序列号的信息,或者在当前设置中序列号的定义不合理。客户端仍然可以尝试通过其他事件的可用信息来识别 head,但应注意误报的风险增加。

如果发送,serial_number 事件在创建 wlr_output_head 对象之后发送,并且每个对象只发送一次。在 wlr_output_head 对象的生命周期内,序列号不会更改。

不建议在 UI 中向用户显示 serial_number 字符串。为此,应优先使用 description 事件提供的字符串。

当前 adaptive sync 状态

此事件描述 head 当前是否启用了 adaptive sync。Adaptive sync 也称为可变刷新率 (Variable Refresh Rate) 或 VRR。

adaptive_sync_state { disabled, enabled } 
参数
描述
disabled0
adaptive sync 已禁用
enabled1
adaptive sync 已启用

输出模式

此对象描述输出模式。

某些 head 不支持输出模式,在这种情况下不会通告模式。

通过此接口发送的属性通过 wlr_output_manager.done 事件原子地应用。不保证属性发送的顺序。

release
类型: destructor起始版本 3
release()
销毁 mode 对象

此请求表示客户端将不再使用此 mode 对象。

size(width: int, height: int)
参数
类型
描述
widthint
width of the mode in hardware units
heightint
height of the mode in hardware units
模式尺寸

此事件描述模式的尺寸。尺寸以输出设备的物理硬件单位给出。这不一定与全局 compositor 空间中的输出尺寸相同。例如,输出可能被缩放或变换。

refresh(refresh: int)
参数
类型
描述
refreshint
vertical refresh rate in mHz
模式刷新率

此事件描述模式的固定垂直刷新率。仅在模式具有固定刷新率时才会发送。

preferred()
模式为首选

此事件将此模式通告为首选模式。

finished()
模式已消失

此事件表示模式不再可用。mode 对象变为无效。客户端应发送销毁请求并释放与其关联的任何资源。


输出配置

客户端使用此对象来描述完整的输出配置。

首先,客户端需要设置输出配置。每个 head 可以被启用(并配置)或禁用。使用相同的 head 发送两个 enable_head 或 disable_head 请求是协议错误。在配置中省略 head 也是协议错误。

然后,客户端可以应用或测试配置。compositor 将以 succeeded、failed 或 cancelled 事件进行回复。最后,客户端应销毁配置对象。

参数
类型
描述
idnew_id<zwlr_output_configuration_head_v1>
a new object to configure the head
headobject<zwlr_output_head_v1>
the head to be enabled
启用并配置 head

启用 head。此请求创建一个 head 配置对象,可用于更改 head 的属性。

disable_head(head: object<zwlr_output_head_v1>)
参数
类型
描述
headobject<zwlr_output_head_v1>
the head to be disabled
禁用 head

禁用 head。

apply()
应用配置

应用新的输出配置。

如果配置成功应用,不保证新的输出状态与请求的配置完全匹配。例如,如果 compositor 不支持分数缩放,它可能会四舍五入缩放值。

发送此请求后,compositor 必须以 succeeded、failed 或 cancelled 事件进行响应。发送不是析构器的请求是协议错误。

test()
测试配置

测试新的输出配置。配置不会被应用,只会被验证。

即使 compositor 成功测试了配置,应用它也可能失败。

发送此请求后,compositor 必须以 succeeded、failed 或 cancelled 事件进行响应。发送不是析构器的请求是协议错误。

destroy()
销毁输出配置

使用此请求,客户端可以告知 compositor 它不再使用配置对象。任何未应用的输出更改将被丢弃。

此请求还会销毁通过此对象创建的 wlr_output_configuration_head 对象。

succeeded()
配置更改成功

在 compositor 成功应用更改或测试更改后发送。

收到此事件后,客户端应销毁此对象。

如果当前配置已更改,将发送描述更改的事件,然后发送 wlr_output_manager.done 事件。

failed()
配置更改失败

如果 compositor 拒绝更改或应用更改失败,则发送。compositor 应恢复由触发此事件的 apply 请求所做的任何更改。

收到此事件后,客户端应销毁此对象。

cancelled()
配置已被取消

如果 compositor 因为输出状态发生变化且客户端信息过时(例如在输出热插拔之后)而取消配置,则发送。

客户端可以使用更新的序列号创建新配置并重试。

收到此事件后,客户端应销毁此对象。

参数
描述
already_configured_head1
head 已被配置两次
unconfigured_head2
head 尚未配置
already_used3
在配置已应用或测试后发送请求

head 配置

客户端使用此对象来更新单个 head 的配置。

设置相同的属性两次是协议错误。

set_mode(mode: object<zwlr_output_mode_v1>)
参数
类型
描述
modeobject<zwlr_output_mode_v1>
设置模式

此请求设置 head 的模式。

set_custom_mode(width: int, height: int, refresh: int)
参数
类型
描述
widthint
width of the mode in hardware units
heightint
height of the mode in hardware units
refreshint
vertical refresh rate in mHz or zero
设置自定义模式

此请求为 head 分配自定义模式。尺寸以输出设备的物理硬件单位给出。如果设置为零,则刷新率未指定。

同时设置 mode 和 custom mode 是协议错误。

set_position(x: int, y: int)
参数
类型
描述
xint
x position in the global compositor space
yint
y position in the global compositor space
设置位置

此请求设置 head 在全局 compositor 空间中的位置。

set_transform(transform: int<wl_output.transform>)
参数
类型
描述
transformint<wl_output.transform>
设置变换

此请求设置 head 的变换。

set_scale(scale: fixed)
参数
类型
描述
scalefixed
设置缩放比例

此请求设置 head 的缩放比例。

启用/禁用 adaptive sync

此请求启用/禁用 adaptive sync。Adaptive sync 也称为可变刷新率 (Variable Refresh Rate) 或 VRR。

参数
描述
already_set1
属性已被设置
invalid_mode2
模式不属于此 head
invalid_custom_mode3
模式无效
invalid_transform4
transform 值超出枚举范围
invalid_scale5
缩放比例为负数或零
invalid_adaptive_sync_state起始版本 46
set_adaptive_sync 请求中使用了无效的枚举值

合成器支持

Cage
Cage
0.2.0
COSMIC
COSMIC
1.0.0~beta.8
GameScope
GameScope
3.15.14
Hyprland
Hyprland
0.52.1
Jay
1.12.0
KWin
KWin
6.6
Labwc
Labwc
0.9.2
Louvre
Louvre
2.14.1
Mir
Mir
2.26
Muffin
Muffin
6.6.0
Mutter
Mutter
49.2
niri
niri
25.11
phoc
phoc
0.52
river
river
0.3.13
Sway
Sway
1.11
Treeland
Treeland
0.8.0
Wayfire
Wayfire
0.9.0
Weston
Weston
14.0.2
zwlr_output_manager_v1
4
4
x
4
4
x
4
4
x
x
x
4
4
4
4
4
4
x

Copyright © 2019 Purism SPC

Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of the copyright holders not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. The copyright holders make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.

THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

Footer

© 2026 Wayland Explorer

本网站与 Wayland 官方项目无任何关联。网站所有内容均根据 Wayland 协议 XML 文件自动生成。

本网站使用的 Visual Studio Code - Codicons 遵循 CC BY 4.0 许可。