1//! This crate provides bindings to the official wayland protocol extensions
2//! provided in <https://gitlab.freedesktop.org/wayland/wayland-protocols>
3//!
4//! These bindings are built on top of the crates wayland-client and wayland-server.
5//!
6//! Each protocol module contains a `client` and a `server` submodules, for each side of the
7//! protocol. The creation of these modules (and the dependency on the associated crate) is
8//! controlled by the two cargo features `client` and `server`.
9//!
10//! ## Protocol categories
11//!
12//! The protocols provided in this crate are grouped in 4 main categories:
13//!
14//! - The [`wp`] module contains general purpose wayland protocols
15//! - The [`xdg`] module contains protocols specifically related to window management
16//! - The [`xwayland`] module contains protocols used by xwayland.
17//! - The [`ext`] module contains protocols that do not fit into the three previous categories.
18//!
19//! ## Staging protocols
20//!
21//! The cargo feature `staging` enables the generation of the staging protocols.
22//!
23//! These protocols are ready for wider adoption and clients and compositors are encouraged to
24//! implement staging protocol extensions where a protocol's functionality is desired.
25//!
26//! Although these protocols should be stable, the protocols may still be completely replaced in a new
27//! major version or with a completely different protocol.
28//!
29//! ## Unstable protocols
30//!
31//! The `wayland-protocols` project previously had a notion of "unstable protocols" representing protocols
32//! that are still being worked on and evolving. These protocols are recognized by the use of the prefix `z`
33//! in their interface names.
34//!
35//! This category has now been deprecated and is no longer supposed to be used, however several protocols
36//! are still under that umbrella. We can expect them to be replaced by staging and stable protocols in the
37//! long term, but in the meantime you can enable them with the `unstable` cargo feature.
38//!
39//! ## Other protocols
40//!
41//! Additionally, more protocol extensions are provided here:
42//! - [wayland-protocols-wlr](https://docs.rs/wayland-protocols-wlr)
43//! - [wayland-protocols-plasma](https://docs.rs/wayland-protocols-plasma)
44//! - [wayland-protocols-misc](https://docs.rs/wayland-protocols-misc)
45
46#![warn(missing_docs)]
47#![forbid(improper_ctypes, unsafe_op_in_unsafe_fn)]
48#![cfg_attr(docsrs, feature(doc_auto_cfg))]
49
50#[macro_use]
51mod protocol_macro;
52
53pub mod ext;
54pub mod wp;
55pub mod xdg;
56pub mod xwayland;
57