17 个版本 (9 个破坏性更新)

使用旧的 Rust 2015

0.10.1 2019年3月12日
0.9.0 2018年11月10日
0.8.2 2017年10月7日
0.4.2 2016年9月16日
0.3.0 2015年7月18日

#201 in 硬件支持

Download history 244/week @ 2023-11-20 177/week @ 2023-11-27 127/week @ 2023-12-04 152/week @ 2023-12-11 185/week @ 2023-12-18 145/week @ 2023-12-25 118/week @ 2024-01-01 216/week @ 2024-01-08 164/week @ 2024-01-15 112/week @ 2024-01-22 93/week @ 2024-01-29 148/week @ 2024-02-05 173/week @ 2024-02-12 191/week @ 2024-02-19 253/week @ 2024-02-26 210/week @ 2024-03-04

每月 869 次下载
23 个 Crates 中使用

MIT 许可证

63KB
1K SLoC

i3ipc-rs

Build Status Docs

一个 Rust 库,通过其 IPC 接口 控制 i3-wm。

用法

将以下内容添加到您的 Cargo.toml 中

[dependencies.i3ipc]
version = "0.10.1"

消息

extern crate i3ipc;
use i3ipc::I3Connection;

fn main() {
    // establish a connection to i3 over a unix socket
    let mut connection = I3Connection::connect().unwrap();
    
    // request and print the i3 version
    println!("{}", connection.get_version().unwrap().human_readable);
    
    // fullscreen the focused window
    connection.run_command("fullscreen").unwrap();
}

事件

extern crate i3ipc;
use i3ipc::I3EventListener;
use i3ipc::Subscription;
use i3ipc::event::Event;

fn main() {
    // establish connection.
    let mut listener = I3EventListener::connect().unwrap();

    // subscribe to a couple events.
    let subs = [Subscription::Mode, Subscription::Binding];
    listener.subscribe(&subs).unwrap();

    // handle them
    for event in listener.listen() {
        match event.unwrap() {
            Event::ModeEvent(e) => println!("new mode: {}", e.change),
            Event::BindingEvent(e) => println!("user input triggered command: {}", e.binding.command),
            _ => unreachable!()
        }
    }
}

版本控制

默认情况下,i3ipc-rs 以最小 i3 版本 4.11 为目标。要解锁更多功能,您可以在 Cargo.toml 中选择以下之一: "i3-4-12", ..., "i3-4-14"

[dependencies.i3ipc]
version = "0.10.1"
features = ["i3-4-14"]

编译的二进制文件不理解 i3 IPC 接口的扩展通常将返回一个 Unknown 值,并使用 log crate 将警告记录到目标 "i3ipc"。使用此库的二进制文件应 安装日志记录器 以查看此类扩展的详细信息。

依赖关系

~0.5–1MB
~21K SLoC