#wayland #client


Bindings to the standard C implementation of the wayland protocol, client side

145 releases

new 0.30.0-beta.7 Jul 4, 2022
0.30.0-beta.3 May 27, 2022
0.30.0-alpha9 Mar 29, 2022
0.29.1 Oct 17, 2021
0.2.0 Jun 16, 2015

#29 in GUI

Download history 25504/week @ 2022-03-15 26991/week @ 2022-03-22 27333/week @ 2022-03-29 28480/week @ 2022-04-05 27749/week @ 2022-04-12 27123/week @ 2022-04-19 27338/week @ 2022-04-26 26540/week @ 2022-05-03 28558/week @ 2022-05-10 25464/week @ 2022-05-17 24563/week @ 2022-05-24 27576/week @ 2022-05-31 26870/week @ 2022-06-07 26841/week @ 2022-06-14 23637/week @ 2022-06-21 21128/week @ 2022-06-28

103,177 downloads per month
Used in 518 crates (47 directly)

MIT license

2.5K SLoC

crates.io docs.rs Continuous Integration codecov


Client side API for the Wayland protocol. This crate provides infrastructure for manipulating Wayland objects, as well as object definitions for the core Wayland protocol. Protocol extensions can be supported as well by combining this crate with wayland-protocols, which provides object definitions for a large set of extensions.

Note: This crate is a low-level interface to the Wayland protocol. If you are looking for a more battery-included toolkit for writing a Wayland client app, you may consider Smithay's Client Toolkit, which is built on top of it.

The crate has different backends to Wayland protocol serialization:

  • By default, it uses a pure-rust implementation of the protocol, and contains little unsafe code.
  • Activating the use_system_lib makes it instead bind to the system libwayland-client.so. This allows you to access C pointer versions of the wayland objects, which is necessary for interfacing with other non-Rust Wayland-related libraries (such as for OpenGL support, see the wayland-egl crate).
  • Activating the dlopen implies use_system_lib, but additionnaly the crate will not explicitly link to libwayland-client.so and instead try to open it at runtime, and return an error if it cannot find it. This allows you to build apps that can gracefully run in non-Wayland environment without needing compile-time switches.


~31K SLoC