1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
//! This crate provides bindings to the wlroots wayland protocol extensions
//! provided in <https://gitlab.freedesktop.org/wlroots/wlr-protocols>
//!
//! These bindings are built on top of the crates wayland-client and wayland-server.
//!
//! Each protocol module contains a `client` and a `server` submodules, for each side of the
//! protocol. The creation of these modules (and the dependency on the associated crate) is
//! controlled by the two cargo features `client` and `server`.

#![warn(missing_docs)]
#![forbid(improper_ctypes, unsafe_op_in_unsafe_fn)]
#![cfg_attr(docsrs, feature(doc_auto_cfg))]
#![cfg_attr(rustfmt, rustfmt_skip)]

#[macro_use]
mod protocol_macro;

pub mod data_control {
    //! Control data devices, particularly the clipboard.
    //!
    //! An interface to control data devices, particularly to manage the current selection and
    //! take the role of a clipboard manager.

    #[allow(missing_docs)]
    pub mod v1 {
        wayland_protocol!(
            "./wlr-protocols/unstable/wlr-data-control-unstable-v1.xml",
            []
        );
    }
}

pub mod export_dmabuf {
    //! A protocol for low overhead screen content capturing
    //!
    //! An interface to capture surfaces in an efficient way by exporting DMA-BUFs.

    #[allow(missing_docs)]
    pub mod v1 {
        wayland_protocol!(
            "./wlr-protocols/unstable/wlr-export-dmabuf-unstable-v1.xml",
            []
        );
    }
}

pub mod foreign_toplevel {
    //! List and control opened apps
    //!
    //! Use for creating taskbars and docks.

    #[allow(missing_docs)]
    pub mod v1 {
        wayland_protocol!(
            "./wlr-protocols/unstable/wlr-foreign-toplevel-management-unstable-v1.xml",
            []
        );
    }
}

pub mod gamma_control {
    //! Manage gamma tables of outputs.
    //!
    //! This protocol allows a privileged client to set the gamma tables for outputs.

    #[allow(missing_docs)]
    pub mod v1 {
        wayland_protocol!(
            "./wlr-protocols/unstable/wlr-gamma-control-unstable-v1.xml",
            []
        );
    }
}

pub mod input_inhibitor {
    //! Inhibits input events to other clients

    #[allow(missing_docs)]
    pub mod v1 {
        wayland_protocol!(
            "./wlr-protocols/unstable/wlr-input-inhibitor-unstable-v1.xml",
            []
        );
    }
}

pub mod layer_shell {
    //! Layered shell protocol

    #[allow(missing_docs)]
    pub mod v1 {
        wayland_protocol!(
            "./wlr-protocols/unstable/wlr-layer-shell-unstable-v1.xml",
            [wayland_protocols::xdg::shell]
        );
    }
}

pub mod output_management {
    //! Output management protocol
    //!
    //! This protocol exposes interfaces to obtain and modify output device configuration.

    #[allow(missing_docs)]
    pub mod v1 {
        wayland_protocol!(
            "./wlr-protocols/unstable/wlr-output-management-unstable-v1.xml",
            []
        );
    }
}

pub mod output_power_management {
    //! Output power management protocol
    //!
    //! This protocol allows clients to control power management modes
    //! of outputs that are currently part of the compositor space. The
    //! intent is to allow special clients like desktop shells to power
    //! down outputs when the system is idle.

    #[allow(missing_docs)]
    pub mod v1 {
        wayland_protocol!(
            "./wlr-protocols/unstable/wlr-output-power-management-unstable-v1.xml",
            []
        );
    }
}

pub mod screencopy {
    //! Screen content capturing on client buffers
    //!
    //! This protocol allows clients to ask the compositor to copy part of the
    //! screen content to a client buffer.

    #[allow(missing_docs)]
    pub mod v1 {
        wayland_protocol!(
            "./wlr-protocols/unstable/wlr-screencopy-unstable-v1.xml",
            []
        );
    }
}

pub mod virtual_pointer {
    //! Virtual pointer protocol
    //!
    //! This protocol allows clients to emulate a physical pointer device. The
    //! requests are mostly mirror opposites of those specified in wl_pointer.

    #[allow(missing_docs)]
    pub mod v1 {
        wayland_protocol!(
            "./wlr-protocols/unstable/wlr-virtual-pointer-unstable-v1.xml",
            []
        );
    }
}