Mercurial > minori
comparison dep/animia/data/ext-foreign-toplevel-list-v1.xml @ 199:9f3534f6b8c4
dep/animia: initial Wayland support, drop non-working kvm fd plugin
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Tue, 02 Jan 2024 02:34:27 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
198:bc1ae1810855 | 199:9f3534f6b8c4 |
---|---|
1 <?xml version="1.0" encoding="UTF-8"?> | |
2 <protocol name="ext_foreign_toplevel_list_v1"> | |
3 <copyright> | |
4 Copyright © 2018 Ilia Bozhinov | |
5 Copyright © 2020 Isaac Freund | |
6 Copyright © 2022 wb9688 | |
7 Copyright © 2023 i509VCB | |
8 | |
9 Permission to use, copy, modify, distribute, and sell this | |
10 software and its documentation for any purpose is hereby granted | |
11 without fee, provided that the above copyright notice appear in | |
12 all copies and that both that copyright notice and this permission | |
13 notice appear in supporting documentation, and that the name of | |
14 the copyright holders not be used in advertising or publicity | |
15 pertaining to distribution of the software without specific, | |
16 written prior permission. The copyright holders make no | |
17 representations about the suitability of this software for any | |
18 purpose. It is provided "as is" without express or implied | |
19 warranty. | |
20 | |
21 THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS | |
22 SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND | |
23 FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY | |
24 SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
25 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN | |
26 AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, | |
27 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF | |
28 THIS SOFTWARE. | |
29 </copyright> | |
30 | |
31 <description summary="list toplevels"> | |
32 The purpose of this protocol is to provide protocol object handles for | |
33 toplevels, possibly originating from another client. | |
34 | |
35 This protocol is intentionally minimalistic and expects additional | |
36 functionality (e.g. creating a screencopy source from a toplevel handle, | |
37 getting information about the state of the toplevel) to be implemented | |
38 in extension protocols. | |
39 | |
40 The compositor may choose to restrict this protocol to a special client | |
41 launched by the compositor itself or expose it to all clients, | |
42 this is compositor policy. | |
43 | |
44 The key words "must", "must not", "required", "shall", "shall not", | |
45 "should", "should not", "recommended", "may", and "optional" in this | |
46 document are to be interpreted as described in IETF RFC 2119. | |
47 | |
48 Warning! The protocol described in this file is currently in the testing | |
49 phase. Backward compatible changes may be added together with the | |
50 corresponding interface version bump. Backward incompatible changes can | |
51 only be done by creating a new major version of the extension. | |
52 </description> | |
53 | |
54 <interface name="ext_foreign_toplevel_list_v1" version="1"> | |
55 <description summary="list toplevels"> | |
56 A toplevel is defined as a surface with a role similar to xdg_toplevel. | |
57 XWayland surfaces may be treated like toplevels in this protocol. | |
58 | |
59 After a client binds the ext_foreign_toplevel_list_v1, each mapped | |
60 toplevel window will be sent using the ext_foreign_toplevel_list_v1.toplevel | |
61 event. | |
62 | |
63 Clients which only care about the current state can perform a roundtrip after | |
64 binding this global. | |
65 | |
66 For each instance of ext_foreign_toplevel_list_v1, the compositor must | |
67 create a new ext_foreign_toplevel_handle_v1 object for each mapped toplevel. | |
68 | |
69 If a compositor implementation sends the ext_foreign_toplevel_list_v1.finished | |
70 event after the global is bound, the compositor must not send any | |
71 ext_foreign_toplevel_list_v1.toplevel events. | |
72 </description> | |
73 | |
74 <event name="toplevel"> | |
75 <description summary="a toplevel has been created"> | |
76 This event is emitted whenever a new toplevel window is created. It is | |
77 emitted for all toplevels, regardless of the app that has created them. | |
78 | |
79 All initial properties of the toplevel (identifier, title, app_id) will be sent | |
80 immediately after this event using the corresponding events for | |
81 ext_foreign_toplevel_handle_v1. The compositor will use the | |
82 ext_foreign_toplevel_handle_v1.done event to indicate when all data has | |
83 been sent. | |
84 </description> | |
85 <arg name="toplevel" type="new_id" interface="ext_foreign_toplevel_handle_v1"/> | |
86 </event> | |
87 | |
88 <event name="finished"> | |
89 <description summary="the compositor has finished with the toplevel manager"> | |
90 This event indicates that the compositor is done sending events | |
91 to this object. The client should should destroy the object. | |
92 See ext_foreign_toplevel_list_v1.destroy for more information. | |
93 | |
94 The compositor must not send any more toplevel events after this event. | |
95 </description> | |
96 </event> | |
97 | |
98 <request name="stop"> | |
99 <description summary="stop sending events"> | |
100 This request indicates that the client no longer wishes to receive | |
101 events for new toplevels. | |
102 | |
103 The Wayland protocol is asynchronous, meaning the compositor may send | |
104 further toplevel events until the stop request is processed. | |
105 The client should wait for a ext_foreign_toplevel_list_v1.finished | |
106 event before destroying this object. | |
107 </description> | |
108 </request> | |
109 | |
110 <request name="destroy" type="destructor"> | |
111 <description summary="destroy the ext_foreign_toplevel_list_v1 object"> | |
112 This request should be called either when the client will no longer | |
113 use the ext_foreign_toplevel_list_v1 or after the finished event | |
114 has been received to allow destruction of the object. | |
115 | |
116 If a client wishes to destroy this object it should send a | |
117 ext_foreign_toplevel_list_v1.stop request and wait for a ext_foreign_toplevel_list_v1.finished | |
118 event, then destroy the handles and then this object. | |
119 </description> | |
120 </request> | |
121 </interface> | |
122 | |
123 <interface name="ext_foreign_toplevel_handle_v1" version="1"> | |
124 <description summary="a mapped toplevel"> | |
125 A ext_foreign_toplevel_handle_v1 object represents a mapped toplevel | |
126 window. A single app may have multiple mapped toplevels. | |
127 </description> | |
128 | |
129 <request name="destroy" type="destructor"> | |
130 <description summary="destroy the ext_foreign_toplevel_handle_v1 object"> | |
131 This request should be used when the client will no longer use the handle | |
132 or after the closed event has been received to allow destruction of the | |
133 object. | |
134 | |
135 When a handle is destroyed, a new handle may not be created by the server | |
136 until the toplevel is unmapped and then remapped. Destroying a toplevel handle | |
137 is not recommended unless the client is cleaning up child objects | |
138 before destroying the ext_foreign_toplevel_list_v1 object, the toplevel | |
139 was closed or the toplevel handle will not be used in the future. | |
140 | |
141 Other protocols which extend the ext_foreign_toplevel_handle_v1 | |
142 interface should require destructors for extension interfaces be | |
143 called before allowing the toplevel handle to be destroyed. | |
144 </description> | |
145 </request> | |
146 | |
147 <event name="closed"> | |
148 <description summary="the toplevel has been closed"> | |
149 The server will emit no further events on the ext_foreign_toplevel_handle_v1 | |
150 after this event. Any requests received aside from the destroy request must | |
151 be ignored. Upon receiving this event, the client should destroy the handle. | |
152 | |
153 Other protocols which extend the ext_foreign_toplevel_handle_v1 | |
154 interface must also ignore requests other than destructors. | |
155 </description> | |
156 </event> | |
157 | |
158 <event name="done"> | |
159 <description summary="all information about the toplevel has been sent"> | |
160 This event is sent after all changes in the toplevel state have | |
161 been sent. | |
162 | |
163 This allows changes to the ext_foreign_toplevel_handle_v1 properties | |
164 to be atomically applied. Other protocols which extend the | |
165 ext_foreign_toplevel_handle_v1 interface may use this event to also | |
166 atomically apply any pending state. | |
167 | |
168 This event must not be sent after the ext_foreign_toplevel_handle_v1.closed | |
169 event. | |
170 </description> | |
171 </event> | |
172 | |
173 <event name="title"> | |
174 <description summary="title change"> | |
175 The title of the toplevel has changed. | |
176 | |
177 The configured state must not be applied immediately. See | |
178 ext_foreign_toplevel_handle_v1.done for details. | |
179 </description> | |
180 <arg name="title" type="string"/> | |
181 </event> | |
182 | |
183 <event name="app_id"> | |
184 <description summary="app_id change"> | |
185 The app id of the toplevel has changed. | |
186 | |
187 The configured state must not be applied immediately. See | |
188 ext_foreign_toplevel_handle_v1.done for details. | |
189 </description> | |
190 <arg name="app_id" type="string"/> | |
191 </event> | |
192 | |
193 <event name="identifier"> | |
194 <description summary="a stable identifier for a toplevel"> | |
195 This identifier is used to check if two or more toplevel handles belong | |
196 to the same toplevel. | |
197 | |
198 The identifier is useful for command line tools or privileged clients | |
199 which may need to reference an exact toplevel across processes or | |
200 instances of the ext_foreign_toplevel_list_v1 global. | |
201 | |
202 The compositor must only send this event when the handle is created. | |
203 | |
204 The identifier must be unique per toplevel and it's handles. Two different | |
205 toplevels must not have the same identifier. The identifier is only valid | |
206 as long as the toplevel is mapped. If the toplevel is unmapped the identifier | |
207 must not be reused. An identifier must not be reused by the compositor to | |
208 ensure there are no races when sharing identifiers between processes. | |
209 | |
210 An identifier is a string that contains up to 32 printable ASCII bytes. | |
211 An identifier must not be an empty string. It is recommended that a | |
212 compositor includes an opaque generation value in identifiers. How the | |
213 generation value is used when generating the identifier is implementation | |
214 dependent. | |
215 </description> | |
216 <arg name="identifier" type="string"/> | |
217 </event> | |
218 </interface> | |
219 </protocol> |