10#include <wayland-server-protocol.hpp>
12struct wp_presentation;
13struct wp_presentation_feedback;
27enum class presentation_error : uint32_t;
28class presentation_feedback_t;
29struct presentation_feedback_kind;
31enum class viewporter_error : uint32_t;
33enum class viewport_error : uint32_t;
35enum class xdg_wm_base_error : uint32_t;
36class xdg_positioner_t;
37enum class xdg_positioner_error : uint32_t;
38enum class xdg_positioner_anchor : uint32_t;
39enum class xdg_positioner_gravity : uint32_t;
40struct xdg_positioner_constraint_adjustment;
42enum class xdg_surface_error : uint32_t;
44enum class xdg_toplevel_error : uint32_t;
45struct xdg_toplevel_resize_edge;
46enum class xdg_toplevel_state : uint32_t;
48enum class xdg_popup_error : uint32_t;
52 extern const wl_interface presentation_interface;
53 extern const wl_interface presentation_feedback_interface;
54 extern const wl_interface viewporter_interface;
55 extern const wl_interface viewport_interface;
56 extern const wl_interface xdg_wm_base_interface;
57 extern const wl_interface xdg_positioner_interface;
58 extern const wl_interface xdg_surface_interface;
59 extern const wl_interface xdg_toplevel_interface;
60 extern const wl_interface xdg_popup_interface;
82 struct events_t :
public resource_t::events_base_t
84 std::function<void()> destroy;
88 static int dispatcher(
int opcode,
const std::vector<wayland::detail::any>& args,
const std::shared_ptr<resource_t::events_base_t>& e);
91 static constexpr const wl_interface *
interface = &wayland::server::detail::presentation_interface;
92 static constexpr const unsigned int max_version = 1;
99 presentation_t(
const client_t& client, uint32_t
id,
int version = 1);
102 static const std::string interface_name;
104 operator wp_presentation*()
const;
165 void clock_id(uint32_t clk_id,
bool post =
true);
189enum class presentation_error : uint32_t
192 invalid_timestamp = 0,
216 struct events_t :
public resource_t::events_base_t
220 static int dispatcher(
int opcode,
const std::vector<wayland::detail::any>& args,
const std::shared_ptr<resource_t::events_base_t>& e);
223 static constexpr const wl_interface *
interface = &wayland::server::detail::presentation_feedback_interface;
224 static constexpr const unsigned int max_version = 1;
234 static const std::string interface_name;
236 operator wp_presentation_feedback*()
const;
309 void presented(uint32_t tv_sec_hi, uint32_t tv_sec_lo, uint32_t tv_nsec, uint32_t refresh, uint32_t seq_hi, uint32_t seq_lo,
presentation_feedback_kind const& flags,
bool post =
true);
341 : wayland::detail::bitfield<4, 1>(b) {}
343 : wayland::detail::bitfield<4, 1>(value) {}
344 static const wayland::detail::bitfield<4, 1> vsync;
345 static const wayland::detail::bitfield<4, 1> hw_clock;
346 static const wayland::detail::bitfield<4, 1> hw_completion;
347 static const wayland::detail::bitfield<4, 1> zero_copy;
364 struct events_t :
public resource_t::events_base_t
366 std::function<void()> destroy;
370 static int dispatcher(
int opcode,
const std::vector<wayland::detail::any>& args,
const std::shared_ptr<resource_t::events_base_t>& e);
373 static constexpr const wl_interface *
interface = &wayland::server::detail::viewporter_interface;
374 static constexpr const unsigned int max_version = 1;
381 viewporter_t(
const client_t& client, uint32_t
id,
int version = 1);
384 static const std::string interface_name;
386 operator wp_viewporter*()
const;
420enum class viewporter_error : uint32_t
495 struct events_t :
public resource_t::events_base_t
497 std::function<void()> destroy;
498 std::function<void(
double,
double,
double,
double)> set_source;
499 std::function<void(int32_t, int32_t)> set_destination;
502 static int dispatcher(
int opcode,
const std::vector<wayland::detail::any>& args,
const std::shared_ptr<resource_t::events_base_t>& e);
505 static constexpr const wl_interface *
interface = &wayland::server::detail::viewport_interface;
506 static constexpr const unsigned int max_version = 1;
513 viewport_t(
const client_t& client, uint32_t
id,
int version = 1);
516 static const std::string interface_name;
518 operator wp_viewport*()
const;
547 std::function<void(
double,
double,
double,
double)> &
on_set_source();
591enum class viewport_error : uint32_t
616 struct events_t :
public resource_t::events_base_t
618 std::function<void()> destroy;
621 std::function<void(uint32_t)> pong;
624 static int dispatcher(
int opcode,
const std::vector<wayland::detail::any>& args,
const std::shared_ptr<resource_t::events_base_t>& e);
627 static constexpr const wl_interface *
interface = &wayland::server::detail::xdg_wm_base_interface;
628 static constexpr const unsigned int max_version = 4;
635 xdg_wm_base_t(
const client_t& client, uint32_t
id,
int version = 4);
638 static const std::string interface_name;
640 operator xdg_wm_base*()
const;
691 std::function<void(uint32_t)> &
on_pong();
709 void ping(uint32_t serial,
bool post =
true);
746enum class xdg_wm_base_error : uint32_t
751 defunct_surfaces = 1,
753 not_the_topmost_popup = 2,
755 invalid_popup_parent = 3,
757 invalid_surface_state = 4,
759 invalid_positioner = 5
789 struct events_t :
public resource_t::events_base_t
791 std::function<void()> destroy;
792 std::function<void(int32_t, int32_t)> set_size;
793 std::function<void(int32_t, int32_t, int32_t, int32_t)> set_anchor_rect;
794 std::function<void(xdg_positioner_anchor)> set_anchor;
795 std::function<void(xdg_positioner_gravity)> set_gravity;
797 std::function<void(int32_t, int32_t)> set_offset;
798 std::function<void()> set_reactive;
799 std::function<void(int32_t, int32_t)> set_parent_size;
800 std::function<void(uint32_t)> set_parent_configure;
803 static int dispatcher(
int opcode,
const std::vector<wayland::detail::any>& args,
const std::shared_ptr<resource_t::events_base_t>& e);
806 static constexpr const wl_interface *
interface = &wayland::server::detail::xdg_positioner_interface;
807 static constexpr const unsigned int max_version = 4;
817 static const std::string interface_name;
819 operator xdg_positioner*()
const;
839 std::function<void(int32_t, int32_t)> &
on_set_size();
975enum class xdg_positioner_error : uint32_t
984enum class xdg_positioner_anchor : uint32_t
1000enum class xdg_positioner_gravity : uint32_t
1031 : wayland::detail::bitfield<6, 8>(b) {}
1033 : wayland::detail::bitfield<6, 8>(value) {}
1034 static const wayland::detail::bitfield<6, 8> none;
1035 static const wayland::detail::bitfield<6, 8> slide_x;
1036 static const wayland::detail::bitfield<6, 8> slide_y;
1037 static const wayland::detail::bitfield<6, 8> flip_x;
1038 static const wayland::detail::bitfield<6, 8> flip_y;
1039 static const wayland::detail::bitfield<6, 8> resize_x;
1040 static const wayland::detail::bitfield<6, 8> resize_y;
1096 struct events_t :
public resource_t::events_base_t
1098 std::function<void()> destroy;
1101 std::function<void(int32_t, int32_t, int32_t, int32_t)> set_window_geometry;
1102 std::function<void(uint32_t)> ack_configure;
1105 static int dispatcher(
int opcode,
const std::vector<wayland::detail::any>& args,
const std::shared_ptr<resource_t::events_base_t>& e);
1108 static constexpr const wl_interface *
interface = &wayland::server::detail::xdg_surface_interface;
1109 static constexpr const unsigned int max_version = 4;
1116 xdg_surface_t(
const client_t& client, uint32_t
id,
int version = 4);
1119 static const std::string interface_name;
1121 operator xdg_surface*()
const;
1246 void configure(uint32_t serial,
bool post =
true);
1271enum class xdg_surface_error : uint32_t
1273 not_constructed = 1,
1274 already_constructed = 2,
1275 unconfigured_buffer = 3
1303 struct events_t :
public resource_t::events_base_t
1305 std::function<void()> destroy;
1307 std::function<void(std::string)> set_title;
1308 std::function<void(std::string)> set_app_id;
1309 std::function<void(
seat_t, uint32_t, int32_t, int32_t)> show_window_menu;
1310 std::function<void(
seat_t, uint32_t)> move;
1312 std::function<void(int32_t, int32_t)> set_max_size;
1313 std::function<void(int32_t, int32_t)> set_min_size;
1314 std::function<void()> set_maximized;
1315 std::function<void()> unset_maximized;
1316 std::function<void(
output_t)> set_fullscreen;
1317 std::function<void()> unset_fullscreen;
1318 std::function<void()> set_minimized;
1321 static int dispatcher(
int opcode,
const std::vector<wayland::detail::any>& args,
const std::shared_ptr<resource_t::events_base_t>& e);
1324 static constexpr const wl_interface *
interface = &wayland::server::detail::xdg_toplevel_interface;
1325 static constexpr const unsigned int max_version = 4;
1332 xdg_toplevel_t(
const client_t& client, uint32_t
id,
int version = 4);
1335 static const std::string interface_name;
1337 operator xdg_toplevel*()
const;
1728 void configure(int32_t width, int32_t height, array_t
const& states,
bool post =
true);
1746 void close(
bool post =
true);
1795enum class xdg_toplevel_error : uint32_t
1798 invalid_resize_edge = 0
1810 : wayland::detail::bitfield<4, 11>(b) {}
1812 : wayland::detail::bitfield<4, 11>(value) {}
1813 static const wayland::detail::bitfield<4, 11> none;
1814 static const wayland::detail::bitfield<4, 11> top;
1815 static const wayland::detail::bitfield<4, 11> bottom;
1816 static const wayland::detail::bitfield<4, 11> left;
1817 static const wayland::detail::bitfield<4, 11> top_left;
1818 static const wayland::detail::bitfield<4, 11> bottom_left;
1819 static const wayland::detail::bitfield<4, 11> right;
1820 static const wayland::detail::bitfield<4, 11> top_right;
1821 static const wayland::detail::bitfield<4, 11> bottom_right;
1835enum class xdg_toplevel_state : uint32_t
1883 struct events_t :
public resource_t::events_base_t
1885 std::function<void()> destroy;
1886 std::function<void(
seat_t, uint32_t)> grab;
1890 static int dispatcher(
int opcode,
const std::vector<wayland::detail::any>& args,
const std::shared_ptr<resource_t::events_base_t>& e);
1893 static constexpr const wl_interface *
interface = &wayland::server::detail::xdg_popup_interface;
1894 static constexpr const unsigned int max_version = 4;
1901 xdg_popup_t(
const client_t& client, uint32_t
id,
int version = 4);
1904 static const std::string interface_name;
1906 operator xdg_popup*()
const;
2019 void configure(int32_t x, int32_t y, int32_t width, int32_t height,
bool post =
true);
2080enum class xdg_popup_error : uint32_t
presentation time feedback event
static constexpr std::uint32_t discarded_since_version
Minimum protocol version required for the discarded function.
void discarded(bool post=true)
the content update was not displayed
void presented(uint32_t tv_sec_hi, uint32_t tv_sec_lo, uint32_t tv_nsec, uint32_t refresh, uint32_t seq_hi, uint32_t seq_lo, presentation_feedback_kind const &flags, bool post=true)
the content update was displayed
static constexpr std::uint32_t presented_since_version
Minimum protocol version required for the presented function.
static constexpr std::uint32_t sync_output_since_version
Minimum protocol version required for the sync_output function.
void sync_output(output_t const &output, bool post=true)
presentation synchronized to this output
timed presentation related wl_surface requests
void post_invalid_timestamp(std::string const &msg)
Post error: invalid value in tv_nsec.
std::function< void(surface_t, presentation_feedback_t)> & on_feedback()
request presentation feedback information
std::function< void()> & on_destroy()
unbind from the presentation interface
void post_invalid_flag(std::string const &msg)
Post error: invalid flag.
static constexpr std::uint32_t clock_id_since_version
Minimum protocol version required for the clock_id function.
void clock_id(uint32_t clk_id, bool post=true)
clock ID for timestamps
crop and scale interface to a wl_surface
void post_bad_size(std::string const &msg)
Post error: destination size is not integer.
std::function< void(int32_t, int32_t)> & on_set_destination()
set the surface size for scaling
void post_no_surface(std::string const &msg)
Post error: the wl_surface was destroyed.
std::function< void()> & on_destroy()
remove scaling and cropping from the surface
void post_bad_value(std::string const &msg)
Post error: negative or zero values in width or height.
void post_out_of_buffer(std::string const &msg)
Post error: source rectangle extends outside of the content area.
std::function< void(double, double, double, double)> & on_set_source()
set the source rectangle for cropping
surface cropping and scaling
std::function< void(viewport_t, surface_t)> & on_get_viewport()
extend surface interface for crop and scale
std::function< void()> & on_destroy()
unbind from the cropping and scaling interface
void post_viewport_exists(std::string const &msg)
Post error: the surface already has a viewport object associated.
short-lived, popup surfaces for menus
std::function< void(seat_t, uint32_t)> & on_grab()
make the popup take an explicit grab
bool can_repositioned() const
Check whether the repositioned function is available with the currently bound version of the protocol...
void configure(int32_t x, int32_t y, int32_t width, int32_t height, bool post=true)
configure the popup surface
std::function< void(xdg_positioner_t, uint32_t)> & on_reposition()
recalculate the popup's location
void popup_done(bool post=true)
popup interaction is done
void post_invalid_grab(std::string const &msg)
Post error: tried to grab after being mapped.
void repositioned(uint32_t token, bool post=true)
signal the completion of a repositioned request
static constexpr std::uint32_t configure_since_version
Minimum protocol version required for the configure function.
static constexpr std::uint32_t repositioned_since_version
Minimum protocol version required for the repositioned function.
std::function< void()> & on_destroy()
remove xdg_popup interface
static constexpr std::uint32_t popup_done_since_version
Minimum protocol version required for the popup_done function.
std::function< void(xdg_positioner_gravity)> & on_set_gravity()
set child surface gravity
void post_invalid_input(std::string const &msg)
Post error: invalid input provided.
std::function< void(int32_t, int32_t)> & on_set_size()
set the size of the to-be positioned rectangle
std::function< void(xdg_positioner_anchor)> & on_set_anchor()
set anchor rectangle anchor
std::function< void()> & on_destroy()
destroy the xdg_positioner object
std::function< void(xdg_positioner_constraint_adjustment)> & on_set_constraint_adjustment()
set the adjustment to be done when constrained
std::function< void(int32_t, int32_t)> & on_set_offset()
set surface position offset
std::function< void(int32_t, int32_t)> & on_set_parent_size()
std::function< void()> & on_set_reactive()
continuously reconstrain the surface
std::function< void(uint32_t)> & on_set_parent_configure()
set parent configure this is a response to
std::function< void(int32_t, int32_t, int32_t, int32_t)> & on_set_anchor_rect()
set the anchor rectangle within the parent surface
desktop user interface surface base interface
std::function< void()> & on_destroy()
destroy the xdg_surface
void post_not_constructed(std::string const &msg)
Post error:
void post_already_constructed(std::string const &msg)
Post error:
std::function< void(xdg_toplevel_t)> & on_get_toplevel()
assign the xdg_toplevel surface role
void post_unconfigured_buffer(std::string const &msg)
Post error:
void configure(uint32_t serial, bool post=true)
suggest a surface change
std::function< void(int32_t, int32_t, int32_t, int32_t)> & on_set_window_geometry()
set the new window geometry
std::function< void(uint32_t)> & on_ack_configure()
ack a configure event
static constexpr std::uint32_t configure_since_version
Minimum protocol version required for the configure function.
std::function< void(xdg_popup_t, xdg_surface_t, xdg_positioner_t)> & on_get_popup()
assign the xdg_popup surface role
std::function< void(int32_t, int32_t)> & on_set_min_size()
set the minimum size
std::function< void(seat_t, uint32_t, int32_t, int32_t)> & on_show_window_menu()
show the window menu
std::function< void()> & on_unset_maximized()
unmaximize the window
static constexpr std::uint32_t configure_bounds_since_version
Minimum protocol version required for the configure_bounds function.
static constexpr std::uint32_t close_since_version
Minimum protocol version required for the close function.
std::function< void()> & on_unset_fullscreen()
unset the window as fullscreen
bool can_configure_bounds() const
Check whether the configure_bounds function is available with the currently bound version of the prot...
std::function< void(xdg_toplevel_t)> & on_set_parent()
set the parent of this surface
std::function< void(std::string)> & on_set_app_id()
set application ID
static constexpr std::uint32_t configure_since_version
Minimum protocol version required for the configure function.
std::function< void(int32_t, int32_t)> & on_set_max_size()
set the maximum size
void close(bool post=true)
surface wants to be closed
void post_invalid_resize_edge(std::string const &msg)
Post error: provided value is not a valid variant of the resize_edge enum.
std::function< void(std::string)> & on_set_title()
set surface title
std::function< void(seat_t, uint32_t)> & on_move()
start an interactive move
std::function< void()> & on_set_maximized()
maximize the window
std::function< void(seat_t, uint32_t, xdg_toplevel_resize_edge)> & on_resize()
start an interactive resize
std::function< void(output_t)> & on_set_fullscreen()
set the window as fullscreen on an output
std::function< void()> & on_set_minimized()
set the window as minimized
void configure_bounds(int32_t width, int32_t height, bool post=true)
recommended window geometry bounds
void configure(int32_t width, int32_t height, array_t const &states, bool post=true)
suggest a surface change
std::function< void()> & on_destroy()
destroy the xdg_toplevel
create desktop-style surfaces
std::function< void()> & on_destroy()
destroy xdg_wm_base
std::function< void(uint32_t)> & on_pong()
respond to a ping event
void post_invalid_surface_state(std::string const &msg)
Post error: the client provided an invalid surface state.
void post_invalid_popup_parent(std::string const &msg)
Post error: the client specified an invalid popup parent surface.
void post_role(std::string const &msg)
Post error: given wl_surface has another role.
void post_defunct_surfaces(std::string const &msg)
Post error: xdg_wm_base was destroyed before children.
void ping(uint32_t serial, bool post=true)
check if the client is alive
std::function< void(xdg_positioner_t)> & on_create_positioner()
create a positioner object
void post_invalid_positioner(std::string const &msg)
Post error: the client provided an invalid positioner.
std::function< void(xdg_surface_t, surface_t)> & on_get_xdg_surface()
create a shell surface from a surface
void post_not_the_topmost_popup(std::string const &msg)
Post error: the client tried to map or destroy a non-topmost popup.
static constexpr std::uint32_t ping_since_version
Minimum protocol version required for the ping function.
bitmask of flags in presented event