From 557bb4ae056499ec8f055f6560b79f06747f0965 Mon Sep 17 00:00:00 2001 From: Keith Bowes Date: Fri, 16 May 2025 16:15:51 -0400 Subject: [PATCH] Removed support for wlroots 0.17, added support for wlroots 0.20-dev --- include/waybox/output.h | 4 ---- include/waybox/server.h | 8 -------- include/waybox/xdg_shell.h | 2 -- meson.build | 4 ++-- waybox/cursor.c | 10 +--------- waybox/decoration.c | 4 ---- waybox/output.c | 12 ------------ waybox/server.c | 22 ++++++++-------------- waybox/xdg_shell.c | 38 -------------------------------------- 9 files changed, 11 insertions(+), 93 deletions(-) diff --git a/include/waybox/output.h b/include/waybox/output.h index 6b49b68..b69e516 100644 --- a/include/waybox/output.h +++ b/include/waybox/output.h @@ -18,10 +18,6 @@ struct wb_output { struct wlr_scene_tree *shell_top; } layers; -#if ! WLR_CHECK_VERSION(0, 18, 0) - /* DEPRECATED: Use a tool like swaybg or hyprpaper instead */ - struct wlr_scene_rect *background; -#endif bool gamma_lut_changed; struct wlr_box geometry; diff --git a/include/waybox/server.h b/include/waybox/server.h index 68db7f2..534ac20 100644 --- a/include/waybox/server.h +++ b/include/waybox/server.h @@ -12,9 +12,7 @@ #include #include #include -#if WLR_CHECK_VERSION(0, 18, 0) #include -#endif #include #include #include @@ -71,9 +69,7 @@ struct wb_server { struct wlr_box grab_geo_box; double grab_x, grab_y; uint32_t resize_edges; -#if WLR_CHECK_VERSION(0, 18, 0) struct wlr_ext_foreign_toplevel_list_v1 *foreign_toplevel_list; -#endif struct wl_list toplevels; struct wlr_layer_shell_v1 *layer_shell; @@ -82,12 +78,8 @@ struct wb_server { struct wl_listener gamma_control_set_gamma; struct wl_listener new_layer_surface; struct wl_listener new_xdg_decoration; -#if WLR_CHECK_VERSION(0, 18, 0) struct wl_listener new_xdg_popup; struct wl_listener new_xdg_toplevel; -#else - struct wl_listener new_xdg_surface; -#endif struct wl_listener destroy_inhibit_manager; struct wl_listener destroy_inhibitor; diff --git a/include/waybox/xdg_shell.h b/include/waybox/xdg_shell.h index ba9d427..6c3757b 100644 --- a/include/waybox/xdg_shell.h +++ b/include/waybox/xdg_shell.h @@ -18,10 +18,8 @@ struct wb_toplevel { struct wlr_xdg_toplevel_decoration_v1 *decoration; -#if WLR_CHECK_VERSION(0, 18, 0) struct wlr_ext_foreign_toplevel_handle_v1 *foreign_toplevel_handle; struct wlr_ext_foreign_toplevel_handle_v1_state foreign_toplevel_state; -#endif struct wl_listener map; struct wl_listener unmap; diff --git a/meson.build b/meson.build index 3be9b0b..3626ba9 100644 --- a/meson.build +++ b/meson.build @@ -29,13 +29,13 @@ inc_dir = include_directories('include') if get_option('wlroots-version') != '' wlroots_version = get_option('wlroots-version') else - wlroots_version = ['wlroots-0.19', 'wlroots-0.18', 'wlroots'] + wlroots_version = ['wlroots-0.20', 'wlroots-0.19', 'wlroots-0.18'] endif libevdev = dependency('libevdev') libinput = dependency('libinput', version: '>=1.21.0', required: false) libxml2 = dependency('libxml-2.0') -wayland_protos = dependency('wayland-protocols', version: '>=1.27') +wayland_protos = dependency('wayland-protocols', version: '>=1.37') wayland_server = dependency('wayland-server', version: '>=1.15') wlroots = dependency(wlroots_version, version: '>=0.17.0') xkbcommon = dependency('xkbcommon') diff --git a/waybox/cursor.c b/waybox/cursor.c index 21825a9..d4d5e75 100644 --- a/waybox/cursor.c +++ b/waybox/cursor.c @@ -140,11 +140,7 @@ static void handle_cursor_button(struct wl_listener *listener, void *data) { struct wlr_surface *surface = NULL; struct wb_toplevel *toplevel = get_toplevel_at(cursor->server, cursor->server->cursor->cursor->x, cursor->server->cursor->cursor->y, &surface, &sx, &sy); -#if WLR_CHECK_VERSION(0, 18, 0) if (event->state == WL_POINTER_BUTTON_STATE_RELEASED) { -#else - if (event->state == WLR_BUTTON_RELEASED) { -#endif /* If you released any buttons, we exit interactive move/resize mode. */ reset_cursor_mode(cursor->server); } else { @@ -164,11 +160,7 @@ static void handle_cursor_axis(struct wl_listener *listener, void *data) { /* Notify the client with pointer focus of the axis event. */ wlr_seat_pointer_notify_axis(cursor->server->seat->seat, event->time_msec, event->orientation, event->delta, - event->delta_discrete, event->source -#if WLR_CHECK_VERSION(0, 18, 0) - , event->relative_direction -#endif - ); + event->delta_discrete, event->source, event->relative_direction); } static void handle_cursor_frame(struct wl_listener *listener, void *data) { diff --git a/waybox/decoration.c b/waybox/decoration.c index 89fd310..706dd8a 100644 --- a/waybox/decoration.c +++ b/waybox/decoration.c @@ -32,10 +32,6 @@ static void handle_new_xdg_toplevel_decoration(struct wl_listener *listener, voi wl_signal_add(&toplevel_decoration->events.request_mode, &decoration->request_mode); decoration->mode_destroy.notify = free_xdg_decoration_mode; wl_signal_add(&toplevel_decoration->events.destroy, &decoration->mode_destroy); -#if !WLR_CHECK_VERSION (0, 18, 0) - /* In older versions, this had to be explicitly called for some window decorations to work. */ - handle_xdg_decoration_mode(&decoration->request_mode, toplevel_decoration); -#endif } void init_xdg_decoration(struct wb_server *server) { diff --git a/waybox/output.c b/waybox/output.c index 11e6826..dbffc51 100644 --- a/waybox/output.c +++ b/waybox/output.c @@ -10,11 +10,6 @@ void output_frame_notify(struct wl_listener *listener, void *data) { wlr_output_layout_get_box(output->server->output_layout, output->wlr_output, &output->geometry); -#if ! WLR_CHECK_VERSION(0, 18, 0) - /* Update the background for the current output size. */ - wlr_scene_rect_set_size(output->background, - output->geometry.width, output->geometry.height); -#endif if (output->gamma_lut_changed) { output->gamma_lut_changed = false; @@ -123,13 +118,6 @@ void new_output_notify(struct wl_listener *listener, void *data) { output->wlr_output = wlr_output; wlr_output->data = output; -#if ! WLR_CHECK_VERSION(0, 18, 0) - /* Set the background color */ - float color[4] = {0.1875, 0.1875, 0.1875, 1.0}; - output->background = wlr_scene_rect_create(&server->scene->tree, 0, 0, color); - wlr_scene_node_lower_to_bottom(&output->background->node); -#endif - /* Initializes the layers */ size_t num_layers = sizeof(output->layers) / sizeof(struct wlr_scene_node *); for (size_t i = 0; i < num_layers; i++) { diff --git a/waybox/server.c b/waybox/server.c index c9e7ce0..ece36c4 100644 --- a/waybox/server.c +++ b/waybox/server.c @@ -5,6 +5,9 @@ #include "idle.h" #include "waybox/server.h" #include "waybox/xdg_shell.h" +#if WLR_CHECK_VERSION(0, 19, 0) +# include +#endif bool wb_create_backend(struct wb_server* server) { /* The Wayland display is managed by libwayland. It handles accepting @@ -25,11 +28,7 @@ bool wb_create_backend(struct wb_server* server) { * output hardware. The autocreate option will choose the most suitable * backend based on the current environment, such as opening an X11 window * if an X11 server is running. */ -#if WLR_CHECK_VERSION(0, 18, 0) server->backend = wlr_backend_autocreate(server->wl_event_loop, &server->session); -#else - server->backend = wlr_backend_autocreate(server->wl_display, &server->session); -#endif if (server->backend == NULL) { wlr_log(WLR_ERROR, "%s", _("Failed to create backend")); return false; @@ -60,11 +59,7 @@ bool wb_create_backend(struct wb_server* server) { server->compositor = wlr_compositor_create(server->wl_display, 5, server->renderer); server->subcompositor = wlr_subcompositor_create(server->wl_display); -#if WLR_CHECK_VERSION(0, 18, 0) server->output_layout = wlr_output_layout_create(server->wl_display); -#else - server->output_layout = wlr_output_layout_create(); -#endif server->seat = wb_seat_create(server); server->cursor = wb_cursor_create(server); @@ -107,10 +102,8 @@ bool wb_start_server(struct wb_server* server) { wlr_data_control_manager_v1_create(server->wl_display); wlr_data_device_manager_create(server->wl_display); -#if WLR_CHECK_VERSION(0, 18, 0) server->foreign_toplevel_list = wlr_ext_foreign_toplevel_list_v1_create(server->wl_display, 1); -#endif server->gamma_control_manager = wlr_gamma_control_manager_v1_create(server->wl_display); @@ -132,6 +125,11 @@ bool wb_start_server(struct wb_server* server) { wlr_fractional_scale_manager_v1_create(server->wl_display, 1); wlr_viewporter_create(server->wl_display); +#if WLR_CHECK_VERSION(0, 19, 0) + struct wlr_xdg_toplevel_icon_manager_v1 * icon_manager = wlr_xdg_toplevel_icon_manager_v1_create(server->wl_display, 1); + int sizes[] = {16, 24, 32, 48, 64}; + wlr_xdg_toplevel_icon_manager_v1_set_sizes(icon_manager, (int *) sizes, 5); +#endif return true; } @@ -155,12 +153,8 @@ bool wb_terminate(struct wb_server* server) { wl_list_remove(&server->gamma_control_set_gamma.link); wl_list_remove(&server->new_layer_surface.link); -#if WLR_CHECK_VERSION(0, 18, 0) wl_list_remove(&server->new_xdg_toplevel.link); wl_list_remove(&server->new_xdg_popup.link); -#else - wl_list_remove(&server->new_xdg_surface.link); -#endif wlr_backend_destroy(server->backend); wb_seat_destroy(server->seat); diff --git a/waybox/xdg_shell.c b/waybox/xdg_shell.c index d865298..97bf259 100644 --- a/waybox/xdg_shell.c +++ b/waybox/xdg_shell.c @@ -185,9 +185,7 @@ static void xdg_toplevel_destroy(struct wl_listener *listener, void *data) { struct wlr_xdg_surface *base = toplevel->xdg_toplevel->base; wlr_surface_send_leave(base->surface, output); update_fractional_scale(base->surface); -#if WLR_CHECK_VERSION(0, 18, 0) wlr_ext_foreign_toplevel_handle_v1_destroy(toplevel->foreign_toplevel_handle); -#endif wl_list_remove(&toplevel->map.link); wl_list_remove(&toplevel->unmap.link); @@ -211,22 +209,18 @@ static void xdg_toplevel_set_app_id( struct wl_listener *listener, void *data) { struct wb_toplevel *toplevel = wl_container_of(listener, toplevel, set_app_id); -#if WLR_CHECK_VERSION(0, 18, 0) toplevel->foreign_toplevel_state.app_id = toplevel->xdg_toplevel->app_id; wlr_ext_foreign_toplevel_handle_v1_update_state( toplevel->foreign_toplevel_handle, &toplevel->foreign_toplevel_state); -#endif } static void xdg_toplevel_set_title( struct wl_listener *listener, void *data) { struct wb_toplevel *toplevel = wl_container_of(listener, toplevel, set_title); -#if WLR_CHECK_VERSION(0, 18, 0) toplevel->foreign_toplevel_state.title = toplevel->xdg_toplevel->title; wlr_ext_foreign_toplevel_handle_v1_update_state( toplevel->foreign_toplevel_handle, &toplevel->foreign_toplevel_state); -#endif } static void xdg_toplevel_request_fullscreen( @@ -428,20 +422,12 @@ static void handle_new_xdg_popup(struct wl_listener *listener, void *data) { wl_signal_add(&xdg_popup->base->surface->events.commit, &popup->commit); popup->destroy.notify = xdg_popup_destroy; -#if WLR_CHECK_VERSION (0, 18, 0) wl_signal_add(&xdg_popup->events.destroy, &popup->destroy); -#else - wl_signal_add(&xdg_popup->base->events.destroy, &popup->destroy); -#endif } static void handle_new_xdg_toplevel(struct wl_listener *listener, void *data) { struct wb_server *server = -#if WLR_CHECK_VERSION (0, 18,0) wl_container_of(listener, server, new_xdg_toplevel); -#else - wl_container_of(listener, server, new_xdg_surface); -#endif struct wlr_xdg_toplevel *xdg_toplevel = data; /* Allocate a wb_toplevel for this toplevel */ @@ -450,10 +436,8 @@ static void handle_new_xdg_toplevel(struct wl_listener *listener, void *data) { toplevel->server = server; toplevel->xdg_toplevel = xdg_toplevel; -#if WLR_CHECK_VERSION(0, 18, 0) toplevel->foreign_toplevel_handle = wlr_ext_foreign_toplevel_handle_v1_create( server->foreign_toplevel_list, &toplevel->foreign_toplevel_state); -#endif /* Listen to the various events it can emit */ toplevel->map.notify = xdg_toplevel_map; @@ -463,11 +447,7 @@ static void handle_new_xdg_toplevel(struct wl_listener *listener, void *data) { toplevel->commit.notify = xdg_toplevel_commit; wl_signal_add(&xdg_toplevel->base->surface->events.commit, &toplevel->commit); toplevel->destroy.notify = xdg_toplevel_destroy; -#if WLR_CHECK_VERSION (0, 18, 0) wl_signal_add(&xdg_toplevel->events.destroy, &toplevel->destroy); -#else - wl_signal_add(&xdg_toplevel->base->events.destroy, &toplevel->destroy); -#endif toplevel->new_popup.notify = handle_new_popup; wl_signal_add(&xdg_toplevel->base->events.new_popup, &toplevel->new_popup); @@ -494,29 +474,11 @@ static void handle_new_xdg_toplevel(struct wl_listener *listener, void *data) { wl_list_insert(&toplevel->server->toplevels, &toplevel->link); } -#if !WLR_CHECK_VERSION(0, 18, 0) -static void handle_new_xdg_surface(struct wl_listener *listener, void *data) { - struct wlr_xdg_surface *xdg_surface = data; - - if (xdg_surface->role == WLR_XDG_SURFACE_ROLE_POPUP) { - handle_new_xdg_popup(listener, xdg_surface->popup); - } - if (xdg_surface->role == WLR_XDG_SURFACE_ROLE_TOPLEVEL) { - handle_new_xdg_toplevel(listener, xdg_surface->toplevel); - } -} -#endif - void init_xdg_shell(struct wb_server *server) { /* xdg-shell version 3 */ server->xdg_shell = wlr_xdg_shell_create(server->wl_display, 3); -#if WLR_CHECK_VERSION (0, 18, 0) server->new_xdg_popup.notify = handle_new_xdg_popup; wl_signal_add(&server->xdg_shell->events.new_popup, &server->new_xdg_popup); server->new_xdg_toplevel.notify = handle_new_xdg_toplevel; wl_signal_add(&server->xdg_shell->events.new_toplevel, &server->new_xdg_toplevel); -#else - server->new_xdg_surface.notify = handle_new_xdg_surface; - wl_signal_add(&server->xdg_shell->events.new_surface, &server->new_xdg_surface); -#endif }