Wayland++ 1.0.0
C++ Bindings for Wayland
Loading...
Searching...
No Matches
wayland-client-protocol.hpp
1#pragma once
2
3#include <array>
4#include <functional>
5#include <memory>
6#include <string>
7#include <vector>
8
9#include <wayland-client.hpp>
10
11struct wl_registry;
12struct wl_callback;
13struct wl_compositor;
14struct wl_shm_pool;
15struct wl_shm;
16struct wl_buffer;
17struct wl_data_offer;
18struct wl_data_source;
19struct wl_data_device;
20struct wl_data_device_manager;
21struct wl_shell;
22struct wl_shell_surface;
23struct wl_surface;
24struct wl_seat;
25struct wl_pointer;
26struct wl_keyboard;
27struct wl_touch;
28struct wl_output;
29struct wl_region;
30struct wl_subcompositor;
31struct wl_subsurface;
32
33namespace wayland
34{
35class registry_t;
36class callback_t;
37class compositor_t;
38class shm_pool_t;
39class shm_t;
40enum class shm_error : uint32_t;
41enum class shm_format : uint32_t;
42class buffer_t;
43class data_offer_t;
44enum class data_offer_error : uint32_t;
45class data_source_t;
46enum class data_source_error : uint32_t;
47class data_device_t;
48enum class data_device_error : uint32_t;
49class data_device_manager_t;
50struct data_device_manager_dnd_action;
51class shell_t;
52enum class shell_error : uint32_t;
53class shell_surface_t;
54struct shell_surface_resize;
55struct shell_surface_transient;
56enum class shell_surface_fullscreen_method : uint32_t;
57class surface_t;
58enum class surface_error : uint32_t;
59class seat_t;
60struct seat_capability;
61enum class seat_error : uint32_t;
62class pointer_t;
63enum class pointer_error : uint32_t;
64enum class pointer_button_state : uint32_t;
65enum class pointer_axis : uint32_t;
66enum class pointer_axis_source : uint32_t;
67class keyboard_t;
68enum class keyboard_keymap_format : uint32_t;
69enum class keyboard_key_state : uint32_t;
70class touch_t;
71class output_t;
72enum class output_subpixel : uint32_t;
73struct output_transform;
74struct output_mode;
75class region_t;
76class subcompositor_t;
77enum class subcompositor_error : uint32_t;
78class subsurface_t;
79enum class subsurface_error : uint32_t;
80
81namespace detail
82{
83 extern const wl_interface display_interface;
84 extern const wl_interface registry_interface;
85 extern const wl_interface callback_interface;
86 extern const wl_interface compositor_interface;
87 extern const wl_interface shm_pool_interface;
88 extern const wl_interface shm_interface;
89 extern const wl_interface buffer_interface;
90 extern const wl_interface data_offer_interface;
91 extern const wl_interface data_source_interface;
92 extern const wl_interface data_device_interface;
93 extern const wl_interface data_device_manager_interface;
94 extern const wl_interface shell_interface;
95 extern const wl_interface shell_surface_interface;
96 extern const wl_interface surface_interface;
97 extern const wl_interface seat_interface;
98 extern const wl_interface pointer_interface;
99 extern const wl_interface keyboard_interface;
100 extern const wl_interface touch_interface;
101 extern const wl_interface output_interface;
102 extern const wl_interface region_interface;
103 extern const wl_interface subcompositor_interface;
104 extern const wl_interface subsurface_interface;
105}
106
131class registry_t : public proxy_t
132{
133private:
134 struct events_t : public detail::events_base_t
135 {
136 std::function<void(uint32_t, std::string, uint32_t)> global;
137 std::function<void(uint32_t)> global_remove;
138 };
139
140 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
141
142 registry_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
143
144public:
145 registry_t();
146 explicit registry_t(const proxy_t &proxy);
148
149 registry_t proxy_create_wrapper();
150
151 static const std::string interface_name;
152
153 operator wl_registry*() const;
154
165 proxy_t bind(uint32_t name, proxy_t &interface, uint32_t version);
166
169 static constexpr std::uint32_t bind_since_version = 1;
170
183 std::function<void(uint32_t, std::string, uint32_t)> &on_global();
184
200 std::function<void(uint32_t)> &on_global_remove();
201
202};
203
204
211class callback_t : public proxy_t
212{
213private:
214 struct events_t : public detail::events_base_t
215 {
216 std::function<void(uint32_t)> done;
217 };
218
219 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
220
221 callback_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
222
223public:
224 callback_t();
225 explicit callback_t(const proxy_t &proxy);
227
228 callback_t proxy_create_wrapper();
229
230 static const std::string interface_name;
231
232 operator wl_callback*() const;
233
240 std::function<void(uint32_t)> &on_done();
241
242};
243
244
252class compositor_t : public proxy_t
253{
254private:
255 struct events_t : public detail::events_base_t
256 {
257 };
258
259 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
260
261 compositor_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
262
263public:
264 compositor_t();
265 explicit compositor_t(const proxy_t &proxy);
266 compositor_t(wl_compositor *p, wrapper_type t = wrapper_type::standard);
267
268 compositor_t proxy_create_wrapper();
269
270 static const std::string interface_name;
271
272 operator wl_compositor*() const;
273
281
284 static constexpr std::uint32_t create_surface_since_version = 1;
285
293
296 static constexpr std::uint32_t create_region_since_version = 1;
297
298};
299
300
312class shm_pool_t : public proxy_t
313{
314private:
315 struct events_t : public detail::events_base_t
316 {
317 };
318
319 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
320
321 shm_pool_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
322
323public:
324 shm_pool_t();
325 explicit shm_pool_t(const proxy_t &proxy);
327
328 shm_pool_t proxy_create_wrapper();
329
330 static const std::string interface_name;
331
332 operator wl_shm_pool*() const;
333
355 buffer_t create_buffer(int32_t offset, int32_t width, int32_t height, int32_t stride, shm_format const& format);
356
359 static constexpr std::uint32_t create_buffer_since_version = 1;
360
376 void resize(int32_t size);
377
380 static constexpr std::uint32_t resize_since_version = 1;
381
382};
383
384
398class shm_t : public proxy_t
399{
400private:
401 struct events_t : public detail::events_base_t
402 {
403 std::function<void(shm_format)> format;
404 };
405
406 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
407
408 shm_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
409
410public:
411 shm_t();
412 explicit shm_t(const proxy_t &proxy);
414
415 shm_t proxy_create_wrapper();
416
417 static const std::string interface_name;
418
419 operator wl_shm*() const;
420
433 shm_pool_t create_pool(int fd, int32_t size);
434
437 static constexpr std::uint32_t create_pool_since_version = 1;
438
447 std::function<void(shm_format)> &on_format();
448
449};
450
456enum class shm_error : uint32_t
457 {
459 invalid_format = 0,
461 invalid_stride = 1,
463 invalid_fd = 2
464};
465
482enum class shm_format : uint32_t
483 {
485 argb8888 = 0,
487 xrgb8888 = 1,
489 c8 = 0x20203843,
491 rgb332 = 0x38424752,
493 bgr233 = 0x38524742,
495 xrgb4444 = 0x32315258,
497 xbgr4444 = 0x32314258,
499 rgbx4444 = 0x32315852,
501 bgrx4444 = 0x32315842,
503 argb4444 = 0x32315241,
505 abgr4444 = 0x32314241,
507 rgba4444 = 0x32314152,
509 bgra4444 = 0x32314142,
511 xrgb1555 = 0x35315258,
513 xbgr1555 = 0x35314258,
515 rgbx5551 = 0x35315852,
517 bgrx5551 = 0x35315842,
519 argb1555 = 0x35315241,
521 abgr1555 = 0x35314241,
523 rgba5551 = 0x35314152,
525 bgra5551 = 0x35314142,
527 rgb565 = 0x36314752,
529 bgr565 = 0x36314742,
531 rgb888 = 0x34324752,
533 bgr888 = 0x34324742,
535 xbgr8888 = 0x34324258,
537 rgbx8888 = 0x34325852,
539 bgrx8888 = 0x34325842,
541 abgr8888 = 0x34324241,
543 rgba8888 = 0x34324152,
545 bgra8888 = 0x34324142,
547 xrgb2101010 = 0x30335258,
549 xbgr2101010 = 0x30334258,
551 rgbx1010102 = 0x30335852,
553 bgrx1010102 = 0x30335842,
555 argb2101010 = 0x30335241,
557 abgr2101010 = 0x30334241,
559 rgba1010102 = 0x30334152,
561 bgra1010102 = 0x30334142,
563 yuyv = 0x56595559,
565 yvyu = 0x55595659,
567 uyvy = 0x59565955,
569 vyuy = 0x59555956,
571 ayuv = 0x56555941,
573 nv12 = 0x3231564e,
575 nv21 = 0x3132564e,
577 nv16 = 0x3631564e,
579 nv61 = 0x3136564e,
581 yuv410 = 0x39565559,
583 yvu410 = 0x39555659,
585 yuv411 = 0x31315559,
587 yvu411 = 0x31315659,
589 yuv420 = 0x32315559,
591 yvu420 = 0x32315659,
593 yuv422 = 0x36315559,
595 yvu422 = 0x36315659,
597 yuv444 = 0x34325559,
599 yvu444 = 0x34325659,
601 r8 = 0x20203852,
603 r16 = 0x20363152,
605 rg88 = 0x38384752,
607 gr88 = 0x38385247,
609 rg1616 = 0x32334752,
611 gr1616 = 0x32335247,
613 xrgb16161616f = 0x48345258,
615 xbgr16161616f = 0x48344258,
617 argb16161616f = 0x48345241,
619 abgr16161616f = 0x48344241,
621 xyuv8888 = 0x56555958,
623 vuy888 = 0x34325556,
625 vuy101010 = 0x30335556,
627 y210 = 0x30313259,
629 y212 = 0x32313259,
631 y216 = 0x36313259,
633 y410 = 0x30313459,
635 y412 = 0x32313459,
637 y416 = 0x36313459,
639 xvyu2101010 = 0x30335658,
641 xvyu12_16161616 = 0x36335658,
643 xvyu16161616 = 0x38345658,
645 y0l0 = 0x304c3059,
647 x0l0 = 0x304c3058,
649 y0l2 = 0x324c3059,
651 x0l2 = 0x324c3058,
652 yuv420_8bit = 0x38305559,
653 yuv420_10bit = 0x30315559,
654 xrgb8888_a8 = 0x38415258,
655 xbgr8888_a8 = 0x38414258,
656 rgbx8888_a8 = 0x38415852,
657 bgrx8888_a8 = 0x38415842,
658 rgb888_a8 = 0x38413852,
659 bgr888_a8 = 0x38413842,
660 rgb565_a8 = 0x38413552,
661 bgr565_a8 = 0x38413542,
663 nv24 = 0x3432564e,
665 nv42 = 0x3234564e,
667 p210 = 0x30313250,
669 p010 = 0x30313050,
671 p012 = 0x32313050,
673 p016 = 0x36313050,
675 axbxgxrx106106106106 = 0x30314241,
677 nv15 = 0x3531564e,
678 q410 = 0x30313451,
679 q401 = 0x31303451,
681 xrgb16161616 = 0x38345258,
683 xbgr16161616 = 0x38344258,
685 argb16161616 = 0x38345241,
687 abgr16161616 = 0x38344241
688};
689
690
705class buffer_t : public proxy_t
706{
707private:
708 struct events_t : public detail::events_base_t
709 {
710 std::function<void()> release;
711 };
712
713 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
714
715 buffer_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
716
717public:
718 buffer_t();
719 explicit buffer_t(const proxy_t &proxy);
721
722 buffer_t proxy_create_wrapper();
723
724 static const std::string interface_name;
725
726 operator wl_buffer*() const;
727
744 std::function<void()> &on_release();
745
746};
747
748
759class data_offer_t : public proxy_t
760{
761private:
762 struct events_t : public detail::events_base_t
763 {
764 std::function<void(std::string)> offer;
765 std::function<void(data_device_manager_dnd_action)> source_actions;
766 std::function<void(data_device_manager_dnd_action)> action;
767 };
768
769 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
770
771 data_offer_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
772
773public:
774 data_offer_t();
775 explicit data_offer_t(const proxy_t &proxy);
776 data_offer_t(wl_data_offer *p, wrapper_type t = wrapper_type::standard);
777
778 data_offer_t proxy_create_wrapper();
779
780 static const std::string interface_name;
781
782 operator wl_data_offer*() const;
783
804 void accept(uint32_t serial, std::string const& mime_type);
805
808 static constexpr std::uint32_t accept_since_version = 1;
809
831 void receive(std::string const& mime_type, int fd);
832
835 static constexpr std::uint32_t receive_since_version = 1;
836
855 void finish();
856
859 static constexpr std::uint32_t finish_since_version = 3;
860
864 bool can_finish() const;
865
903 void set_actions(data_device_manager_dnd_action const& dnd_actions, data_device_manager_dnd_action const& preferred_action);
904
907 static constexpr std::uint32_t set_actions_since_version = 3;
908
912 bool can_set_actions() const;
913
921 std::function<void(std::string)> &on_offer();
922
932
973 std::function<void(data_device_manager_dnd_action)> &on_action();
974
975};
976
980enum class data_offer_error : uint32_t
981 {
983 invalid_finish = 0,
985 invalid_action_mask = 1,
987 invalid_action = 2,
989 invalid_offer = 3
990};
991
992
1002{
1003private:
1004 struct events_t : public detail::events_base_t
1005 {
1006 std::function<void(std::string)> target;
1007 std::function<void(std::string, int)> send;
1008 std::function<void()> cancelled;
1009 std::function<void()> dnd_drop_performed;
1010 std::function<void()> dnd_finished;
1011 std::function<void(data_device_manager_dnd_action)> action;
1012 };
1013
1014 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1015
1016 data_source_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1017
1018public:
1019 data_source_t();
1020 explicit data_source_t(const proxy_t &proxy);
1021 data_source_t(wl_data_source *p, wrapper_type t = wrapper_type::standard);
1022
1023 data_source_t proxy_create_wrapper();
1024
1025 static const std::string interface_name;
1026
1027 operator wl_data_source*() const;
1028
1037 void offer(std::string const& mime_type);
1038
1041 static constexpr std::uint32_t offer_since_version = 1;
1042
1061 void set_actions(data_device_manager_dnd_action const& dnd_actions);
1062
1065 static constexpr std::uint32_t set_actions_since_version = 3;
1066
1070 bool can_set_actions() const;
1071
1081 std::function<void(std::string)> &on_target();
1082
1092 std::function<void(std::string, int)> &on_send();
1093
1118 std::function<void()> &on_cancelled();
1119
1133 std::function<void()> &on_dnd_drop_performed();
1134
1145 std::function<void()> &on_dnd_finished();
1146
1177 std::function<void(data_device_manager_dnd_action)> &on_action();
1178
1179};
1180
1184enum class data_source_error : uint32_t
1185 {
1187 invalid_action_mask = 0,
1189 invalid_source = 1
1190};
1191
1192
1203{
1204private:
1205 struct events_t : public detail::events_base_t
1206 {
1207 std::function<void(data_offer_t)> data_offer;
1208 std::function<void(uint32_t, surface_t, double, double, data_offer_t)> enter;
1209 std::function<void()> leave;
1210 std::function<void(uint32_t, double, double)> motion;
1211 std::function<void()> drop;
1212 std::function<void(data_offer_t)> selection;
1213 };
1214
1215 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1216
1217 data_device_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1218
1219public:
1220 data_device_t();
1221 explicit data_device_t(const proxy_t &proxy);
1222 data_device_t(wl_data_device *p, wrapper_type t = wrapper_type::standard);
1223
1224 data_device_t proxy_create_wrapper();
1225
1226 static const std::string interface_name;
1227
1228 operator wl_data_device*() const;
1229
1266 void start_drag(data_source_t const& source, surface_t const& origin, surface_t const& icon, uint32_t serial);
1267
1270 static constexpr std::uint32_t start_drag_since_version = 1;
1271
1282 void set_selection(data_source_t const& source, uint32_t serial);
1283
1286 static constexpr std::uint32_t set_selection_since_version = 1;
1287
1293 void release();
1294
1297 static constexpr std::uint32_t release_since_version = 2;
1298
1302 bool can_release() const;
1303
1316 std::function<void(data_offer_t)> &on_data_offer();
1317
1331 std::function<void(uint32_t, surface_t, double, double, data_offer_t)> &on_enter();
1332
1340 std::function<void()> &on_leave();
1341
1353 std::function<void(uint32_t, double, double)> &on_motion();
1354
1372 std::function<void()> &on_drop();
1373
1391 std::function<void(data_offer_t)> &on_selection();
1392
1393};
1394
1398enum class data_device_error : uint32_t
1399 {
1401 role = 0
1402};
1403
1404
1420{
1421private:
1422 struct events_t : public detail::events_base_t
1423 {
1424 };
1425
1426 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1427
1428 data_device_manager_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1429
1430public:
1432 explicit data_device_manager_t(const proxy_t &proxy);
1433 data_device_manager_t(wl_data_device_manager *p, wrapper_type t = wrapper_type::standard);
1434
1435 data_device_manager_t proxy_create_wrapper();
1436
1437 static const std::string interface_name;
1438
1439 operator wl_data_device_manager*() const;
1440
1448
1451 static constexpr std::uint32_t create_data_source_since_version = 1;
1452
1461
1464 static constexpr std::uint32_t get_data_device_since_version = 1;
1465
1466};
1467
1495struct data_device_manager_dnd_action : public wayland::detail::bitfield<3, 6>
1496{
1497 data_device_manager_dnd_action(const wayland::detail::bitfield<3, 6> &b)
1498 : wayland::detail::bitfield<3, 6>(b) {}
1499 data_device_manager_dnd_action(const uint32_t value)
1500 : wayland::detail::bitfield<3, 6>(value) {}
1502 static const wayland::detail::bitfield<3, 6> none;
1504 static const wayland::detail::bitfield<3, 6> copy;
1506 static const wayland::detail::bitfield<3, 6> move;
1508 static const wayland::detail::bitfield<3, 6> ask;
1509};
1510
1511
1525class shell_t : public proxy_t
1526{
1527private:
1528 struct events_t : public detail::events_base_t
1529 {
1530 };
1531
1532 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1533
1534 shell_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1535
1536public:
1537 shell_t();
1538 explicit shell_t(const proxy_t &proxy);
1540
1541 shell_t proxy_create_wrapper();
1542
1543 static const std::string interface_name;
1544
1545 operator wl_shell*() const;
1546
1559
1562 static constexpr std::uint32_t get_shell_surface_since_version = 1;
1563
1564};
1565
1569enum class shell_error : uint32_t
1570 {
1572 role = 0
1573};
1574
1575
1592{
1593private:
1594 struct events_t : public detail::events_base_t
1595 {
1596 std::function<void(uint32_t)> ping;
1597 std::function<void(shell_surface_resize, int32_t, int32_t)> configure;
1598 std::function<void()> popup_done;
1599 };
1600
1601 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1602
1603 shell_surface_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1604
1605public:
1607 explicit shell_surface_t(const proxy_t &proxy);
1608 shell_surface_t(wl_shell_surface *p, wrapper_type t = wrapper_type::standard);
1609
1610 shell_surface_t proxy_create_wrapper();
1611
1612 static const std::string interface_name;
1613
1614 operator wl_shell_surface*() const;
1615
1623 void pong(uint32_t serial);
1624
1627 static constexpr std::uint32_t pong_since_version = 1;
1628
1640 void move(seat_t const& seat, uint32_t serial);
1641
1644 static constexpr std::uint32_t move_since_version = 1;
1645
1658 void resize(seat_t const& seat, uint32_t serial, shell_surface_resize const& edges);
1659
1662 static constexpr std::uint32_t resize_since_version = 1;
1663
1671 void set_toplevel();
1672
1675 static constexpr std::uint32_t set_toplevel_since_version = 1;
1676
1692 void set_transient(surface_t const& parent, int32_t x, int32_t y, shell_surface_transient const& flags);
1693
1696 static constexpr std::uint32_t set_transient_since_version = 1;
1697
1738 void set_fullscreen(shell_surface_fullscreen_method const& method, uint32_t framerate, output_t const& output);
1739
1742 static constexpr std::uint32_t set_fullscreen_since_version = 1;
1743
1773 void set_popup(seat_t const& seat, uint32_t serial, surface_t const& parent, int32_t x, int32_t y, shell_surface_transient const& flags);
1774
1777 static constexpr std::uint32_t set_popup_since_version = 1;
1778
1802 void set_maximized(output_t const& output);
1803
1806 static constexpr std::uint32_t set_maximized_since_version = 1;
1807
1820 void set_title(std::string const& title);
1821
1824 static constexpr std::uint32_t set_title_since_version = 1;
1825
1837 void set_class(std::string const& class_);
1838
1841 static constexpr std::uint32_t set_class_since_version = 1;
1842
1850 std::function<void(uint32_t)> &on_ping();
1851
1876 std::function<void(shell_surface_resize, int32_t, int32_t)> &on_configure();
1877
1885 std::function<void()> &on_popup_done();
1886
1887};
1888
1897struct shell_surface_resize : public wayland::detail::bitfield<4, 8>
1898{
1899 shell_surface_resize(const wayland::detail::bitfield<4, 8> &b)
1900 : wayland::detail::bitfield<4, 8>(b) {}
1901 shell_surface_resize(const uint32_t value)
1902 : wayland::detail::bitfield<4, 8>(value) {}
1904 static const wayland::detail::bitfield<4, 8> none;
1906 static const wayland::detail::bitfield<4, 8> top;
1908 static const wayland::detail::bitfield<4, 8> bottom;
1910 static const wayland::detail::bitfield<4, 8> left;
1912 static const wayland::detail::bitfield<4, 8> top_left;
1914 static const wayland::detail::bitfield<4, 8> bottom_left;
1916 static const wayland::detail::bitfield<4, 8> right;
1918 static const wayland::detail::bitfield<4, 8> top_right;
1920 static const wayland::detail::bitfield<4, 8> bottom_right;
1921};
1922
1929struct shell_surface_transient : public wayland::detail::bitfield<1, 9>
1930{
1931 shell_surface_transient(const wayland::detail::bitfield<1, 9> &b)
1932 : wayland::detail::bitfield<1, 9>(b) {}
1933 shell_surface_transient(const uint32_t value)
1934 : wayland::detail::bitfield<1, 9>(value) {}
1936 static const wayland::detail::bitfield<1, 9> inactive;
1937};
1938
1946enum class shell_surface_fullscreen_method : uint32_t
1947 {
1949 _default = 0,
1951 scale = 1,
1953 driver = 2,
1955 fill = 3
1956};
1957
1958
2004class surface_t : public proxy_t
2005{
2006private:
2007 struct events_t : public detail::events_base_t
2008 {
2009 std::function<void(output_t)> enter;
2010 std::function<void(output_t)> leave;
2011 };
2012
2013 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
2014
2015 surface_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
2016
2017public:
2018 surface_t();
2019 explicit surface_t(const proxy_t &proxy);
2020 surface_t(wl_surface *p, wrapper_type t = wrapper_type::standard);
2021
2022 surface_t proxy_create_wrapper();
2023
2024 static const std::string interface_name;
2025
2026 operator wl_surface*() const;
2027
2091 void attach(buffer_t const& buffer, int32_t x, int32_t y);
2092
2095 static constexpr std::uint32_t attach_since_version = 1;
2096
2126 void damage(int32_t x, int32_t y, int32_t width, int32_t height);
2127
2130 static constexpr std::uint32_t damage_since_version = 1;
2131
2169 callback_t frame();
2170
2173 static constexpr std::uint32_t frame_since_version = 1;
2174
2204 void set_opaque_region(region_t const& region);
2205
2208 static constexpr std::uint32_t set_opaque_region_since_version = 1;
2209
2237 void set_input_region(region_t const& region);
2238
2241 static constexpr std::uint32_t set_input_region_since_version = 1;
2242
2264 void commit();
2265
2268 static constexpr std::uint32_t commit_since_version = 1;
2269
2304 void set_buffer_transform(output_transform const& transform);
2305
2308 static constexpr std::uint32_t set_buffer_transform_since_version = 2;
2309
2313 bool can_set_buffer_transform() const;
2314
2343 void set_buffer_scale(int32_t scale);
2344
2347 static constexpr std::uint32_t set_buffer_scale_since_version = 3;
2348
2352 bool can_set_buffer_scale() const;
2353
2394 void damage_buffer(int32_t x, int32_t y, int32_t width, int32_t height);
2395
2398 static constexpr std::uint32_t damage_buffer_since_version = 4;
2399
2403 bool can_damage_buffer() const;
2404
2423 void offset(int32_t x, int32_t y);
2424
2427 static constexpr std::uint32_t offset_since_version = 5;
2428
2432 bool can_offset() const;
2433
2444 std::function<void(output_t)> &on_enter();
2445
2460 std::function<void(output_t)> &on_leave();
2461
2462};
2463
2469enum class surface_error : uint32_t
2470 {
2472 invalid_scale = 0,
2474 invalid_transform = 1,
2476 invalid_size = 2,
2478 invalid_offset = 3
2479};
2480
2481
2490class seat_t : public proxy_t
2491{
2492private:
2493 struct events_t : public detail::events_base_t
2494 {
2495 std::function<void(seat_capability)> capabilities;
2496 std::function<void(std::string)> name;
2497 };
2498
2499 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
2500
2501 seat_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
2502
2503public:
2504 seat_t();
2505 explicit seat_t(const proxy_t &proxy);
2507
2508 seat_t proxy_create_wrapper();
2509
2510 static const std::string interface_name;
2511
2512 operator wl_seat*() const;
2513
2528
2531 static constexpr std::uint32_t get_pointer_since_version = 1;
2532
2547
2550 static constexpr std::uint32_t get_keyboard_since_version = 1;
2551
2566
2569 static constexpr std::uint32_t get_touch_since_version = 1;
2570
2577 void release();
2578
2581 static constexpr std::uint32_t release_since_version = 5;
2582
2586 bool can_release() const;
2587
2617 std::function<void(seat_capability)> &on_capabilities();
2618
2640 std::function<void(std::string)> &on_name();
2641
2642};
2643
2650struct seat_capability : public wayland::detail::bitfield<3, 12>
2651{
2652 seat_capability(const wayland::detail::bitfield<3, 12> &b)
2653 : wayland::detail::bitfield<3, 12>(b) {}
2654 seat_capability(const uint32_t value)
2655 : wayland::detail::bitfield<3, 12>(value) {}
2657 static const wayland::detail::bitfield<3, 12> pointer;
2659 static const wayland::detail::bitfield<3, 12> keyboard;
2661 static const wayland::detail::bitfield<3, 12> touch;
2662};
2663
2669enum class seat_error : uint32_t
2670 {
2672 missing_capability = 0
2673};
2674
2675
2688class pointer_t : public proxy_t
2689{
2690private:
2691 struct events_t : public detail::events_base_t
2692 {
2693 std::function<void(uint32_t, surface_t, double, double)> enter;
2694 std::function<void(uint32_t, surface_t)> leave;
2695 std::function<void(uint32_t, double, double)> motion;
2696 std::function<void(uint32_t, uint32_t, uint32_t, pointer_button_state)> button;
2697 std::function<void(uint32_t, pointer_axis, double)> axis;
2698 std::function<void()> frame;
2699 std::function<void(pointer_axis_source)> axis_source;
2700 std::function<void(uint32_t, pointer_axis)> axis_stop;
2701 std::function<void(pointer_axis, int32_t)> axis_discrete;
2702 std::function<void(pointer_axis, int32_t)> axis_value120;
2703 };
2704
2705 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
2706
2707 pointer_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
2708
2709public:
2710 pointer_t();
2711 explicit pointer_t(const proxy_t &proxy);
2712 pointer_t(wl_pointer *p, wrapper_type t = wrapper_type::standard);
2713
2714 pointer_t proxy_create_wrapper();
2715
2716 static const std::string interface_name;
2717
2718 operator wl_pointer*() const;
2719
2763 void set_cursor(uint32_t serial, surface_t const& surface, int32_t hotspot_x, int32_t hotspot_y);
2764
2767 static constexpr std::uint32_t set_cursor_since_version = 1;
2768
2778 void release();
2779
2782 static constexpr std::uint32_t release_since_version = 3;
2783
2787 bool can_release() const;
2788
2803 std::function<void(uint32_t, surface_t, double, double)> &on_enter();
2804
2816 std::function<void(uint32_t, surface_t)> &on_leave();
2817
2828 std::function<void(uint32_t, double, double)> &on_motion();
2829
2852 std::function<void(uint32_t, uint32_t, uint32_t, pointer_button_state)> &on_button();
2853
2877 std::function<void(uint32_t, pointer_axis, double)> &on_axis();
2878
2917 std::function<void()> &on_frame();
2918
2949 std::function<void(pointer_axis_source)> &on_axis_source();
2950
2971 std::function<void(uint32_t, pointer_axis)> &on_axis_stop();
2972
3008 std::function<void(pointer_axis, int32_t)> &on_axis_discrete();
3009
3037 std::function<void(pointer_axis, int32_t)> &on_axis_value120();
3038
3039};
3040
3044enum class pointer_error : uint32_t
3045 {
3047 role = 0
3048};
3049
3056enum class pointer_button_state : uint32_t
3057 {
3059 released = 0,
3061 pressed = 1
3062};
3063
3069enum class pointer_axis : uint32_t
3070 {
3072 vertical_scroll = 0,
3074 horizontal_scroll = 1
3075};
3076
3097enum class pointer_axis_source : uint32_t
3098 {
3100 wheel = 0,
3102 finger = 1,
3104 continuous = 2,
3106 wheel_tilt = 3
3107};
3108
3109
3116class keyboard_t : public proxy_t
3117{
3118private:
3119 struct events_t : public detail::events_base_t
3120 {
3121 std::function<void(keyboard_keymap_format, int, uint32_t)> keymap;
3122 std::function<void(uint32_t, surface_t, array_t)> enter;
3123 std::function<void(uint32_t, surface_t)> leave;
3124 std::function<void(uint32_t, uint32_t, uint32_t, keyboard_key_state)> key;
3125 std::function<void(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t)> modifiers;
3126 std::function<void(int32_t, int32_t)> repeat_info;
3127 };
3128
3129 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3130
3131 keyboard_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3132
3133public:
3134 keyboard_t();
3135 explicit keyboard_t(const proxy_t &proxy);
3136 keyboard_t(wl_keyboard *p, wrapper_type t = wrapper_type::standard);
3137
3138 keyboard_t proxy_create_wrapper();
3139
3140 static const std::string interface_name;
3141
3142 operator wl_keyboard*() const;
3143
3147 void release();
3148
3151 static constexpr std::uint32_t release_since_version = 3;
3152
3156 bool can_release() const;
3157
3171 std::function<void(keyboard_keymap_format, int, uint32_t)> &on_keymap();
3172
3185 std::function<void(uint32_t, surface_t, array_t)> &on_enter();
3186
3201 std::function<void(uint32_t, surface_t)> &on_leave();
3202
3220 std::function<void(uint32_t, uint32_t, uint32_t, keyboard_key_state)> &on_key();
3221
3233 std::function<void(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t)> &on_modifiers();
3234
3253 std::function<void(int32_t, int32_t)> &on_repeat_info();
3254
3255};
3256
3263enum class keyboard_keymap_format : uint32_t
3264 {
3266 no_keymap = 0,
3268 xkb_v1 = 1
3269};
3270
3276enum class keyboard_key_state : uint32_t
3277 {
3279 released = 0,
3281 pressed = 1
3282};
3283
3284
3297class touch_t : public proxy_t
3298{
3299private:
3300 struct events_t : public detail::events_base_t
3301 {
3302 std::function<void(uint32_t, uint32_t, surface_t, int32_t, double, double)> down;
3303 std::function<void(uint32_t, uint32_t, int32_t)> up;
3304 std::function<void(uint32_t, int32_t, double, double)> motion;
3305 std::function<void()> frame;
3306 std::function<void()> cancel;
3307 std::function<void(int32_t, double, double)> shape;
3308 std::function<void(int32_t, double)> orientation;
3309 };
3310
3311 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3312
3313 touch_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3314
3315public:
3316 touch_t();
3317 explicit touch_t(const proxy_t &proxy);
3319
3320 touch_t proxy_create_wrapper();
3321
3322 static const std::string interface_name;
3323
3324 operator wl_touch*() const;
3325
3329 void release();
3330
3333 static constexpr std::uint32_t release_since_version = 3;
3334
3338 bool can_release() const;
3339
3354 std::function<void(uint32_t, uint32_t, surface_t, int32_t, double, double)> &on_down();
3355
3366 std::function<void(uint32_t, uint32_t, int32_t)> &on_up();
3367
3377 std::function<void(uint32_t, int32_t, double, double)> &on_motion();
3378
3391 std::function<void()> &on_frame();
3392
3403 std::function<void()> &on_cancel();
3404
3437 std::function<void(int32_t, double, double)> &on_shape();
3438
3468 std::function<void(int32_t, double)> &on_orientation();
3469
3470};
3471
3472
3483class output_t : public proxy_t
3484{
3485private:
3486 struct events_t : public detail::events_base_t
3487 {
3488 std::function<void(int32_t, int32_t, int32_t, int32_t, output_subpixel, std::string, std::string, output_transform)> geometry;
3489 std::function<void(output_mode, int32_t, int32_t, int32_t)> mode;
3490 std::function<void()> done;
3491 std::function<void(int32_t)> scale;
3492 std::function<void(std::string)> name;
3493 std::function<void(std::string)> description;
3494 };
3495
3496 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3497
3498 output_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3499
3500public:
3501 output_t();
3502 explicit output_t(const proxy_t &proxy);
3503 output_t(wl_output *p, wrapper_type t = wrapper_type::standard);
3504
3505 output_t proxy_create_wrapper();
3506
3507 static const std::string interface_name;
3508
3509 operator wl_output*() const;
3510
3517 void release();
3518
3521 static constexpr std::uint32_t release_since_version = 3;
3522
3526 bool can_release() const;
3527
3556 std::function<void(int32_t, int32_t, int32_t, int32_t, output_subpixel, std::string, std::string, output_transform)> &on_geometry();
3557
3599 std::function<void(output_mode, int32_t, int32_t, int32_t)> &on_mode();
3600
3610 std::function<void()> &on_done();
3611
3637 std::function<void(int32_t)> &on_scale();
3638
3672 std::function<void(std::string)> &on_name();
3673
3693 std::function<void(std::string)> &on_description();
3694
3695};
3696
3703enum class output_subpixel : uint32_t
3704 {
3706 unknown = 0,
3708 none = 1,
3710 horizontal_rgb = 2,
3712 horizontal_bgr = 3,
3714 vertical_rgb = 4,
3716 vertical_bgr = 5
3717};
3718
3734struct output_transform : public wayland::detail::bitfield<3, 21>
3735{
3736 output_transform(const wayland::detail::bitfield<3, 21> &b)
3737 : wayland::detail::bitfield<3, 21>(b) {}
3738 output_transform(const uint32_t value)
3739 : wayland::detail::bitfield<3, 21>(value) {}
3741 static const wayland::detail::bitfield<3, 21> normal;
3743 static const wayland::detail::bitfield<3, 21> _90;
3745 static const wayland::detail::bitfield<3, 21> _180;
3747 static const wayland::detail::bitfield<3, 21> _270;
3749 static const wayland::detail::bitfield<3, 21> flipped;
3751 static const wayland::detail::bitfield<3, 21> flipped_90;
3753 static const wayland::detail::bitfield<3, 21> flipped_180;
3755 static const wayland::detail::bitfield<3, 21> flipped_270;
3756};
3757
3764struct output_mode : public wayland::detail::bitfield<2, 22>
3765{
3766 output_mode(const wayland::detail::bitfield<2, 22> &b)
3767 : wayland::detail::bitfield<2, 22>(b) {}
3768 output_mode(const uint32_t value)
3769 : wayland::detail::bitfield<2, 22>(value) {}
3771 static const wayland::detail::bitfield<2, 22> current;
3773 static const wayland::detail::bitfield<2, 22> preferred;
3774};
3775
3776
3785class region_t : public proxy_t
3786{
3787private:
3788 struct events_t : public detail::events_base_t
3789 {
3790 };
3791
3792 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3793
3794 region_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3795
3796public:
3797 region_t();
3798 explicit region_t(const proxy_t &proxy);
3799 region_t(wl_region *p, wrapper_type t = wrapper_type::standard);
3800
3801 region_t proxy_create_wrapper();
3802
3803 static const std::string interface_name;
3804
3805 operator wl_region*() const;
3806
3816 void add(int32_t x, int32_t y, int32_t width, int32_t height);
3817
3820 static constexpr std::uint32_t add_since_version = 1;
3821
3831 void subtract(int32_t x, int32_t y, int32_t width, int32_t height);
3832
3835 static constexpr std::uint32_t subtract_since_version = 1;
3836
3837};
3838
3839
3864{
3865private:
3866 struct events_t : public detail::events_base_t
3867 {
3868 };
3869
3870 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3871
3872 subcompositor_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3873
3874public:
3876 explicit subcompositor_t(const proxy_t &proxy);
3877 subcompositor_t(wl_subcompositor *p, wrapper_type t = wrapper_type::standard);
3878
3879 subcompositor_t proxy_create_wrapper();
3880
3881 static const std::string interface_name;
3882
3883 operator wl_subcompositor*() const;
3884
3907 subsurface_t get_subsurface(surface_t const& surface, surface_t const& parent);
3908
3911 static constexpr std::uint32_t get_subsurface_since_version = 1;
3912
3913};
3914
3918enum class subcompositor_error : uint32_t
3919 {
3921 bad_surface = 0
3922};
3923
3924
3978class subsurface_t : public proxy_t
3979{
3980private:
3981 struct events_t : public detail::events_base_t
3982 {
3983 };
3984
3985 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3986
3987 subsurface_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3988
3989public:
3990 subsurface_t();
3991 explicit subsurface_t(const proxy_t &proxy);
3992 subsurface_t(wl_subsurface *p, wrapper_type t = wrapper_type::standard);
3993
3994 subsurface_t proxy_create_wrapper();
3995
3996 static const std::string interface_name;
3997
3998 operator wl_subsurface*() const;
3999
4022 void set_position(int32_t x, int32_t y);
4023
4026 static constexpr std::uint32_t set_position_since_version = 1;
4027
4048 void place_above(surface_t const& sibling);
4049
4052 static constexpr std::uint32_t place_above_since_version = 1;
4053
4061 void place_below(surface_t const& sibling);
4062
4065 static constexpr std::uint32_t place_below_since_version = 1;
4066
4084 void set_sync();
4085
4088 static constexpr std::uint32_t set_sync_since_version = 1;
4089
4113 void set_desync();
4114
4117 static constexpr std::uint32_t set_desync_since_version = 1;
4118
4119};
4120
4124enum class subsurface_error : uint32_t
4125 {
4127 bad_surface = 0
4128};
4129
4130
4131
4132}
content for a wl_surface
std::function< void()> & on_release()
compositor releases buffer
std::function< void(uint32_t)> & on_done()
done event
the compositor singleton
region_t create_region()
create new region
static constexpr std::uint32_t create_surface_since_version
Minimum protocol version required for the create_surface function.
surface_t create_surface()
create new surface
static constexpr std::uint32_t create_region_since_version
Minimum protocol version required for the create_region function.
data_source_t create_data_source()
create a new data source
data_device_t get_data_device(seat_t const &seat)
create a new data device
static constexpr std::uint32_t get_data_device_since_version
Minimum protocol version required for the get_data_device function.
static constexpr std::uint32_t create_data_source_since_version
Minimum protocol version required for the create_data_source function.
bool can_release() const
Check whether the release function is available with the currently bound version of the protocol.
static constexpr std::uint32_t release_since_version
Minimum protocol version required for the release function.
std::function< void(uint32_t, double, double)> & on_motion()
drag-and-drop session motion
std::function< void()> & on_leave()
end drag-and-drop session
std::function< void(data_offer_t)> & on_selection()
advertise new selection
void release()
destroy data device
std::function< void()> & on_drop()
end drag-and-drop session successfully
void set_selection(data_source_t const &source, uint32_t serial)
copy data to the selection
void start_drag(data_source_t const &source, surface_t const &origin, surface_t const &icon, uint32_t serial)
start drag-and-drop operation
static constexpr std::uint32_t set_selection_since_version
Minimum protocol version required for the set_selection function.
static constexpr std::uint32_t start_drag_since_version
Minimum protocol version required for the start_drag function.
std::function< void(uint32_t, surface_t, double, double, data_offer_t)> & on_enter()
initiate drag-and-drop session
std::function< void(data_offer_t)> & on_data_offer()
introduce a new wl_data_offer
std::function< void(std::string)> & on_offer()
advertise offered mime type
void set_actions(data_device_manager_dnd_action const &dnd_actions, data_device_manager_dnd_action const &preferred_action)
set the available/preferred drag-and-drop actions
std::function< void(data_device_manager_dnd_action)> & on_action()
notify the selected action
static constexpr std::uint32_t finish_since_version
Minimum protocol version required for the finish function.
bool can_finish() const
Check whether the finish function is available with the currently bound version of the protocol.
void receive(std::string const &mime_type, int fd)
request that the data is transferred
static constexpr std::uint32_t receive_since_version
Minimum protocol version required for the receive function.
static constexpr std::uint32_t set_actions_since_version
Minimum protocol version required for the set_actions function.
std::function< void(data_device_manager_dnd_action)> & on_source_actions()
notify the source-side available actions
bool can_set_actions() const
Check whether the set_actions function is available with the currently bound version of the protocol.
static constexpr std::uint32_t accept_since_version
Minimum protocol version required for the accept function.
void accept(uint32_t serial, std::string const &mime_type)
accept one of the offered mime types
void finish()
the offer will no longer be used
std::function< void()> & on_cancelled()
selection was cancelled
static constexpr std::uint32_t set_actions_since_version
Minimum protocol version required for the set_actions function.
static constexpr std::uint32_t offer_since_version
Minimum protocol version required for the offer function.
std::function< void()> & on_dnd_finished()
the drag-and-drop operation concluded
std::function< void(std::string, int)> & on_send()
send the data
std::function< void()> & on_dnd_drop_performed()
the drag-and-drop operation physically finished
void offer(std::string const &mime_type)
add an offered mime type
std::function< void(data_device_manager_dnd_action)> & on_action()
notify the selected action
std::function< void(std::string)> & on_target()
a target accepts an offered mime type
void set_actions(data_device_manager_dnd_action const &dnd_actions)
set the available drag-and-drop actions
bool can_set_actions() const
Check whether the set_actions function is available with the currently bound version of the protocol.
static constexpr std::uint32_t release_since_version
Minimum protocol version required for the release function.
std::function< void(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t)> & on_modifiers()
modifier and group state
bool can_release() const
Check whether the release function is available with the currently bound version of the protocol.
std::function< void(uint32_t, surface_t, array_t)> & on_enter()
enter event
std::function< void(keyboard_keymap_format, int, uint32_t)> & on_keymap()
keyboard mapping
std::function< void(uint32_t, surface_t)> & on_leave()
leave event
std::function< void(int32_t, int32_t)> & on_repeat_info()
repeat rate and delay
void release()
release the keyboard object
std::function< void(uint32_t, uint32_t, uint32_t, keyboard_key_state)> & on_key()
key event
compositor output region
std::function< void(std::string)> & on_name()
name of this output
bool can_release() const
Check whether the release function is available with the currently bound version of the protocol.
std::function< void(int32_t)> & on_scale()
output scaling properties
std::function< void(std::string)> & on_description()
human-readable description of this output
std::function< void()> & on_done()
sent all information about output
void release()
release the output object
std::function< void(int32_t, int32_t, int32_t, int32_t, output_subpixel, std::string, std::string, output_transform)> & on_geometry()
properties of the output
static constexpr std::uint32_t release_since_version
Minimum protocol version required for the release function.
std::function< void(output_mode, int32_t, int32_t, int32_t)> & on_mode()
advertise available modes for the output
std::function< void(uint32_t, surface_t, double, double)> & on_enter()
enter event
std::function< void(uint32_t, pointer_axis, double)> & on_axis()
axis event
std::function< void(uint32_t, uint32_t, uint32_t, pointer_button_state)> & on_button()
pointer button event
std::function< void(pointer_axis, int32_t)> & on_axis_value120()
axis high-resolution scroll event
std::function< void(uint32_t, surface_t)> & on_leave()
leave event
void release()
release the pointer object
static constexpr std::uint32_t set_cursor_since_version
Minimum protocol version required for the set_cursor function.
std::function< void(pointer_axis, int32_t)> & on_axis_discrete()
axis click event
std::function< void()> & on_frame()
end of a pointer event sequence
bool can_release() const
Check whether the release function is available with the currently bound version of the protocol.
static constexpr std::uint32_t release_since_version
Minimum protocol version required for the release function.
std::function< void(pointer_axis_source)> & on_axis_source()
axis source event
void set_cursor(uint32_t serial, surface_t const &surface, int32_t hotspot_x, int32_t hotspot_y)
set the pointer surface
std::function< void(uint32_t, pointer_axis)> & on_axis_stop()
axis stop event
std::function< void(uint32_t, double, double)> & on_motion()
pointer motion event
Represents a protocol object on the client side.
static constexpr std::uint32_t subtract_since_version
Minimum protocol version required for the subtract function.
static constexpr std::uint32_t add_since_version
Minimum protocol version required for the add function.
void add(int32_t x, int32_t y, int32_t width, int32_t height)
add rectangle to region
void subtract(int32_t x, int32_t y, int32_t width, int32_t height)
subtract rectangle from region
global registry object
static constexpr std::uint32_t bind_since_version
Minimum protocol version required for the bind function.
std::function< void(uint32_t, std::string, uint32_t)> & on_global()
announce global object
proxy_t bind(uint32_t name, proxy_t &interface, uint32_t version)
bind an object to the display
std::function< void(uint32_t)> & on_global_remove()
announce removal of global object
group of input devices
static constexpr std::uint32_t get_pointer_since_version
Minimum protocol version required for the get_pointer function.
static constexpr std::uint32_t get_keyboard_since_version
Minimum protocol version required for the get_keyboard function.
std::function< void(std::string)> & on_name()
unique identifier for this seat
touch_t get_touch()
return touch object
static constexpr std::uint32_t release_since_version
Minimum protocol version required for the release function.
static constexpr std::uint32_t get_touch_since_version
Minimum protocol version required for the get_touch function.
bool can_release() const
Check whether the release function is available with the currently bound version of the protocol.
keyboard_t get_keyboard()
return keyboard object
pointer_t get_pointer()
return pointer object
void release()
release the seat object
std::function< void(seat_capability)> & on_capabilities()
seat capabilities changed
desktop-style metadata interface
static constexpr std::uint32_t set_popup_since_version
Minimum protocol version required for the set_popup function.
void resize(seat_t const &seat, uint32_t serial, shell_surface_resize const &edges)
start an interactive resize
static constexpr std::uint32_t set_fullscreen_since_version
Minimum protocol version required for the set_fullscreen function.
void set_fullscreen(shell_surface_fullscreen_method const &method, uint32_t framerate, output_t const &output)
make the surface a fullscreen surface
void move(seat_t const &seat, uint32_t serial)
start an interactive move
static constexpr std::uint32_t set_toplevel_since_version
Minimum protocol version required for the set_toplevel function.
void set_class(std::string const &class_)
set surface class
static constexpr std::uint32_t set_maximized_since_version
Minimum protocol version required for the set_maximized function.
static constexpr std::uint32_t set_transient_since_version
Minimum protocol version required for the set_transient function.
static constexpr std::uint32_t pong_since_version
Minimum protocol version required for the pong function.
void set_transient(surface_t const &parent, int32_t x, int32_t y, shell_surface_transient const &flags)
make the surface a transient surface
void set_toplevel()
make the surface a toplevel surface
static constexpr std::uint32_t set_class_since_version
Minimum protocol version required for the set_class function.
std::function< void(shell_surface_resize, int32_t, int32_t)> & on_configure()
suggest resize
std::function< void(uint32_t)> & on_ping()
ping client
void set_popup(seat_t const &seat, uint32_t serial, surface_t const &parent, int32_t x, int32_t y, shell_surface_transient const &flags)
make the surface a popup surface
void pong(uint32_t serial)
respond to a ping event
static constexpr std::uint32_t set_title_since_version
Minimum protocol version required for the set_title function.
static constexpr std::uint32_t resize_since_version
Minimum protocol version required for the resize function.
void set_maximized(output_t const &output)
make the surface a maximized surface
static constexpr std::uint32_t move_since_version
Minimum protocol version required for the move function.
std::function< void()> & on_popup_done()
popup interaction is done
void set_title(std::string const &title)
set surface title
create desktop-style surfaces
shell_surface_t get_shell_surface(surface_t const &surface)
create a shell surface from a surface
static constexpr std::uint32_t get_shell_surface_since_version
Minimum protocol version required for the get_shell_surface function.
static constexpr std::uint32_t resize_since_version
Minimum protocol version required for the resize function.
static constexpr std::uint32_t create_buffer_since_version
Minimum protocol version required for the create_buffer function.
buffer_t create_buffer(int32_t offset, int32_t width, int32_t height, int32_t stride, shm_format const &format)
create a buffer from the pool
void resize(int32_t size)
change the size of the pool mapping
shared memory support
std::function< void(shm_format)> & on_format()
pixel format description
static constexpr std::uint32_t create_pool_since_version
Minimum protocol version required for the create_pool function.
shm_pool_t create_pool(int fd, int32_t size)
create a shm pool
static constexpr std::uint32_t get_subsurface_since_version
Minimum protocol version required for the get_subsurface function.
subsurface_t get_subsurface(surface_t const &surface, surface_t const &parent)
give a surface the role sub-surface
sub-surface interface to a wl_surface
static constexpr std::uint32_t set_sync_since_version
Minimum protocol version required for the set_sync function.
static constexpr std::uint32_t place_below_since_version
Minimum protocol version required for the place_below function.
void set_desync()
set sub-surface to desynchronized mode
static constexpr std::uint32_t place_above_since_version
Minimum protocol version required for the place_above function.
void set_sync()
set sub-surface to synchronized mode
void set_position(int32_t x, int32_t y)
reposition the sub-surface
void place_below(surface_t const &sibling)
restack the sub-surface
static constexpr std::uint32_t set_desync_since_version
Minimum protocol version required for the set_desync function.
void place_above(surface_t const &sibling)
restack the sub-surface
static constexpr std::uint32_t set_position_since_version
Minimum protocol version required for the set_position function.
void offset(int32_t x, int32_t y)
set the surface contents offset
bool can_offset() const
Check whether the offset function is available with the currently bound version of the protocol.
static constexpr std::uint32_t damage_since_version
Minimum protocol version required for the damage function.
std::function< void(output_t)> & on_enter()
surface enters an output
static constexpr std::uint32_t set_input_region_since_version
Minimum protocol version required for the set_input_region function.
void set_buffer_transform(output_transform const &transform)
sets the buffer transformation
void set_input_region(region_t const &region)
set input region
void commit()
commit pending surface state
void attach(buffer_t const &buffer, int32_t x, int32_t y)
set the surface contents
static constexpr std::uint32_t set_buffer_transform_since_version
Minimum protocol version required for the set_buffer_transform function.
static constexpr std::uint32_t set_opaque_region_since_version
Minimum protocol version required for the set_opaque_region function.
bool can_set_buffer_scale() const
Check whether the set_buffer_scale function is available with the currently bound version of the prot...
static constexpr std::uint32_t attach_since_version
Minimum protocol version required for the attach function.
void set_buffer_scale(int32_t scale)
sets the buffer scaling factor
static constexpr std::uint32_t offset_since_version
Minimum protocol version required for the offset function.
static constexpr std::uint32_t damage_buffer_since_version
Minimum protocol version required for the damage_buffer function.
callback_t frame()
request a frame throttling hint
void damage(int32_t x, int32_t y, int32_t width, int32_t height)
mark part of the surface damaged
static constexpr std::uint32_t frame_since_version
Minimum protocol version required for the frame function.
static constexpr std::uint32_t set_buffer_scale_since_version
Minimum protocol version required for the set_buffer_scale function.
bool can_damage_buffer() const
Check whether the damage_buffer function is available with the currently bound version of the protoco...
static constexpr std::uint32_t commit_since_version
Minimum protocol version required for the commit function.
std::function< void(output_t)> & on_leave()
surface leaves an output
void damage_buffer(int32_t x, int32_t y, int32_t width, int32_t height)
mark part of the surface damaged using buffer coordinates
void set_opaque_region(region_t const &region)
set opaque region
bool can_set_buffer_transform() const
Check whether the set_buffer_transform function is available with the currently bound version of the ...
touchscreen input device
std::function< void(uint32_t, uint32_t, surface_t, int32_t, double, double)> & on_down()
touch down event and beginning of a touch sequence
std::function< void()> & on_cancel()
touch session cancelled
static constexpr std::uint32_t release_since_version
Minimum protocol version required for the release function.
std::function< void(uint32_t, uint32_t, int32_t)> & on_up()
end of a touch event sequence
std::function< void(uint32_t, int32_t, double, double)> & on_motion()
update of touch point coordinates
std::function< void(int32_t, double)> & on_orientation()
update orientation of touch point
std::function< void()> & on_frame()
end of touch frame event
bool can_release() const
Check whether the release function is available with the currently bound version of the protocol.
std::function< void(int32_t, double, double)> & on_shape()
update shape of touch point
void release()
release the touch object
static const wayland::detail::bitfield< 3, 6 > ask
ask action
static const wayland::detail::bitfield< 3, 6 > none
no action
static const wayland::detail::bitfield< 3, 6 > move
move action
static const wayland::detail::bitfield< 3, 6 > copy
copy action
static const wayland::detail::bitfield< 2, 22 > current
indicates this is the current mode
static const wayland::detail::bitfield< 2, 22 > preferred
indicates this is the preferred mode
transform from framebuffer to output
static const wayland::detail::bitfield< 3, 21 > normal
no transform
static const wayland::detail::bitfield< 3, 21 > _270
270 degrees counter-clockwise
static const wayland::detail::bitfield< 3, 21 > flipped_180
flip and rotate 180 degrees counter-clockwise
static const wayland::detail::bitfield< 3, 21 > _180
180 degrees counter-clockwise
static const wayland::detail::bitfield< 3, 21 > flipped_90
flip and rotate 90 degrees counter-clockwise
static const wayland::detail::bitfield< 3, 21 > flipped_270
flip and rotate 270 degrees counter-clockwise
static const wayland::detail::bitfield< 3, 21 > flipped
180 degree flip around a vertical axis
static const wayland::detail::bitfield< 3, 21 > _90
90 degrees counter-clockwise
static const wayland::detail::bitfield< 3, 12 > touch
the seat has touch devices
static const wayland::detail::bitfield< 3, 12 > keyboard
the seat has one or more keyboards
static const wayland::detail::bitfield< 3, 12 > pointer
the seat has pointer devices
static const wayland::detail::bitfield< 4, 8 > bottom
bottom edge
static const wayland::detail::bitfield< 4, 8 > right
right edge
static const wayland::detail::bitfield< 4, 8 > bottom_right
bottom and right edges
static const wayland::detail::bitfield< 4, 8 > top
top edge
static const wayland::detail::bitfield< 4, 8 > none
no edge
static const wayland::detail::bitfield< 4, 8 > top_left
top and left edges
static const wayland::detail::bitfield< 4, 8 > top_right
top and right edges
static const wayland::detail::bitfield< 4, 8 > bottom_left
bottom and left edges
static const wayland::detail::bitfield< 4, 8 > left
left edge
static const wayland::detail::bitfield< 1, 9 > inactive
do not set keyboard focus