139 releases
0.31.0 | Sep 2, 2023 |
---|---|
0.30.1 | Jun 17, 2023 |
0.30.0 | Dec 27, 2022 |
0.30.0-beta.13 | Nov 4, 2022 |
0.2.0 | Nov 19, 2015 |
#784 in GUI
399,100 downloads per month
Used in 1,371 crates
(16 directly)
96KB
2K
SLoC
wayland-scanner
This crate provides procedural macros for generating the rust code associated with a
Wayland XML protocol specification, for use with the wayland-client
, wayland-server
and wayland-backend
crates.
Before trying to use this crate, you may check if the protocol extension you want to use
is not already exposed in the wayland-protocols
crate.
lib.rs
:
Wayland protocol code-generation machinnery
This crate provides procedural macros for generating the rust code associated with a
Wayland XML protocol specification, for use with the wayland-client
, wayland-server
and wayland-backend
crates.
Before trying to use this crate, you may check if the protocol extension you want to use
is not already exposed in the wayland-protocols
crate.
Example usage
Below is a template for generating the code for a custom protocol client-side. Server-side
is identical, just replacing client
by server
. The path to the XML file is relative to the
crate root.
// Generate the bindings in their own module
pub mod my_protocol {
use wayland_client;
// import objects from the core protocol if needed
use wayland_client::protocol::*;
// This module hosts a low-level representation of the protocol objects
// you will not need to interact with it yourself, but the code generated
// by the generate_client_code! macro will use it
pub mod __interfaces {
// import the interfaces from the core protocol if needed
use wayland_client::protocol::__interfaces::*;
wayland_scanner::generate_interfaces!("./path/to/the/protocol.xml");
}
use self::__interfaces::*;
// This macro generates the actual types that represent the wayland objects of
// your custom protocol
wayland_scanner::generate_client_code!("./path/to/the/protocol.xml");
}
Dependencies
~1.5MB
~23K SLoC