i3ipc-rs

Build Status Crate Docs

A Rust library for controlling i3-wm through its IPC interface.

Usage

Add this to your Cargo.toml toml [dependencies.i3ipc] version = "0.9.0"

Messages:

```rust 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:

```rust 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.9.0" 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.