11个重大版本
0.16.0 | 2022年12月31日 |
---|---|
0.15.0 | 2022年7月5日 |
0.14.0 | 2021年12月10日 |
0.13.0 |
|
0.5.0 | 2019年4月21日 |
#9 in #window-event
37 个月下载量
用于 3 crates
41KB
884 行代码
i3-ipc (同步)
一个同步的i3 IPC库。关于异步,请参见tokio-i3ipc。
订阅
订阅事件非常简单
use i3_ipc::{
event::{Event, Subscribe},
I3Stream,
};
use std::io;
fn main() -> io::Result<()> {
let mut i3 = I3Stream::conn_sub(&[Subscribe::Window, Subscribe::Workspace])?;
for e in i3.listen() {
match e? {
Event::Workspace(ev) => println!("workspace change event {:?}", ev),
Event::Window(ev) => println!("window event {:?}", ev),
Event::Output(ev) => println!("output event {:?}", ev),
Event::Mode(ev) => println!("mode event {:?}", ev),
Event::BarConfig(ev) => println!("bar config update {:?}", ev),
Event::Binding(ev) => println!("binding event {:?}", ev),
Event::Shutdown(ev) => println!("shutdown event {:?}", ev),
Event::Tick(ev) => println!("tick event {:?}", ev),
}
}
Ok(())
}
获取
获取信息同样简单,使用任何 get_*
方法或 run_command
向i3发送消息
use i3_ipc::{Connect, I3};
use std::io;
fn main() -> io::Result<()> {
let mut i3 = I3::connect()?;
let workspaces = i3.get_workspaces()?;
println!("{:?}", workspaces);
Ok(())
}
依赖
~0.6–1.4MB
~32K SLoC