/breadx

An implementation of the X Window System Protocol in Rust

Primary LanguageRustApache License 2.0Apache-2.0

breadx

Build Status crates.io Docs

An implementation of the X Window System Protocol in Rust. 100% safe and mutex-free. Currently a work in progress; however, it should be usable in its current state for most X11-related applications.

Reasons you should use this over Xlib/XCB Bindings

  • No Mutexes
  • Generally faster (awaiting verification)
  • Built-in support for Rust's async ecosystem via async_net
  • Crate proper is #[forbid(unsafe_code)], dependencies are either safe or verified.
  • Tries to provide the ease of use of Xlib while also providing XCB's ability to leverage the async capabilities of the X server
  • Can be used in #[no_std] environments.

Reasons not to use this over Xlib/XCB Bindings

  • Currently very immature
  • No support for extensions (yet)
  • Not ABI/API compatible with Xlib/XCB

Tutorials/Examples

For tutorials and examples of breadx's usage, check out the docs.

License

Dual licensed under the MIT and Apache 2.0 Licenses, just like Rust proper is.