#i3 #ipc #serde #protocols #json #serde-json

i3ipc-types

包含与 i3 通信所需的所有类型以及它们的 serde 实现和许多 std 特性的实现的库

11 次重大版本发布

0.16.0 2022 年 12 月 31 日
0.15.0 2022 年 7 月 5 日
0.14.0 2021 年 12 月 10 日
0.13.0 2021 年 11 月 4 日
0.5.0 2019 年 4 月 21 日

解析器实现 中排名 #2171

Download history 69/week @ 2024-04-22 79/week @ 2024-04-29 108/week @ 2024-05-06 79/week @ 2024-05-13 90/week @ 2024-05-20 63/week @ 2024-05-27 73/week @ 2024-06-03 72/week @ 2024-06-10 82/week @ 2024-06-17 79/week @ 2024-06-24 5/week @ 2024-07-01 33/week @ 2024-07-08 98/week @ 2024-07-15 53/week @ 2024-07-22 155/week @ 2024-07-29 83/week @ 2024-08-05

每月 393 次下载
13crate 中使用(4 个直接使用)

MIT 许可证

29KB
733 代码行

i3ipc-types

Crate API

该crate包含与i3ipc交互的所有类型,以及通过浏览 i3 源代码发现的某些未记录属性。它还包含一些基本的 sway 支持,尽管我个人不使用 sway,所以我依赖于PR来维护此功能。

该crate包含所有 i3 ipc 消息响应、事件类型以及使用 serde 的序列化和反序列化实现的定义。此外,我还包含了对编码和解码 i3 的 ipc 协议的 trait 的默认实现,只要类型实现了 io::Readio::Write

我的目标是把 i3 的 IPC 实现的所有类型定义都放在这里,这样就没有人再需要忍受这个过程了。如果缺少任何内容或出现问题,请填写问题报告或提交PR,我会很高兴以任何方式修复问题或改进库。

功能

默认情况下,此 crate 将包含用于同步 IO 的功能。使用 stdio::Read + io::Write

如果启用了 async-traits,则将为任何实现 tokio 的 AsyncRead + AsyncWrite 的 trait 实现 I3Protocol

与 i3ipc-rs 相比的优势

i3ipc-rs 将事件响应打包到一个枚举中,如果您打算接收除工作区和窗口之外的事件响应,这将是浪费的,因为类型定义中没有间接引用。Rust 枚举的内存布局使得每个变体的大小最多与最大的变体相同,这意味着像 OutputData 这样字段相对较少的响应将占用与 WindowData 相同的空间。在这个包中,情况并非如此。对于 WorkspaceDataWindowData 有一个间接引用层,以确保最小变体的大小保持较小。

依赖项

~0.7–12MB
~138K SLoC