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
//! wlr-procotols extension family
//!
//! This module regroup bindings to the protocol extensions from
//! [wlr-protocols](https://github.com/swaywm/wlr-protocols).

#![cfg_attr(rustfmt, rustfmt_skip)]

#[cfg(feature = "unstable_protocols")]
pub mod unstable {
    //! Unstable protocols from wlr-protocols
    //!
    //! The protocols described in this module are experimental and
    //! backward incompatible changes may be made. Backward compatible
    //! changes may be added together with the corresponding interface
    //! version bump.
    //!
    //! Backward incompatible changes are done by bumping the version
    //! number in the protocol and interface names and resetting the
    //! interface version. Once the protocol is to be declared stable,
    //! the 'z' prefix and the version number in the protocol and
    //! interface names are removed and the interface version number is
    //! reset.

    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.

        wayland_protocol_versioned!("wlr-data-control", [v1], [(wl_seat, wl_seat_interface)], []);
    }

    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.

        wayland_protocol_versioned!(
            "wlr-export-dmabuf",
            [v1],
            [(wl_output, wl_output_interface)],
            []
        );
    }

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

        wayland_protocol_versioned!(
            "wlr-foreign-toplevel-management",
            [v1],
            [
                (wl_seat, wl_seat_interface),
                (wl_surface, wl_surface_interface),
                (wl_output, wl_output_interface)
            ],
            []
        );
    }

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

        wayland_protocol_versioned!(
            "wlr-gamma-control",
            [v1],
            [(wl_output, wl_output_interface)],
            []
        );
    }

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

        wayland_protocol_versioned!("wlr-input-inhibitor", [v1], [], []);
    }

    pub mod layer_shell {
        //! Layered shell protocol

        wayland_protocol_versioned!(
            "wlr-layer-shell",
            [v1],
            [(wl_output, wl_output_interface), (wl_surface, wl_surface_interface)],
            [(xdg_shell, xdg_popup, xdg_popup_interface)]
        );
    }

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

        wayland_protocol_versioned!(
            "wlr-output-management",
            [v1],
            [(wl_output, wl_output_interface)],
            []
        );
    }

    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.

        wayland_protocol_versioned!(
            "wlr-output-power-management",
            [v1],
            [(wl_output, wl_output_interface)],
            []
        );
    }

    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.

        wayland_protocol_versioned!(
            "wlr-screencopy",
            [v1],
            [(wl_buffer, wl_buffer_interface), (wl_output, wl_output_interface), (wl_shm, wl_shm_interface)],
            []
        );
    }

    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.

        wayland_protocol_versioned!(
            "wlr-virtual-pointer",
            [v1],
            [(wl_seat, wl_seat_interface), (wl_output, wl_output_interface), (wl_pointer, wl_pointer_interface)],
            []
        );
    }


}