11#include <wayland-server-protocol.hpp>
13struct wp_presentation;
14struct wp_presentation_feedback;
28enum class presentation_error : uint32_t;
29class presentation_feedback_t;
30struct presentation_feedback_kind;
32enum class viewporter_error : uint32_t;
34enum class viewport_error : uint32_t;
36enum class xdg_wm_base_error : uint32_t;
37class xdg_positioner_t;
38enum class xdg_positioner_error : uint32_t;
39enum class xdg_positioner_anchor : uint32_t;
40enum class xdg_positioner_gravity : uint32_t;
41struct xdg_positioner_constraint_adjustment;
43enum class xdg_surface_error : uint32_t;
45enum class xdg_toplevel_error : uint32_t;
46struct xdg_toplevel_resize_edge;
47enum class xdg_toplevel_state : uint32_t;
49enum class xdg_popup_error : uint32_t;
53 extern const wl_interface presentation_interface;
54 extern const wl_interface presentation_feedback_interface;
55 extern const wl_interface viewporter_interface;
56 extern const wl_interface viewport_interface;
57 extern const wl_interface xdg_wm_base_interface;
58 extern const wl_interface xdg_positioner_interface;
59 extern const wl_interface xdg_surface_interface;
60 extern const wl_interface xdg_toplevel_interface;
61 extern const wl_interface xdg_popup_interface;
83 struct events_t :
public resource_t::events_base_t
85 std::function<void()> destroy;
89 static int dispatcher(
int opcode,
const std::vector<wayland::detail::any>& args,
const std::shared_ptr<resource_t::events_base_t>& e);
92 static constexpr const wl_interface *
interface = &wayland::server::detail::presentation_interface;
93 static constexpr const unsigned int max_version = 1;
100 presentation_t(
const client_t& client, uint32_t
id,
int version = 1);
103 static const std::string interface_name;
105 operator wp_presentation*()
const;
166 void clock_id(uint32_t clk_id,
bool post =
true);
190enum class presentation_error : uint32_t
193 invalid_timestamp = 0,
217 struct events_t :
public resource_t::events_base_t
221 static int dispatcher(
int opcode,
const std::vector<wayland::detail::any>& args,
const std::shared_ptr<resource_t::events_base_t>& e);
224 static constexpr const wl_interface *
interface = &wayland::server::detail::presentation_feedback_interface;
225 static constexpr const unsigned int max_version = 1;
235 static const std::string interface_name;
237 operator wp_presentation_feedback*()
const;
310 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);
342 : wayland::detail::bitfield<4, 1>(b) {}
344 : wayland::detail::bitfield<4, 1>(value) {}
345 static const wayland::detail::bitfield<4, 1> vsync;
346 static const wayland::detail::bitfield<4, 1> hw_clock;
347 static const wayland::detail::bitfield<4, 1> hw_completion;
348 static const wayland::detail::bitfield<4, 1> zero_copy;
365 struct events_t :
public resource_t::events_base_t
367 std::function<void()> destroy;
371 static int dispatcher(
int opcode,
const std::vector<wayland::detail::any>& args,
const std::shared_ptr<resource_t::events_base_t>& e);
374 static constexpr const wl_interface *
interface = &wayland::server::detail::viewporter_interface;
375 static constexpr const unsigned int max_version = 1;
382 viewporter_t(
const client_t& client, uint32_t
id,
int version = 1);
385 static const std::string interface_name;
387 operator wp_viewporter*()
const;
421enum class viewporter_error : uint32_t
496 struct events_t :
public resource_t::events_base_t
498 std::function<void()> destroy;
499 std::function<void(
double,
double,
double,
double)> set_source;
500 std::function<void(int32_t, int32_t)> set_destination;
503 static int dispatcher(
int opcode,
const std::vector<wayland::detail::any>& args,
const std::shared_ptr<resource_t::events_base_t>& e);
506 static constexpr const wl_interface *
interface = &wayland::server::detail::viewport_interface;
507 static constexpr const unsigned int max_version = 1;
514 viewport_t(
const client_t& client, uint32_t
id,
int version = 1);
517 static const std::string interface_name;
519 operator wp_viewport*()
const;
548 std::function<void(
double,
double,
double,
double)> &
on_set_source();
592enum class viewport_error : uint32_t
617 struct events_t :
public resource_t::events_base_t
619 std::function<void()> destroy;
622 std::function<void(uint32_t)> pong;
625 static int dispatcher(
int opcode,
const std::vector<wayland::detail::any>& args,
const std::shared_ptr<resource_t::events_base_t>& e);
628 static constexpr const wl_interface *
interface = &wayland::server::detail::xdg_wm_base_interface;
629 static constexpr const unsigned int max_version = 4;
636 xdg_wm_base_t(
const client_t& client, uint32_t
id,
int version = 4);
639 static const std::string interface_name;
641 operator xdg_wm_base*()
const;
692 std::function<void(uint32_t)> &
on_pong();
710 void ping(uint32_t serial,
bool post =
true);
747enum class xdg_wm_base_error : uint32_t
752 defunct_surfaces = 1,
754 not_the_topmost_popup = 2,
756 invalid_popup_parent = 3,
758 invalid_surface_state = 4,
760 invalid_positioner = 5
790 struct events_t :
public resource_t::events_base_t
792 std::function<void()> destroy;
793 std::function<void(int32_t, int32_t)> set_size;
794 std::function<void(int32_t, int32_t, int32_t, int32_t)> set_anchor_rect;
795 std::function<void(xdg_positioner_anchor)> set_anchor;
796 std::function<void(xdg_positioner_gravity)> set_gravity;
798 std::function<void(int32_t, int32_t)> set_offset;
799 std::function<void()> set_reactive;
800 std::function<void(int32_t, int32_t)> set_parent_size;
801 std::function<void(uint32_t)> set_parent_configure;
804 static int dispatcher(
int opcode,
const std::vector<wayland::detail::any>& args,
const std::shared_ptr<resource_t::events_base_t>& e);
807 static constexpr const wl_interface *
interface = &wayland::server::detail::xdg_positioner_interface;
808 static constexpr const unsigned int max_version = 4;
818 static const std::string interface_name;
820 operator xdg_positioner*()
const;
840 std::function<void(int32_t, int32_t)> &
on_set_size();
976enum class xdg_positioner_error : uint32_t
985enum class xdg_positioner_anchor : uint32_t
1001enum class xdg_positioner_gravity : uint32_t
1032 : wayland::detail::bitfield<6, 8>(b) {}
1034 : wayland::detail::bitfield<6, 8>(value) {}
1035 static const wayland::detail::bitfield<6, 8> none;
1036 static const wayland::detail::bitfield<6, 8> slide_x;
1037 static const wayland::detail::bitfield<6, 8> slide_y;
1038 static const wayland::detail::bitfield<6, 8> flip_x;
1039 static const wayland::detail::bitfield<6, 8> flip_y;
1040 static const wayland::detail::bitfield<6, 8> resize_x;
1041 static const wayland::detail::bitfield<6, 8> resize_y;
1097 struct events_t :
public resource_t::events_base_t
1099 std::function<void()> destroy;
1102 std::function<void(int32_t, int32_t, int32_t, int32_t)> set_window_geometry;
1103 std::function<void(uint32_t)> ack_configure;
1106 static int dispatcher(
int opcode,
const std::vector<wayland::detail::any>& args,
const std::shared_ptr<resource_t::events_base_t>& e);
1109 static constexpr const wl_interface *
interface = &wayland::server::detail::xdg_surface_interface;
1110 static constexpr const unsigned int max_version = 4;
1117 xdg_surface_t(
const client_t& client, uint32_t
id,
int version = 4);
1120 static const std::string interface_name;
1122 operator xdg_surface*()
const;
1247 void configure(uint32_t serial,
bool post =
true);
1272enum class xdg_surface_error : uint32_t
1274 not_constructed = 1,
1275 already_constructed = 2,
1276 unconfigured_buffer = 3
1304 struct events_t :
public resource_t::events_base_t
1306 std::function<void()> destroy;
1308 std::function<void(std::string)> set_title;
1309 std::function<void(std::string)> set_app_id;
1310 std::function<void(
seat_t, uint32_t, int32_t, int32_t)> show_window_menu;
1311 std::function<void(
seat_t, uint32_t)> move;
1313 std::function<void(int32_t, int32_t)> set_max_size;
1314 std::function<void(int32_t, int32_t)> set_min_size;
1315 std::function<void()> set_maximized;
1316 std::function<void()> unset_maximized;
1317 std::function<void(
output_t)> set_fullscreen;
1318 std::function<void()> unset_fullscreen;
1319 std::function<void()> set_minimized;
1322 static int dispatcher(
int opcode,
const std::vector<wayland::detail::any>& args,
const std::shared_ptr<resource_t::events_base_t>& e);
1325 static constexpr const wl_interface *
interface = &wayland::server::detail::xdg_toplevel_interface;
1326 static constexpr const unsigned int max_version = 4;
1333 xdg_toplevel_t(
const client_t& client, uint32_t
id,
int version = 4);
1336 static const std::string interface_name;
1338 operator xdg_toplevel*()
const;
1729 void configure(int32_t width, int32_t height, array_t
const& states,
bool post =
true);
1747 void close(
bool post =
true);
1796enum class xdg_toplevel_error : uint32_t
1799 invalid_resize_edge = 0
1811 : wayland::detail::bitfield<4, 11>(b) {}
1813 : wayland::detail::bitfield<4, 11>(value) {}
1814 static const wayland::detail::bitfield<4, 11> none;
1815 static const wayland::detail::bitfield<4, 11> top;
1816 static const wayland::detail::bitfield<4, 11> bottom;
1817 static const wayland::detail::bitfield<4, 11> left;
1818 static const wayland::detail::bitfield<4, 11> top_left;
1819 static const wayland::detail::bitfield<4, 11> bottom_left;
1820 static const wayland::detail::bitfield<4, 11> right;
1821 static const wayland::detail::bitfield<4, 11> top_right;
1822 static const wayland::detail::bitfield<4, 11> bottom_right;
1836enum class xdg_toplevel_state : uint32_t
1884 struct events_t :
public resource_t::events_base_t
1886 std::function<void()> destroy;
1887 std::function<void(
seat_t, uint32_t)> grab;
1891 static int dispatcher(
int opcode,
const std::vector<wayland::detail::any>& args,
const std::shared_ptr<resource_t::events_base_t>& e);
1894 static constexpr const wl_interface *
interface = &wayland::server::detail::xdg_popup_interface;
1895 static constexpr const unsigned int max_version = 4;
1902 xdg_popup_t(
const client_t& client, uint32_t
id,
int version = 4);
1905 static const std::string interface_name;
1907 operator xdg_popup*()
const;
2020 void configure(int32_t x, int32_t y, int32_t width, int32_t height,
bool post =
true);
2081enum 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