1 个不稳定版本

0.0.1-alpha12023年3月29日

#997GUI


2 crates 中使用

MIT/Apache

330KB
3.5K SLoC

Wayland 组合器的基本类型和特质

这个 crate 提供了编写 Wayland 组合器的框架。它定义了客户端和服务器全局上下文的特质,以及实现 Wayland 对象的特质。它还提供了实现这些特质的相关辅助工具。

组合器的结构

让我们通过查看其数据流来分解一个 Wayland 组合器。(在这里,我松散地使用了“数据流”这个词。)

Wayland 组合器首先创建一个套接字并监听它。一旦客户端连接到套接字,组合器就会接受连接,并为它创建一个新的客户端上下文。客户端上下文包含对象存储,其中已经绑定了 wl_display 对象。客户端可以通过其对象 ID 来引用对象存储中的对象,并向它们发出请求。组合器通过调用与对象关联的 wayland 接口实现来处理这些请求。

这个 crate 如何融入其中

函数 wayland_listenerwayland_listener_auto 可以用来创建用于传入连接的套接字。

objects 中的特质定义了 Wayland 对象的接口。您可以选择使用它们和从 wayland 协议规范生成的 RequestDispatch 特质来实现 wayland 对象(请参阅 runa-wayland-protocols crate)。或者,您也可以使用 runa-orbiter crate,它为许多 wayland 对象提供了实现。

Client 特质定义了客户端上下文的接口。请参阅其文档以获取更多详细信息。该特质解释了其他大部分东西是如何组合在一起的。

Server 特质负责在每次新客户端连接时创建一个新的客户端上下文。它还提供了对全局变量的访问。

依赖项

~20–32MB
~502K SLoC