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