2个版本
0.1.1 | 2023年3月30日 |
---|---|
0.1.0 | 2023年3月18日 |
#2 in #bspwm
在ixwindow中使用
77KB
2K SLoC
bspc-rs
这个库提供了Rust编程语言中bspc的实现。欢迎提出任何问题或问题。
示例
use bspc_rs::events::{self, Subscription, Event, NodeEvent};
fn main() {
let subscriptions = vec![
Subscription::NodeAdd,
Subscription::NodeFocus,
Subscription::NodeFlag,
Subscription::NodeState,
Subscription::NodeRemove,
];
let mut subscriber = events::subscribe(false, None, &subscriptions).unwrap();
for event in subscriber.events() {
match event.unwrap() {
Event::NodeEvent(event) => match event {
NodeEvent::NodeFocus(node_info) => {
println!("Window with id {} is focused!", node_info.node_id);
}
NodeEvent::NodeRemove(node_info) => {
println!("Window with id {} was removed!", node_info.node_id);
}
_ => {}
},
_ => {}
}
}
}
为什么选择bspc-rs
?
-
速度。如果你的脚本正在处理窗口,并且你想提高速度,那么Rust和
bspc-rs
可能是一个不错的选择。 -
静态类型和编译。这也是选择
bspc-rs
的另一个原因,因为你可能会在编译时捕获一些错误。这对于大型脚本尤其正确,因为犯下愚蠢错误的可能性更高。 -
Rust代码中的原生集成。例如,如果你需要做一些除了仅仅处理
bspwm
之外的事情,那么你可以利用其他Rust库来满足你的需求,这些库没有被提取到二进制程序中,因此不能在bash脚本中使用。
更多示例
这个库起源于在ixwindow
项目中实现Rust中原生bspc
支持的愿望。
一些小的有用脚本/实用工具,我用这个库帮助编写,(基本上是从bash版本移植过来),可以在examples
目录中找到。
依赖项
~0.7–1.5MB
~33K SLoC