17 releases (9 breaking)
Uses old Rust 2015
0.10.1 | Mar 12, 2019 |
---|---|
0.9.0 | Nov 10, 2018 |
0.8.2 | Oct 7, 2017 |
0.4.2 | Sep 16, 2016 |
0.3.0 | Jul 18, 2015 |
#485 in Hardware support
868 downloads per month
Used in fewer than 23 crates
63KB
1K
SLoC
i3ipc-rs
A Rust library for controlling i3-wm through its IPC interface.
Usage
Add this to your Cargo.toml
[dependencies.i3ipc]
version = "0.10.1"
Messages:
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();
}
Events:
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!()
}
}
}
Versioning
By default i3ipc-rs targets minimum i3 version 4.11. To unlock additional features you can increase this by selecting one of "i3-4-12"
, ..., "i3-4-14"
in Cargo.toml.
[dependencies.i3ipc]
version = "0.10.1"
features = ["i3-4-14"]
Additions to the i3 IPC interface that are not understood by your compiled binary will generally return an Unknown
value and log a warning to the target "i3ipc"
using the log crate. Binaries using this library should install a logger to view details of such additions.
Dependencies
~0.6–1.2MB
~24K SLoC