#wayland-protocol #async-client #protocols #actor-model #tokio #implemented #messaging

wayland-protocols-async

使用 Actor 模型和 tokio 消息实现的异步方式实现的 Wayland 客户端协议

1 个稳定版本

1.0.0 2024 年 1 月 25 日

#427GUI

Download history 170/week @ 2024-03-31 92/week @ 2024-04-14 57/week @ 2024-04-21 16/week @ 2024-04-28 15/week @ 2024-05-05 15/week @ 2024-05-12 34/week @ 2024-05-19 19/week @ 2024-05-26 7/week @ 2024-06-02 52/week @ 2024-06-23

60 每月下载量

MIT 许可证

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 - 输入法不再可用

注意 - GetInputPopupSurfaceGrabKeyboard 方法未实现,以及与其相关的事件。

输出管理

实现了 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