1 个稳定版本
1.0.0 | 2024 年 1 月 25 日 |
---|
#427 在 GUI
60 每月下载量
94KB
2K SLoC
wayland-protocols-async
使用 Actor 模型和 tokio 消息实现的异步方式实现的 Wayland 客户端协议
外层管理列表
实现了 zwlr-foreign-toplevel-management-unstable-v1 (ver: 3)
协议。所有活动并打开的顶层都记录在 SlotMap
中,使用唯一的 ToplevelKey
,您可以使用消息检索或接收事件来获取。
消息 ToplevelMessage
以下枚举中显示了支持的消息列表
GetToplevels
- 返回所有当前打开的顶层键GetToplevelMeta
- 对于一个顶层,获取其元数据 - 标题、app_id 和状态Activate
- 设置一个顶层为聚焦状态(使用激活方法)SetFullscreen
- 设置一个顶层为全屏SetMaximize
- 设置一个顶层为最大化(如果您的合成器支持)SetMinimize
- 设置一个顶层为最小化(如果您的合成器支持)UnsetFullscreen
- 从全屏取消设置一个顶层UnsetMaximize
- 从最大化取消设置一个顶层(如果您的合成器支持)UnsetMinimize
- 从最小化取消设置一个顶层(如果您的合成器支持)Close
- 关闭一个顶层应用程序
事件 ToplevelEvent
以下是可以从顶层处理程序接收的事件列表
Created
- 当创建一个新的顶层时Title
- 当顶层的title
更新时AppId
- 当顶层的app_id
更新时完成
- 当状态的所有更改都已发送时状态
- 当顶层状态更新时,状态基于此 枚举 进行映射关闭
- 当顶层关闭时OutputEnter
- 当顶层在输出上可见时OutputLeave
- 当顶层在输出上不再可见时Parent
- 当顶层的父节点更改时。
输入法
实现了 zwp-input-method-unstable-v2 (ver: 1)
协议。目前涵盖了 input_method
事件和请求。此协议有助于触发虚拟键盘或发送键盘输入。
消息 InputMethodMessage
目前为此协议实现了以下消息。
CommitString
- 向应用程序发送提交字符串SetPreeditString
- 向客户端应用程序发送预编辑字符串文本DeleteSurroundingText
- 删除周围文本Commit
- 根据上述事件应用状态更改
事件 InputMethodMessage
可以从输入法处理器接收以下事件的列表
Activate
- 当文本输入在座位上获得焦点并请求激活输入法时。您可以使用此功能显示虚拟键盘。Deactivate
- 当没有活动或聚焦的文本输入时。您可以使用此功能隐藏虚拟键盘。Done
- 当所有更改都应用时触发。SurroundingText
- 返回带有光标和选择锚点的周围文本。TextChangeCause
- 告诉输入法为什么周围文本被更改ContentType
- 根据接口指示输入法的类型和提示Unavailable
- 输入法不再可用
注意 - GetInputPopupSurface
和 GrabKeyboard
方法未实现,以及与其相关的事件。
输出管理
实现了 zwlr-output-management-unstable-v1 (ver: 4)
协议。此协议使您能够接收有关输出、其头和模式的操作事件和元数据。您可以使用此协议通过启用或禁用头、设置自定义模式等方法配置输出。
消息
GetHeads
- 返回输出中的所有头及其元数据,响应中的id
可用于头相关操作GetHead
- 根据指定的id
返回特定的头GetMode
- 根据请求中的id
返回特定模式EnableHead
- 启用输出上的头部DisableHead
- 禁用输出上的头部SetMode
- 设置头部的模式SetCustomMode
- 为头部设置自定义模式(高度、宽度、刷新率)SetPosition
- 设置头部的位置SetTransform
- 设置头部的变换(旋转)SetScale
- 设置缩放(缩放)SetAdaptiveSync
- 启用或禁用自适应同步(如果您的合成器支持)
事件
Head
- 当新的头部出现或当新的管理器绑定时立即发生Done
- 当输出管理器绑定后,所有更改或事件都已设置。这是输出管理器准备接收配置事件的时候Finished
- 当合成器完成与该管理器的交互后,不会发送任何事件或接受任何配置。此时需要重新实例化处理程序或将其终止。HeadName
- 描述头部的名称HeadDescription
- 头部的人类可读描述HeadPhysicalSize
- 头部的物理尺寸HeadMode
- 引入头部支持的新的模式HeadEnabled
- 当头部启用时发出HeadCurrentMode
- 描述头部当前使用的模式,仅在输出启用时发送HeadPosition
- 描述头部在合成器空间中的位置HeadTransform
- 当前应用于头部的变换HeadScale
- 头部的缩放值HeadFinished
- 表明头部不再可用。客户端应销毁对它的所有引用。HeadMake
- 描述头部的制造商HeadModel
- 描述头部的型号HeadSerialNumber
- 描述头部的序列号HeadAdaptiveSync
- 返回 AdaptiveSync 的状态(启用或禁用)ModeSize
- 描述输出设备的物理硬件单位中的模式尺寸ModeRefresh
- 描述模式的垂直刷新率ModePreferred
- 当输出头部首选模式时发出ModeFinished
- 表明该模式不再可用。客户端应销毁对它的所有引用。ConfigurationSucceeded
- 在合成器成功应用配置请求中发送的所有更改后发送ConfigurationFailed
- 如果配置失败或合成器拒绝它们,则发送ConfigurationCancelled
- 如果合成器取消配置请求(由于输出中的任何更改),则发送
会话锁定
实现了ext-session-lock-v1 (ver: 1)
协议。此协议使您能够锁定和解锁会话,并提供重新配置锁定表面(更新)的选项。
消息
Lock
- 锁定会话并返回布尔值。您可以将自定义的wl_surface
传递给处理器,否则处理器将创建一个空表面。Unlock
- 解锁会话并返回布尔值AckConfigure
- 确认最后的配置事件(用于重新绘制)
事件
Locked
- 当会话被锁定时Finished
- 当会话锁定不再可用且需要销毁时Configure
- 在会话被锁定或输出几何形状发生变化时发送
示例
查看示例以了解如何使用这些协议
致谢
wayland.rs
- 此项目大量依赖smithay/wayland.rs
来实现所有wayland(稳定、不稳定、wlr、其他)协议的rust实现。
依赖项
~7–18MB
~230K SLoC