Wayland++ 0.2.9
C++ Bindings for Wayland
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
370 void resize(int32_t size);
371
374 static constexpr std::uint32_t resize_since_version = 1;
375
376};
377
378
392class shm_t : public proxy_t
393{
394private:
395 struct events_t : public detail::events_base_t
396 {
397 std::function<void(shm_format)> format;
398 };
399
400 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
401
402 shm_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
403
404public:
405 shm_t();
406 explicit shm_t(const proxy_t &proxy);
408
409 shm_t proxy_create_wrapper();
410
411 static const std::string interface_name;
412
413 operator wl_shm*() const;
414
427 shm_pool_t create_pool(int fd, int32_t size);
428
431 static constexpr std::uint32_t create_pool_since_version = 1;
432
441 std::function<void(shm_format)> &on_format();
442
443};
444
450enum class shm_error : uint32_t
451 {
453 invalid_format = 0,
455 invalid_stride = 1,
457 invalid_fd = 2
458};
459
473enum class shm_format : uint32_t
474 {
476 argb8888 = 0,
478 xrgb8888 = 1,
480 c8 = 0x20203843,
482 rgb332 = 0x38424752,
484 bgr233 = 0x38524742,
486 xrgb4444 = 0x32315258,
488 xbgr4444 = 0x32314258,
490 rgbx4444 = 0x32315852,
492 bgrx4444 = 0x32315842,
494 argb4444 = 0x32315241,
496 abgr4444 = 0x32314241,
498 rgba4444 = 0x32314152,
500 bgra4444 = 0x32314142,
502 xrgb1555 = 0x35315258,
504 xbgr1555 = 0x35314258,
506 rgbx5551 = 0x35315852,
508 bgrx5551 = 0x35315842,
510 argb1555 = 0x35315241,
512 abgr1555 = 0x35314241,
514 rgba5551 = 0x35314152,
516 bgra5551 = 0x35314142,
518 rgb565 = 0x36314752,
520 bgr565 = 0x36314742,
522 rgb888 = 0x34324752,
524 bgr888 = 0x34324742,
526 xbgr8888 = 0x34324258,
528 rgbx8888 = 0x34325852,
530 bgrx8888 = 0x34325842,
532 abgr8888 = 0x34324241,
534 rgba8888 = 0x34324152,
536 bgra8888 = 0x34324142,
538 xrgb2101010 = 0x30335258,
540 xbgr2101010 = 0x30334258,
542 rgbx1010102 = 0x30335852,
544 bgrx1010102 = 0x30335842,
546 argb2101010 = 0x30335241,
548 abgr2101010 = 0x30334241,
550 rgba1010102 = 0x30334152,
552 bgra1010102 = 0x30334142,
554 yuyv = 0x56595559,
556 yvyu = 0x55595659,
558 uyvy = 0x59565955,
560 vyuy = 0x59555956,
562 ayuv = 0x56555941,
564 nv12 = 0x3231564e,
566 nv21 = 0x3132564e,
568 nv16 = 0x3631564e,
570 nv61 = 0x3136564e,
572 yuv410 = 0x39565559,
574 yvu410 = 0x39555659,
576 yuv411 = 0x31315559,
578 yvu411 = 0x31315659,
580 yuv420 = 0x32315559,
582 yvu420 = 0x32315659,
584 yuv422 = 0x36315559,
586 yvu422 = 0x36315659,
588 yuv444 = 0x34325559,
590 yvu444 = 0x34325659,
592 r8 = 0x20203852,
594 r16 = 0x20363152,
596 rg88 = 0x38384752,
598 gr88 = 0x38385247,
600 rg1616 = 0x32334752,
602 gr1616 = 0x32335247,
604 xrgb16161616f = 0x48345258,
606 xbgr16161616f = 0x48344258,
608 argb16161616f = 0x48345241,
610 abgr16161616f = 0x48344241,
612 xyuv8888 = 0x56555958,
614 vuy888 = 0x34325556,
616 vuy101010 = 0x30335556,
618 y210 = 0x30313259,
620 y212 = 0x32313259,
622 y216 = 0x36313259,
624 y410 = 0x30313459,
626 y412 = 0x32313459,
628 y416 = 0x36313459,
630 xvyu2101010 = 0x30335658,
632 xvyu12_16161616 = 0x36335658,
634 xvyu16161616 = 0x38345658,
636 y0l0 = 0x304c3059,
638 x0l0 = 0x304c3058,
640 y0l2 = 0x324c3059,
642 x0l2 = 0x324c3058,
643 yuv420_8bit = 0x38305559,
644 yuv420_10bit = 0x30315559,
645 xrgb8888_a8 = 0x38415258,
646 xbgr8888_a8 = 0x38414258,
647 rgbx8888_a8 = 0x38415852,
648 bgrx8888_a8 = 0x38415842,
649 rgb888_a8 = 0x38413852,
650 bgr888_a8 = 0x38413842,
651 rgb565_a8 = 0x38413552,
652 bgr565_a8 = 0x38413542,
654 nv24 = 0x3432564e,
656 nv42 = 0x3234564e,
658 p210 = 0x30313250,
660 p010 = 0x30313050,
662 p012 = 0x32313050,
664 p016 = 0x36313050,
666 axbxgxrx106106106106 = 0x30314241,
668 nv15 = 0x3531564e,
669 q410 = 0x30313451,
670 q401 = 0x31303451
671};
672
673
683class buffer_t : public proxy_t
684{
685private:
686 struct events_t : public detail::events_base_t
687 {
688 std::function<void()> release;
689 };
690
691 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
692
693 buffer_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
694
695public:
696 buffer_t();
697 explicit buffer_t(const proxy_t &proxy);
699
700 buffer_t proxy_create_wrapper();
701
702 static const std::string interface_name;
703
704 operator wl_buffer*() const;
705
722 std::function<void()> &on_release();
723
724};
725
726
737class data_offer_t : public proxy_t
738{
739private:
740 struct events_t : public detail::events_base_t
741 {
742 std::function<void(std::string)> offer;
743 std::function<void(data_device_manager_dnd_action)> source_actions;
744 std::function<void(data_device_manager_dnd_action)> action;
745 };
746
747 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
748
749 data_offer_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
750
751public:
752 data_offer_t();
753 explicit data_offer_t(const proxy_t &proxy);
754 data_offer_t(wl_data_offer *p, wrapper_type t = wrapper_type::standard);
755
756 data_offer_t proxy_create_wrapper();
757
758 static const std::string interface_name;
759
760 operator wl_data_offer*() const;
761
782 void accept(uint32_t serial, std::string const& mime_type);
783
786 static constexpr std::uint32_t accept_since_version = 1;
787
809 void receive(std::string const& mime_type, int fd);
810
813 static constexpr std::uint32_t receive_since_version = 1;
814
833 void finish();
834
837 static constexpr std::uint32_t finish_since_version = 3;
838
842 bool can_finish() const;
843
881 void set_actions(data_device_manager_dnd_action const& dnd_actions, data_device_manager_dnd_action const& preferred_action);
882
885 static constexpr std::uint32_t set_actions_since_version = 3;
886
890 bool can_set_actions() const;
891
899 std::function<void(std::string)> &on_offer();
900
910
951 std::function<void(data_device_manager_dnd_action)> &on_action();
952
953};
954
958enum class data_offer_error : uint32_t
959 {
961 invalid_finish = 0,
963 invalid_action_mask = 1,
965 invalid_action = 2,
967 invalid_offer = 3
968};
969
970
979class data_source_t : public proxy_t
980{
981private:
982 struct events_t : public detail::events_base_t
983 {
984 std::function<void(std::string)> target;
985 std::function<void(std::string, int)> send;
986 std::function<void()> cancelled;
987 std::function<void()> dnd_drop_performed;
988 std::function<void()> dnd_finished;
989 std::function<void(data_device_manager_dnd_action)> action;
990 };
991
992 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
993
994 data_source_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
995
996public:
998 explicit data_source_t(const proxy_t &proxy);
999 data_source_t(wl_data_source *p, wrapper_type t = wrapper_type::standard);
1000
1001 data_source_t proxy_create_wrapper();
1002
1003 static const std::string interface_name;
1004
1005 operator wl_data_source*() const;
1006
1015 void offer(std::string const& mime_type);
1016
1019 static constexpr std::uint32_t offer_since_version = 1;
1020
1039 void set_actions(data_device_manager_dnd_action const& dnd_actions);
1040
1043 static constexpr std::uint32_t set_actions_since_version = 3;
1044
1048 bool can_set_actions() const;
1049
1059 std::function<void(std::string)> &on_target();
1060
1070 std::function<void(std::string, int)> &on_send();
1071
1096 std::function<void()> &on_cancelled();
1097
1111 std::function<void()> &on_dnd_drop_performed();
1112
1123 std::function<void()> &on_dnd_finished();
1124
1155 std::function<void(data_device_manager_dnd_action)> &on_action();
1156
1157};
1158
1162enum class data_source_error : uint32_t
1163 {
1165 invalid_action_mask = 0,
1167 invalid_source = 1
1168};
1169
1170
1181{
1182private:
1183 struct events_t : public detail::events_base_t
1184 {
1185 std::function<void(data_offer_t)> data_offer;
1186 std::function<void(uint32_t, surface_t, double, double, data_offer_t)> enter;
1187 std::function<void()> leave;
1188 std::function<void(uint32_t, double, double)> motion;
1189 std::function<void()> drop;
1190 std::function<void(data_offer_t)> selection;
1191 };
1192
1193 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1194
1195 data_device_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1196
1197public:
1198 data_device_t();
1199 explicit data_device_t(const proxy_t &proxy);
1200 data_device_t(wl_data_device *p, wrapper_type t = wrapper_type::standard);
1201
1202 data_device_t proxy_create_wrapper();
1203
1204 static const std::string interface_name;
1205
1206 operator wl_data_device*() const;
1207
1244 void start_drag(data_source_t const& source, surface_t const& origin, surface_t const& icon, uint32_t serial);
1245
1248 static constexpr std::uint32_t start_drag_since_version = 1;
1249
1260 void set_selection(data_source_t const& source, uint32_t serial);
1261
1264 static constexpr std::uint32_t set_selection_since_version = 1;
1265
1271 void release();
1272
1275 static constexpr std::uint32_t release_since_version = 2;
1276
1280 bool can_release() const;
1281
1294 std::function<void(data_offer_t)> &on_data_offer();
1295
1309 std::function<void(uint32_t, surface_t, double, double, data_offer_t)> &on_enter();
1310
1318 std::function<void()> &on_leave();
1319
1331 std::function<void(uint32_t, double, double)> &on_motion();
1332
1350 std::function<void()> &on_drop();
1351
1368 std::function<void(data_offer_t)> &on_selection();
1369
1370};
1371
1375enum class data_device_error : uint32_t
1376 {
1378 role = 0
1379};
1380
1381
1397{
1398private:
1399 struct events_t : public detail::events_base_t
1400 {
1401 };
1402
1403 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1404
1405 data_device_manager_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1406
1407public:
1409 explicit data_device_manager_t(const proxy_t &proxy);
1410 data_device_manager_t(wl_data_device_manager *p, wrapper_type t = wrapper_type::standard);
1411
1412 data_device_manager_t proxy_create_wrapper();
1413
1414 static const std::string interface_name;
1415
1416 operator wl_data_device_manager*() const;
1417
1425
1428 static constexpr std::uint32_t create_data_source_since_version = 1;
1429
1438
1441 static constexpr std::uint32_t get_data_device_since_version = 1;
1442
1443};
1444
1472struct data_device_manager_dnd_action : public detail::bitfield<3, 6>
1473{
1474 data_device_manager_dnd_action(const detail::bitfield<3, 6> &b)
1475 : detail::bitfield<3, 6>(b) {}
1476 data_device_manager_dnd_action(const uint32_t value)
1477 : detail::bitfield<3, 6>(value) {}
1479 static const detail::bitfield<3, 6> none;
1481 static const detail::bitfield<3, 6> copy;
1483 static const detail::bitfield<3, 6> move;
1485 static const detail::bitfield<3, 6> ask;
1486};
1487
1488
1501class shell_t : public proxy_t
1502{
1503private:
1504 struct events_t : public detail::events_base_t
1505 {
1506 };
1507
1508 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1509
1510 shell_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1511
1512public:
1513 shell_t();
1514 explicit shell_t(const proxy_t &proxy);
1516
1517 shell_t proxy_create_wrapper();
1518
1519 static const std::string interface_name;
1520
1521 operator wl_shell*() const;
1522
1535
1538 static constexpr std::uint32_t get_shell_surface_since_version = 1;
1539
1540};
1541
1545enum class shell_error : uint32_t
1546 {
1548 role = 0
1549};
1550
1551
1568{
1569private:
1570 struct events_t : public detail::events_base_t
1571 {
1572 std::function<void(uint32_t)> ping;
1573 std::function<void(shell_surface_resize, int32_t, int32_t)> configure;
1574 std::function<void()> popup_done;
1575 };
1576
1577 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1578
1579 shell_surface_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1580
1581public:
1583 explicit shell_surface_t(const proxy_t &proxy);
1584 shell_surface_t(wl_shell_surface *p, wrapper_type t = wrapper_type::standard);
1585
1586 shell_surface_t proxy_create_wrapper();
1587
1588 static const std::string interface_name;
1589
1590 operator wl_shell_surface*() const;
1591
1599 void pong(uint32_t serial);
1600
1603 static constexpr std::uint32_t pong_since_version = 1;
1604
1616 void move(seat_t const& seat, uint32_t serial);
1617
1620 static constexpr std::uint32_t move_since_version = 1;
1621
1634 void resize(seat_t const& seat, uint32_t serial, shell_surface_resize const& edges);
1635
1638 static constexpr std::uint32_t resize_since_version = 1;
1639
1647 void set_toplevel();
1648
1651 static constexpr std::uint32_t set_toplevel_since_version = 1;
1652
1668 void set_transient(surface_t const& parent, int32_t x, int32_t y, shell_surface_transient const& flags);
1669
1672 static constexpr std::uint32_t set_transient_since_version = 1;
1673
1714 void set_fullscreen(shell_surface_fullscreen_method const& method, uint32_t framerate, output_t const& output);
1715
1718 static constexpr std::uint32_t set_fullscreen_since_version = 1;
1719
1749 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);
1750
1753 static constexpr std::uint32_t set_popup_since_version = 1;
1754
1778 void set_maximized(output_t const& output);
1779
1782 static constexpr std::uint32_t set_maximized_since_version = 1;
1783
1796 void set_title(std::string const& title);
1797
1800 static constexpr std::uint32_t set_title_since_version = 1;
1801
1813 void set_class(std::string const& class_);
1814
1817 static constexpr std::uint32_t set_class_since_version = 1;
1818
1826 std::function<void(uint32_t)> &on_ping();
1827
1852 std::function<void(shell_surface_resize, int32_t, int32_t)> &on_configure();
1853
1861 std::function<void()> &on_popup_done();
1862
1863};
1864
1873struct shell_surface_resize : public detail::bitfield<4, 8>
1874{
1875 shell_surface_resize(const detail::bitfield<4, 8> &b)
1876 : detail::bitfield<4, 8>(b) {}
1877 shell_surface_resize(const uint32_t value)
1878 : detail::bitfield<4, 8>(value) {}
1880 static const detail::bitfield<4, 8> none;
1882 static const detail::bitfield<4, 8> top;
1884 static const detail::bitfield<4, 8> bottom;
1886 static const detail::bitfield<4, 8> left;
1888 static const detail::bitfield<4, 8> top_left;
1890 static const detail::bitfield<4, 8> bottom_left;
1892 static const detail::bitfield<4, 8> right;
1894 static const detail::bitfield<4, 8> top_right;
1896 static const detail::bitfield<4, 8> bottom_right;
1897};
1898
1905struct shell_surface_transient : public detail::bitfield<1, 9>
1906{
1907 shell_surface_transient(const detail::bitfield<1, 9> &b)
1908 : detail::bitfield<1, 9>(b) {}
1909 shell_surface_transient(const uint32_t value)
1910 : detail::bitfield<1, 9>(value) {}
1912 static const detail::bitfield<1, 9> inactive;
1913};
1914
1922enum class shell_surface_fullscreen_method : uint32_t
1923 {
1925 _default = 0,
1927 scale = 1,
1929 driver = 2,
1931 fill = 3
1932};
1933
1934
1980class surface_t : public proxy_t
1981{
1982private:
1983 struct events_t : public detail::events_base_t
1984 {
1985 std::function<void(output_t)> enter;
1986 std::function<void(output_t)> leave;
1987 };
1988
1989 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
1990
1991 surface_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
1992
1993public:
1994 surface_t();
1995 explicit surface_t(const proxy_t &proxy);
1996 surface_t(wl_surface *p, wrapper_type t = wrapper_type::standard);
1997
1998 surface_t proxy_create_wrapper();
1999
2000 static const std::string interface_name;
2001
2002 operator wl_surface*() const;
2003
2057 void attach(buffer_t const& buffer, int32_t x, int32_t y);
2058
2061 static constexpr std::uint32_t attach_since_version = 1;
2062
2092 void damage(int32_t x, int32_t y, int32_t width, int32_t height);
2093
2096 static constexpr std::uint32_t damage_since_version = 1;
2097
2135 callback_t frame();
2136
2139 static constexpr std::uint32_t frame_since_version = 1;
2140
2170 void set_opaque_region(region_t const& region);
2171
2174 static constexpr std::uint32_t set_opaque_region_since_version = 1;
2175
2203 void set_input_region(region_t const& region);
2204
2207 static constexpr std::uint32_t set_input_region_since_version = 1;
2208
2230 void commit();
2231
2234 static constexpr std::uint32_t commit_since_version = 1;
2235
2270 void set_buffer_transform(output_transform const& transform);
2271
2274 static constexpr std::uint32_t set_buffer_transform_since_version = 2;
2275
2279 bool can_set_buffer_transform() const;
2280
2309 void set_buffer_scale(int32_t scale);
2310
2313 static constexpr std::uint32_t set_buffer_scale_since_version = 3;
2314
2318 bool can_set_buffer_scale() const;
2319
2360 void damage_buffer(int32_t x, int32_t y, int32_t width, int32_t height);
2361
2364 static constexpr std::uint32_t damage_buffer_since_version = 4;
2365
2369 bool can_damage_buffer() const;
2370
2381 std::function<void(output_t)> &on_enter();
2382
2397 std::function<void(output_t)> &on_leave();
2398
2399};
2400
2406enum class surface_error : uint32_t
2407 {
2409 invalid_scale = 0,
2411 invalid_transform = 1,
2413 invalid_size = 2
2414};
2415
2416
2425class seat_t : public proxy_t
2426{
2427private:
2428 struct events_t : public detail::events_base_t
2429 {
2430 std::function<void(seat_capability)> capabilities;
2431 std::function<void(std::string)> name;
2432 };
2433
2434 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
2435
2436 seat_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
2437
2438public:
2439 seat_t();
2440 explicit seat_t(const proxy_t &proxy);
2442
2443 seat_t proxy_create_wrapper();
2444
2445 static const std::string interface_name;
2446
2447 operator wl_seat*() const;
2448
2463
2466 static constexpr std::uint32_t get_pointer_since_version = 1;
2467
2482
2485 static constexpr std::uint32_t get_keyboard_since_version = 1;
2486
2501
2504 static constexpr std::uint32_t get_touch_since_version = 1;
2505
2512 void release();
2513
2516 static constexpr std::uint32_t release_since_version = 5;
2517
2521 bool can_release() const;
2522
2552 std::function<void(seat_capability)> &on_capabilities();
2553
2562 std::function<void(std::string)> &on_name();
2563
2564};
2565
2572struct seat_capability : public detail::bitfield<3, 12>
2573{
2574 seat_capability(const detail::bitfield<3, 12> &b)
2575 : detail::bitfield<3, 12>(b) {}
2576 seat_capability(const uint32_t value)
2577 : detail::bitfield<3, 12>(value) {}
2579 static const detail::bitfield<3, 12> pointer;
2581 static const detail::bitfield<3, 12> keyboard;
2583 static const detail::bitfield<3, 12> touch;
2584};
2585
2591enum class seat_error : uint32_t
2592 {
2594 missing_capability = 0
2595};
2596
2597
2610class pointer_t : public proxy_t
2611{
2612private:
2613 struct events_t : public detail::events_base_t
2614 {
2615 std::function<void(uint32_t, surface_t, double, double)> enter;
2616 std::function<void(uint32_t, surface_t)> leave;
2617 std::function<void(uint32_t, double, double)> motion;
2618 std::function<void(uint32_t, uint32_t, uint32_t, pointer_button_state)> button;
2619 std::function<void(uint32_t, pointer_axis, double)> axis;
2620 std::function<void()> frame;
2621 std::function<void(pointer_axis_source)> axis_source;
2622 std::function<void(uint32_t, pointer_axis)> axis_stop;
2623 std::function<void(pointer_axis, int32_t)> axis_discrete;
2624 };
2625
2626 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
2627
2628 pointer_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
2629
2630public:
2631 pointer_t();
2632 explicit pointer_t(const proxy_t &proxy);
2633 pointer_t(wl_pointer *p, wrapper_type t = wrapper_type::standard);
2634
2635 pointer_t proxy_create_wrapper();
2636
2637 static const std::string interface_name;
2638
2639 operator wl_pointer*() const;
2640
2684 void set_cursor(uint32_t serial, surface_t const& surface, int32_t hotspot_x, int32_t hotspot_y);
2685
2688 static constexpr std::uint32_t set_cursor_since_version = 1;
2689
2699 void release();
2700
2703 static constexpr std::uint32_t release_since_version = 3;
2704
2708 bool can_release() const;
2709
2724 std::function<void(uint32_t, surface_t, double, double)> &on_enter();
2725
2737 std::function<void(uint32_t, surface_t)> &on_leave();
2738
2749 std::function<void(uint32_t, double, double)> &on_motion();
2750
2773 std::function<void(uint32_t, uint32_t, uint32_t, pointer_button_state)> &on_button();
2774
2798 std::function<void(uint32_t, pointer_axis, double)> &on_axis();
2799
2838 std::function<void()> &on_frame();
2839
2870 std::function<void(pointer_axis_source)> &on_axis_source();
2871
2892 std::function<void(uint32_t, pointer_axis)> &on_axis_stop();
2893
2926 std::function<void(pointer_axis, int32_t)> &on_axis_discrete();
2927
2928};
2929
2933enum class pointer_error : uint32_t
2934 {
2936 role = 0
2937};
2938
2945enum class pointer_button_state : uint32_t
2946 {
2948 released = 0,
2950 pressed = 1
2951};
2952
2958enum class pointer_axis : uint32_t
2959 {
2961 vertical_scroll = 0,
2963 horizontal_scroll = 1
2964};
2965
2986enum class pointer_axis_source : uint32_t
2987 {
2989 wheel = 0,
2991 finger = 1,
2993 continuous = 2,
2995 wheel_tilt = 3
2996};
2997
2998
3005class keyboard_t : public proxy_t
3006{
3007private:
3008 struct events_t : public detail::events_base_t
3009 {
3010 std::function<void(keyboard_keymap_format, int, uint32_t)> keymap;
3011 std::function<void(uint32_t, surface_t, array_t)> enter;
3012 std::function<void(uint32_t, surface_t)> leave;
3013 std::function<void(uint32_t, uint32_t, uint32_t, keyboard_key_state)> key;
3014 std::function<void(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t)> modifiers;
3015 std::function<void(int32_t, int32_t)> repeat_info;
3016 };
3017
3018 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3019
3020 keyboard_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3021
3022public:
3023 keyboard_t();
3024 explicit keyboard_t(const proxy_t &proxy);
3025 keyboard_t(wl_keyboard *p, wrapper_type t = wrapper_type::standard);
3026
3027 keyboard_t proxy_create_wrapper();
3028
3029 static const std::string interface_name;
3030
3031 operator wl_keyboard*() const;
3032
3036 void release();
3037
3040 static constexpr std::uint32_t release_since_version = 3;
3041
3045 bool can_release() const;
3046
3059 std::function<void(keyboard_keymap_format, int, uint32_t)> &on_keymap();
3060
3073 std::function<void(uint32_t, surface_t, array_t)> &on_enter();
3074
3089 std::function<void(uint32_t, surface_t)> &on_leave();
3090
3108 std::function<void(uint32_t, uint32_t, uint32_t, keyboard_key_state)> &on_key();
3109
3121 std::function<void(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t)> &on_modifiers();
3122
3141 std::function<void(int32_t, int32_t)> &on_repeat_info();
3142
3143};
3144
3151enum class keyboard_keymap_format : uint32_t
3152 {
3154 no_keymap = 0,
3156 xkb_v1 = 1
3157};
3158
3164enum class keyboard_key_state : uint32_t
3165 {
3167 released = 0,
3169 pressed = 1
3170};
3171
3172
3185class touch_t : public proxy_t
3186{
3187private:
3188 struct events_t : public detail::events_base_t
3189 {
3190 std::function<void(uint32_t, uint32_t, surface_t, int32_t, double, double)> down;
3191 std::function<void(uint32_t, uint32_t, int32_t)> up;
3192 std::function<void(uint32_t, int32_t, double, double)> motion;
3193 std::function<void()> frame;
3194 std::function<void()> cancel;
3195 std::function<void(int32_t, double, double)> shape;
3196 std::function<void(int32_t, double)> orientation;
3197 };
3198
3199 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3200
3201 touch_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3202
3203public:
3204 touch_t();
3205 explicit touch_t(const proxy_t &proxy);
3207
3208 touch_t proxy_create_wrapper();
3209
3210 static const std::string interface_name;
3211
3212 operator wl_touch*() const;
3213
3217 void release();
3218
3221 static constexpr std::uint32_t release_since_version = 3;
3222
3226 bool can_release() const;
3227
3242 std::function<void(uint32_t, uint32_t, surface_t, int32_t, double, double)> &on_down();
3243
3254 std::function<void(uint32_t, uint32_t, int32_t)> &on_up();
3255
3265 std::function<void(uint32_t, int32_t, double, double)> &on_motion();
3266
3279 std::function<void()> &on_frame();
3280
3291 std::function<void()> &on_cancel();
3292
3325 std::function<void(int32_t, double, double)> &on_shape();
3326
3356 std::function<void(int32_t, double)> &on_orientation();
3357
3358};
3359
3360
3371class output_t : public proxy_t
3372{
3373private:
3374 struct events_t : public detail::events_base_t
3375 {
3376 std::function<void(int32_t, int32_t, int32_t, int32_t, output_subpixel, std::string, std::string, output_transform)> geometry;
3377 std::function<void(output_mode, int32_t, int32_t, int32_t)> mode;
3378 std::function<void()> done;
3379 std::function<void(int32_t)> scale;
3380 };
3381
3382 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3383
3384 output_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3385
3386public:
3387 output_t();
3388 explicit output_t(const proxy_t &proxy);
3389 output_t(wl_output *p, wrapper_type t = wrapper_type::standard);
3390
3391 output_t proxy_create_wrapper();
3392
3393 static const std::string interface_name;
3394
3395 operator wl_output*() const;
3396
3403 void release();
3404
3407 static constexpr std::uint32_t release_since_version = 3;
3408
3412 bool can_release() const;
3413
3439 std::function<void(int32_t, int32_t, int32_t, int32_t, output_subpixel, std::string, std::string, output_transform)> &on_geometry();
3440
3479 std::function<void(output_mode, int32_t, int32_t, int32_t)> &on_mode();
3480
3490 std::function<void()> &on_done();
3491
3515 std::function<void(int32_t)> &on_scale();
3516
3517};
3518
3525enum class output_subpixel : uint32_t
3526 {
3528 unknown = 0,
3530 none = 1,
3532 horizontal_rgb = 2,
3534 horizontal_bgr = 3,
3536 vertical_rgb = 4,
3538 vertical_bgr = 5
3539};
3540
3556struct output_transform : public detail::bitfield<3, 21>
3557{
3558 output_transform(const detail::bitfield<3, 21> &b)
3559 : detail::bitfield<3, 21>(b) {}
3560 output_transform(const uint32_t value)
3561 : detail::bitfield<3, 21>(value) {}
3563 static const detail::bitfield<3, 21> normal;
3565 static const detail::bitfield<3, 21> _90;
3567 static const detail::bitfield<3, 21> _180;
3569 static const detail::bitfield<3, 21> _270;
3571 static const detail::bitfield<3, 21> flipped;
3573 static const detail::bitfield<3, 21> flipped_90;
3575 static const detail::bitfield<3, 21> flipped_180;
3577 static const detail::bitfield<3, 21> flipped_270;
3578};
3579
3586struct output_mode : public detail::bitfield<2, 22>
3587{
3588 output_mode(const detail::bitfield<2, 22> &b)
3589 : detail::bitfield<2, 22>(b) {}
3590 output_mode(const uint32_t value)
3591 : detail::bitfield<2, 22>(value) {}
3593 static const detail::bitfield<2, 22> current;
3595 static const detail::bitfield<2, 22> preferred;
3596};
3597
3598
3607class region_t : public proxy_t
3608{
3609private:
3610 struct events_t : public detail::events_base_t
3611 {
3612 };
3613
3614 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3615
3616 region_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3617
3618public:
3619 region_t();
3620 explicit region_t(const proxy_t &proxy);
3621 region_t(wl_region *p, wrapper_type t = wrapper_type::standard);
3622
3623 region_t proxy_create_wrapper();
3624
3625 static const std::string interface_name;
3626
3627 operator wl_region*() const;
3628
3638 void add(int32_t x, int32_t y, int32_t width, int32_t height);
3639
3642 static constexpr std::uint32_t add_since_version = 1;
3643
3653 void subtract(int32_t x, int32_t y, int32_t width, int32_t height);
3654
3657 static constexpr std::uint32_t subtract_since_version = 1;
3658
3659};
3660
3661
3686{
3687private:
3688 struct events_t : public detail::events_base_t
3689 {
3690 };
3691
3692 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3693
3694 subcompositor_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3695
3696public:
3698 explicit subcompositor_t(const proxy_t &proxy);
3699 subcompositor_t(wl_subcompositor *p, wrapper_type t = wrapper_type::standard);
3700
3701 subcompositor_t proxy_create_wrapper();
3702
3703 static const std::string interface_name;
3704
3705 operator wl_subcompositor*() const;
3706
3729 subsurface_t get_subsurface(surface_t const& surface, surface_t const& parent);
3730
3733 static constexpr std::uint32_t get_subsurface_since_version = 1;
3734
3735};
3736
3740enum class subcompositor_error : uint32_t
3741 {
3743 bad_surface = 0
3744};
3745
3746
3800class subsurface_t : public proxy_t
3801{
3802private:
3803 struct events_t : public detail::events_base_t
3804 {
3805 };
3806
3807 static int dispatcher(uint32_t opcode, const std::vector<detail::any>& args, const std::shared_ptr<detail::events_base_t>& e);
3808
3809 subsurface_t(proxy_t const &wrapped_proxy, construct_proxy_wrapper_tag /*unused*/);
3810
3811public:
3812 subsurface_t();
3813 explicit subsurface_t(const proxy_t &proxy);
3814 subsurface_t(wl_subsurface *p, wrapper_type t = wrapper_type::standard);
3815
3816 subsurface_t proxy_create_wrapper();
3817
3818 static const std::string interface_name;
3819
3820 operator wl_subsurface*() const;
3821
3844 void set_position(int32_t x, int32_t y);
3845
3848 static constexpr std::uint32_t set_position_since_version = 1;
3849
3870 void place_above(surface_t const& sibling);
3871
3874 static constexpr std::uint32_t place_above_since_version = 1;
3875
3883 void place_below(surface_t const& sibling);
3884
3887 static constexpr std::uint32_t place_below_since_version = 1;
3888
3906 void set_sync();
3907
3910 static constexpr std::uint32_t set_sync_since_version = 1;
3911
3935 void set_desync();
3936
3939 static constexpr std::uint32_t set_desync_since_version = 1;
3940
3941};
3942
3946enum class subsurface_error : uint32_t
3947 {
3949 bad_surface = 0
3950};
3951
3952
3953
3954}
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
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()> & 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(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.
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 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 detail::bitfield< 3, 6 > ask
ask action
static const detail::bitfield< 3, 6 > none
no action
static const detail::bitfield< 3, 6 > move
move action
static const detail::bitfield< 3, 6 > copy
copy action
static const detail::bitfield< 2, 22 > current
indicates this is the current mode
static const detail::bitfield< 2, 22 > preferred
indicates this is the preferred mode
transform from framebuffer to output
static const detail::bitfield< 3, 21 > normal
no transform
static const detail::bitfield< 3, 21 > _270
270 degrees counter-clockwise
static const detail::bitfield< 3, 21 > flipped_180
flip and rotate 180 degrees counter-clockwise
static const detail::bitfield< 3, 21 > _180
180 degrees counter-clockwise
static const detail::bitfield< 3, 21 > flipped_90
flip and rotate 90 degrees counter-clockwise
static const detail::bitfield< 3, 21 > flipped_270
flip and rotate 270 degrees counter-clockwise
static const detail::bitfield< 3, 21 > flipped
180 degree flip around a vertical axis
static const detail::bitfield< 3, 21 > _90
90 degrees counter-clockwise
static const detail::bitfield< 3, 12 > touch
the seat has touch devices
static const detail::bitfield< 3, 12 > keyboard
the seat has one or more keyboards
static const detail::bitfield< 3, 12 > pointer
the seat has pointer devices
static const detail::bitfield< 4, 8 > bottom
bottom edge
static const detail::bitfield< 4, 8 > right
right edge
static const detail::bitfield< 4, 8 > bottom_right
bottom and right edges
static const detail::bitfield< 4, 8 > top
top edge
static const detail::bitfield< 4, 8 > none
no edge
static const detail::bitfield< 4, 8 > top_left
top and left edges
static const detail::bitfield< 4, 8 > top_right
top and right edges
static const detail::bitfield< 4, 8 > bottom_left
bottom and left edges
static const detail::bitfield< 4, 8 > left
left edge
static const detail::bitfield< 1, 9 > inactive
do not set keyboard focus