20 个版本
使用旧的 Rust 2015
0.7.0 | 2017年12月9日 |
---|---|
0.6.4 | 2017年11月11日 |
0.6.2 | 2017年4月1日 |
0.6.1 | 2017年3月17日 |
0.2.1 | 2016年3月13日 |
在 国际化(i18n) 中排名 259
每月下载量 65
在 way-cooler 中使用
380KB
4.5K SLoC
rust-wlc
Rust 对 wlc(Wayland 组合器库)的绑定
建议您使用设计更好的 wlc.rs,主要用于 Way Cooler 开发
绑定与 wlc v0.0.9 兼容
Rust 示例
// For more functional example see example/src/main.rs
extern crate rustwlc;
use rustwlc::types::*;
use rustwlc::callback;
use rustwlc::WlcView;
// Callbacks must be labeled extern as they will be called from C
extern "C" fn view_created(view: WlcView) -> bool {
view.bring_to_front();
view.focus();
return true;
}
extern "C" fn view_focus(view: WlcView, focused: bool) {
view.set_state(VIEW_ACTIVATED, focused);
}
fn main() {
callback::view_created(view_created);
callback::view_focus(view_focus);
// The default log handler will print wlc logs to stdout
rustwlc::log_set_default_handler();
let run_fn = rustwlc::init().expect("Unable to initialize!");
run_fn();
}
用法
我们在 crates.io,因此要使用此库,只需将其添加到您的 Cargo.toml 中。
[dependencies]
rustwlc = "0.5"
。
您还需要设置 wlc 库,以便 rust-wlc 可以看到它。如果您只是安装库,那就足够了。
请注意,wlc 容易出现向后不兼容的更改。每次这种情况发生时,我们都会增加一个小版本,因此请确保在您的 Cargo.toml
中指定确切的次要版本。我们预计我们的版本号将不断相互远离,直到 wlc 稳定下来。请小心,因为更新 wlc 可能会破坏 rustwlc。我们将尽量保持与上游的紧密一致。
如果您想使用 wlc 的自定义版本(例如,通过针对特定版本构建以确保兼容性或构建带有调试符号的库),则需要将 LD_LIBRARY_PATH
环境变量设置为共享库对象文件(.so)的完整路径。要验证 rust-wlc 是否可以看到正确的共享库,请使用 ldd
工具查看共享库的完整路径,以 "libwlc.so" 开头的条目应指向您的自定义路径。
因此,如果您的 wlc 安装在 /opt/wlc
,则完整路径可能是 /opt/wlc/target/src
。请注意,我们只包含包含 .so 的目录,而不是 .so 本身。有关 Linux 中使用 DLL 的更多信息,请参阅 此链接。
文档
目前,我们在 doc.rs 上托管 Cargo 文档。您也可以使用 cargo doc 生成它
$ git clone "https://github.com/ImmingtonIndustries/rust-wlc.git"
$ cd rust-wlc
$ cargo doc
如果文档不够清晰或位置不正确,请告诉我们。
安全性
rust-wlc
是为了成为一个围绕 wlc 的简洁 Rust 封装而编写的。虽然我们已经尽力使代码更符合 Rust 风格(例如为 WlcView
和 WlcOutput
创建实例方法),但我们并不尝试扩展 wlc 本身。
在 callbacks
中注册的回调必须标记为 extern
(或 extern "C"
),因为它们是从 C 代码中调用的。此外,根据 Rust 规范,从 C 中抛出恐慌是未定义的行为(尽管它对我们有效)。
使用 rustwlc 的合成器可以在没有任何 unsafe
代码的情况下这样做。我们提供了使用 Rust 回调来处理日志的选项(而不是接受 *const c_char
的方法)。还有默认启用的 println!
,它通过 rustwlc::log_set_default_handler()
来启用。此外,WlcView
和 WlcOutput
中的 get_user_data
和 set_user_data
方法是 unsafe
,因为它们在底层使用 C 原始类型(void*
),并且正确的使用需要深入了解 wlc 本身。
我们有一些(WIP)使用 wayland-sys
包的 Wayland 绑定,可以通过 wlc-wayland
功能启用。这允许使用 Rust 包 wayland-sys
从 wlc 访问 Wayland。这对于基本的合成器不是必需的,但对于一些复杂功能(我们使用它直接在 way-cooler 上的视图中绘制背景)可能需要。
贡献
我们接受拉取请求!如果您发现了一个错误或想做出贡献(wlc 没有版本,我们可能落后于他们的 API 几个提交),请提交一个问题/拉取请求。
依赖项
~140–270KB