Summary: - libwayland client API has 18 functions. - Wayland has 15 interfaces with 57 client functions (wayland.xml). - usually uses the EGL platform abstraction (wayland-egl.h) and some driver specific (wayland-drm.xml); that adds 8 more client functions. - all *_g/set_user_data and *_add_listener exported functions were not counted in because they're just type safe wrappers for their corresponding proxy functions. - there are a bunch of Wayland high-level protocols also. - therefore the Wayland client API has approximately a total of 83 entry points. Only. libwayland: wl_display_connect wl_display_connect_to_fd wl_display_create_queue wl_display_disconnect wl_display_dispatch wl_display_dispatch_pending wl_display_dispatch_queue wl_display_flush wl_display_get_error wl_display_get_fd wl_display_roundtrip wl_event_queue_destroy wl_log_set_handler_client wl_proxy_create wl_proxy_destroy wl_proxy_get_id wl_proxy_marshal wl_proxy_set_queue core interfaces: wl_buffer_destroy wl_callback_destroy wl_compositor_create_region wl_compositor_create_surface wl_compositor_destroy wl_data_device_destroy wl_data_device_manager_create_data_source wl_data_device_manager_destroy wl_data_device_manager_get_data_device wl_data_device_set_selection wl_data_device_start_drag wl_data_offer_accept wl_data_offer_destroy wl_data_offer_receive wl_data_source_destroy wl_data_source_offer wl_display_get_registry wl_display_sync wl_keyboard_destroy wl_output_destroy wl_pointer_destroy wl_pointer_set_cursor wl_region_add wl_region_destroy wl_region_subtract wl_registry_bind wl_registry_destroy wl_seat_destroy wl_seat_get_keyboard wl_seat_get_pointer wl_seat_get_touch wl_shell_destroy wl_shell_get_shell_surface wl_shell_surface_destroy wl_shell_surface_move wl_shell_surface_pong wl_shell_surface_resize wl_shell_surface_set_class wl_shell_surface_set_fullscreen wl_shell_surface_set_maximized wl_shell_surface_set_popup wl_shell_surface_set_title wl_shell_surface_set_toplevel wl_shell_surface_set_transient wl_shm_create_pool wl_shm_destroy wl_shm_pool_create_buffer wl_shm_pool_destroy wl_shm_pool_resize wl_surface_attach wl_surface_commit wl_surface_damage wl_surface_destroy wl_surface_frame wl_surface_set_input_region wl_surface_set_opaque_region wl_touch_destroy platform abstraction and driver specific: wl_egl_window_create wl_egl_window_destroy wl_egl_window_get_attached_size wl_egl_window_resize wl_drm_authenticate wl_drm_create_buffer wl_drm_create_planar_buffer wl_drm_destroy information was extracted using something like: $ ctags -f- --c-kinds=+p *.h | grep -e "p$" -e "f$" | cut -f1 | grep -v -e "et_user_data" -e "_add_listener" | wc -l