wayland_protocols/
ext.rs

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
//! Miscellaneous protocols

#![cfg_attr(rustfmt, rustfmt_skip)]

#[cfg(feature = "staging")]
pub mod idle_notify {
    //! This protocol allows clients to monitor user idle status.

    #[allow(missing_docs)]
    pub mod v1 {
        wayland_protocol!(
            "./protocols/staging/ext-idle-notify/ext-idle-notify-v1.xml",
            []
        );
    }
}

#[cfg(feature = "staging")]
pub mod session_lock {
    //! This protocol allows for a privileged Wayland client to lock the session
    //! and display arbitrary graphics while the session is locked.
    //!
    //! The compositor may choose to restrict this protocol to a special client
    //! launched by the compositor itself or expose it to all privileged clients,
    //! this is compositor policy.
    //!
    //! The client is responsible for performing authentication and informing the
    //! compositor when the session should be unlocked. If the client dies while
    //! the session is locked the session remains locked, possibly permanently
    //! depending on compositor policy.

    #[allow(missing_docs)]
    pub mod v1 {
        wayland_protocol!(
            "./protocols/staging/ext-session-lock/ext-session-lock-v1.xml",
            []
        );
    }
}

#[cfg(feature = "staging")]
pub mod foreign_toplevel_list {
    //! The purpose of this protocol is to provide protocol object handles for toplevels, possibly
    //! originating from another client.
    //!
    //! This protocol is intentionally minimalistic and expects additional functionality (e.g.
    //! creating a screencopy source from a toplevel handle, getting information about the state of
    //! the toplevel) to be implemented in extension protocols.
    //!
    //! The compositor may choose to restrict this protocol to a special client launched by the
    //! compositor itself or expose it to all clients, this is compositor policy.

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

#[cfg(feature = "staging")]
pub mod transient_seat {
    //! The transient seat protocol can be used by privileged clients to create
    //! independent seats that will be removed from the compositor when the client
    //! destroys its transient seat.
    //!
    //! This protocol is intended for use with virtual input protocols such as
    //! "virtual_keyboard_unstable_v1" or "wlr_virtual_pointer_unstable_v1", both
    //! of which allow the user to select a seat.
    //!
    //! The "wl_seat" global created by this protocol does not generate input events
    //! on its own, or have any capabilities except those assigned to it by other
    //! protocol extensions, such as the ones mentioned above.
    //!
    //! For example, a remote desktop server can create a seat with virtual inputs
    //! for each remote user by following these steps for each new connection:
    //!  * Create a transient seat
    //!  * Wait for the transient seat to be created
    //!  * Locate a "wl_seat" global with a matching name
    //!  * Create virtual inputs using the resulting "wl_seat" global
    #[allow(missing_docs)]
    pub mod v1 {
        wayland_protocol!(
            "./protocols/staging/ext-transient-seat/ext-transient-seat-v1.xml",
            []
        );
    }

}


#[cfg(feature = "staging")]
pub mod image_capture_source {
    //! This protocol serves as an intermediary between capturing protocols and
    //! potential image capture sources such as outputs and toplevels.
    //!
    //! This protocol may be extended to support more image capture sources in the
    //! future, thereby adding those image capture sources to other protocols that
    //! use the image capture source object without having to modify those
    //! protocols.

    #[allow(missing_docs)]
    pub mod v1 {
        wayland_protocol!(
            "./protocols/staging/ext-image-capture-source/ext-image-capture-source-v1.xml",
            [crate::ext::foreign_toplevel_list::v1, crate::xdg::shell]
        );
    }
}

#[cfg(feature = "staging")]
pub mod image_copy_capture {
    //! This protocol allows clients to ask the compositor to capture image sources
    //! such as outputs and toplevels into user submitted buffers.

    #[allow(missing_docs)]
    pub mod v1 {
        wayland_protocol!(
            "./protocols/staging/ext-image-copy-capture/ext-image-copy-capture-v1.xml",
            [crate::ext::image_capture_source::v1, crate::xdg::shell]
        );
    }
}

#[cfg(feature = "staging")]
pub mod data_control {
    //! This protocol allows a privileged client to control data devices. In
    //! particular, the client will be able to manage the current selection and take
    //! the role of a clipboard manager.

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

#[cfg(feature = "staging")]
pub mod workspace {
    //! List and control workspaces

    #[allow(missing_docs)]
    pub mod v1 {
        wayland_protocol!(
            "./protocols/staging/ext-workspace/ext-workspace-v1.xml",
            []
        );
    }
}