1 个不稳定版本
0.0.1-alpha1 | 2023年3月29日 |
---|
#997 在 GUI
在 2 crates 中使用
330KB
3.5K SLoC
Wayland 组合器的基本类型和特质
这个 crate 提供了编写 Wayland 组合器的框架。它定义了客户端和服务器全局上下文的特质,以及实现 Wayland 对象的特质。它还提供了实现这些特质的相关辅助工具。
组合器的结构
让我们通过查看其数据流来分解一个 Wayland 组合器。(在这里,我松散地使用了“数据流”这个词。)
Wayland 组合器首先创建一个套接字并监听它。一旦客户端连接到套接字,组合器就会接受连接,并为它创建一个新的客户端上下文。客户端上下文包含对象存储,其中已经绑定了 wl_display 对象。客户端可以通过其对象 ID 来引用对象存储中的对象,并向它们发出请求。组合器通过调用与对象关联的 wayland 接口实现来处理这些请求。
这个 crate 如何融入其中
函数 wayland_listener
和 wayland_listener_auto
可以用来创建用于传入连接的套接字。
在 objects
中的特质定义了 Wayland 对象的接口。您可以选择使用它们和从 wayland 协议规范生成的 RequestDispatch
特质来实现 wayland 对象(请参阅 runa-wayland-protocols
crate)。或者,您也可以使用 runa-orbiter
crate,它为许多 wayland 对象提供了实现。
Client
特质定义了客户端上下文的接口。请参阅其文档以获取更多详细信息。该特质解释了其他大部分东西是如何组合在一起的。
Server
特质负责在每次新客户端连接时创建一个新的客户端上下文。它还提供了对全局变量的访问。
依赖项
~20–32MB
~502K SLoC