2个版本

0.1.1 2023年3月30日
0.1.0 2023年3月18日

#2 in #bspwm


ixwindow中使用

MIT/Apache

77KB
2K SLoC

bspc-rs

CI crate docs

这个库提供了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