From af182961cc8da81a6b01e88cec06ba322caf7260 Mon Sep 17 00:00:00 2001 From: Allen Webster Date: Thu, 26 Feb 2026 14:59:41 -0800 Subject: [PATCH] [digesting_libdecor] eliminate libdecor_plugin,libdecor_plugin_gtk, and the functions from the fallback plugin --- digesting_libdecor.c | 282 ++++++------------------------------------- digesting_libdecor.h | 94 ++------------- 2 files changed, 47 insertions(+), 329 deletions(-) diff --git a/digesting_libdecor.c b/digesting_libdecor.c index 71e9ff8..ebefd55 100755 --- a/digesting_libdecor.c +++ b/digesting_libdecor.c @@ -72,9 +72,6 @@ const struct wl_callback_listener init_wl_display_callback_listener; const struct wl_buffer_listener buffer_listener; const struct wl_callback_listener shm_callback_listener; -struct libdecor_plugin_interface gtk_plugin_iface; -struct libdecor_plugin_interface fallback_plugin_iface; - const struct wl_shm_listener shm_listener; const struct wl_seat_listener seat_listener; const struct wl_pointer_listener pointer_listener; @@ -768,8 +765,7 @@ frame_get_window_size_for(struct libdecor_frame *frame, if (frame_has_visible_client_side_decoration(frame)) { int left, right, top, bottom; - if (!libdecor_plugin_gtk_frame_get_border_size(0, frame, NULL, - &left, &right, &top, &bottom)){ + if (!libdecor_plugin_gtk_frame_get_border_size(frame, NULL, &left, &right, &top, &bottom)){ return false; } *window_width += left + right; @@ -787,8 +783,7 @@ frame_set_window_geometry(struct libdecor_frame *frame, int left, right, top, bottom; if (frame_has_visible_client_side_decoration(frame) && - libdecor_plugin_gtk_frame_get_border_size(0, frame, NULL, - &left, &right, &top, &bottom)) { + libdecor_plugin_gtk_frame_get_border_size(frame, NULL, &left, &right, &top, &bottom)) { x = -left; y = -top; width = content_width + left + right; @@ -825,7 +820,7 @@ libdecor_configuration_get_content_size(struct libdecor_configuration *configura /* Update window state for correct border size calculation */ frame->priv->window_state = configuration->window_state; - if (!libdecor_plugin_gtk_frame_get_border_size(0, frame, configuration, &left, &right, &top, &bottom)){ + if (!libdecor_plugin_gtk_frame_get_border_size(frame, configuration, &left, &right, &top, &bottom)){ return false; } @@ -984,8 +979,7 @@ xdg_toplevel_configure_bounds(void *user_data, int left = 0, top = 0, right = 0, bottom = 0; if (frame_has_visible_client_side_decoration(frame)) { - libdecor_plugin_gtk_frame_get_border_size(0, frame, NULL, - &left, &right, &top, &bottom); + libdecor_plugin_gtk_frame_get_border_size(frame, NULL, &left, &right, &top, &bottom); } width -= left + right; @@ -1124,7 +1118,7 @@ libdecor_decorate(struct wl_surface *wl_surface, void *user_data){ return NULL; } - frame = libdecor_plugin_gtk_frame_new(0); + frame = libdecor_plugin_gtk_frame_new(); if (!frame){ return NULL; } @@ -1185,7 +1179,7 @@ libdecor_frame_unref(struct libdecor_frame *frame) if (frame_priv->xdg_surface) xdg_surface_destroy(frame_priv->xdg_surface); - libdecor_plugin_gtk_frame_free(0, frame); + libdecor_plugin_gtk_frame_free(frame); free(frame_priv->state.title); free(frame_priv->state.app_id); @@ -1240,10 +1234,10 @@ libdecor_frame_set_visibility(struct libdecor_frame *frame, /* enable/disable decorations that are managed by a plugin */ if (frame_has_visible_client_side_decoration(frame)) { /* show client-side decorations */ - libdecor_plugin_gtk_frame_commit(0, frame, NULL, NULL); + libdecor_plugin_gtk_frame_commit(frame, NULL, NULL); } else { /* destroy client-side decorations */ - libdecor_plugin_gtk_frame_free(0, frame); + libdecor_plugin_gtk_frame_free(frame); } frame_set_window_geometry(frame, @@ -1290,7 +1284,7 @@ libdecor_frame_set_title(struct libdecor_frame *frame, xdg_toplevel_set_title(frame_priv->xdg_toplevel, title); - libdecor_plugin_gtk_frame_property_changed(0, frame); + libdecor_plugin_gtk_frame_property_changed(frame); } } @@ -1328,7 +1322,7 @@ notify_on_capability_change(struct libdecor_frame *frame, frame->priv->content_height == 0) return; - libdecor_plugin_gtk_frame_property_changed(0, frame); + libdecor_plugin_gtk_frame_property_changed(frame); if (!libdecor_frame_has_capability(frame, LIBDECOR_ACTION_RESIZE)) { frame->priv->interactive_limits = frame->priv->state.content_limits; @@ -1384,13 +1378,13 @@ libdecor_frame_has_capability(struct libdecor_frame *frame, enum libdecor_capabi void libdecor_frame_popup_grab(struct libdecor_frame *frame, const char *seat_name){ struct libdecor_frame_private *frame_priv = frame->priv; - libdecor_plugin_gtk_frame_popup_grab(0, frame, seat_name); + libdecor_plugin_gtk_frame_popup_grab(frame, seat_name); } void libdecor_frame_popup_ungrab(struct libdecor_frame *frame, const char *seat_name){ struct libdecor_frame_private *frame_priv = frame->priv; - libdecor_plugin_gtk_frame_popup_ungrab(0, frame, seat_name); + libdecor_plugin_gtk_frame_popup_ungrab(frame, seat_name); } void @@ -1435,8 +1429,7 @@ libdecor_frame_translate_coordinate(struct libdecor_frame *frame, if (frame_has_visible_client_side_decoration(frame)){ int left, top; - libdecor_plugin_gtk_frame_get_border_size(0, frame, NULL, - &left, NULL, &top, NULL); + libdecor_plugin_gtk_frame_get_border_size(frame, NULL, &left, NULL, &top, NULL); *frame_x += left; *frame_y += top; } @@ -1707,10 +1700,10 @@ libdecor_frame_commit(struct libdecor_frame *frame, /* switch between decoration modes */ if (frame_has_visible_client_side_decoration(frame)) { - libdecor_plugin_gtk_frame_commit(0, frame, state, + libdecor_plugin_gtk_frame_commit(frame, state, configuration); } else { - libdecor_plugin_gtk_frame_free(0, frame); + libdecor_plugin_gtk_frame_free(frame); } frame_set_window_geometry(frame, @@ -1816,7 +1809,7 @@ notify_error(enum libdecor_error error, const char *message) { ctx.has_error = true; libdecorevent__error(error, message); - libdecor_plugin_gtk_destroy(0); + libdecor_plugin_gtk_destroy(); } static void @@ -1828,9 +1821,8 @@ finish_init(void){ } int -libdecor_dispatch(int timeout) -{ - return libdecor_plugin_gtk_dispatch(0, timeout); +libdecor_dispatch(int timeout){ + return libdecor_plugin_gtk_dispatch(timeout); } void @@ -1868,7 +1860,7 @@ libdecor_notify_plugin_error(enum libdecor_error error, void cleanup(void){ - libdecor_plugin_gtk_destroy(0); + libdecor_plugin_gtk_destroy(); if (ctx.wl_subcompositor != 0){ wl_subcompositor_destroy(ctx.wl_subcompositor); } @@ -1883,160 +1875,6 @@ cleanup(void){ } } -//#include "libdecor-fallback.c" -static void -libdecor_plugin_fallback_destroy(struct libdecor_plugin *plugin) -{} - -static int -libdecor_plugin_fallback_get_fd(struct libdecor_plugin *plugin) -{ - struct libdecor_plugin_fallback *plugin_fallback = - (struct libdecor_plugin_fallback *) plugin; - - return wl_display_get_fd(ctx.wl_display); -} - -static int -libdecor_plugin_fallback_dispatch(struct libdecor_plugin *plugin, - int timeout) -{ - struct libdecor_plugin_fallback *plugin_fallback = - (struct libdecor_plugin_fallback *) plugin; - struct wl_display *wl_display = ctx.wl_display; - struct pollfd fds[1]; - int ret; - int dispatch_count = 0; - - while (wl_display_prepare_read(wl_display) != 0) - dispatch_count += wl_display_dispatch_pending(wl_display); - - if (wl_display_flush(wl_display) < 0 && - errno != EAGAIN) { - wl_display_cancel_read(wl_display); - return -errno; - } - - fds[0] = (struct pollfd) { wl_display_get_fd(wl_display), POLLIN }; - - ret = poll(fds, ARRAY_LENGTH(fds), timeout); - if (ret > 0) { - if (fds[0].revents & POLLIN) { - wl_display_read_events(wl_display); - dispatch_count += wl_display_dispatch_pending(wl_display); - return dispatch_count; - } else { - wl_display_cancel_read(wl_display); - return dispatch_count; - } - } else if (ret == 0) { - wl_display_cancel_read(wl_display); - return dispatch_count; - } else { - wl_display_cancel_read(wl_display); - return -errno; - } -} - -static void -libdecor_plugin_fallback_set_handle_application_cursor(struct libdecor_plugin *plugin, - bool handle_cursor) -{ -} - -static struct libdecor_frame * -libdecor_plugin_fallback_frame_new(struct libdecor_plugin *plugin) -{ - struct libdecor_frame *frame; - - frame = calloc(1, sizeof *frame); - - return frame; -} - -static void -libdecor_plugin_fallback_frame_free(struct libdecor_plugin *plugin, - struct libdecor_frame *frame) -{ -} - -static void -libdecor_plugin_fallback_frame_commit(struct libdecor_plugin *plugin, - struct libdecor_frame *frame, - struct libdecor_state *state, - struct libdecor_configuration *configuration) -{ -} - -static void -libdecor_plugin_fallback_frame_property_changed(struct libdecor_plugin *plugin, - struct libdecor_frame *frame) -{ -} - -static void -libdecor_plugin_fallback_frame_popup_grab(struct libdecor_plugin *plugin, - struct libdecor_frame *frame, - const char *seat_name) -{ -} - -static void -libdecor_plugin_fallback_frame_popup_ungrab(struct libdecor_plugin *plugin, - struct libdecor_frame *frame, - const char *seat_name) -{ -} - -static bool -libdecor_plugin_fallback_frame_get_border_size(struct libdecor_plugin *plugin, - struct libdecor_frame *frame, - struct libdecor_configuration *configuration, - int *left, - int *right, - int *top, - int *bottom) -{ - if (left) - *left = 0; - if (right) - *right = 0; - if (top) - *top = 0; - if (bottom) - *bottom = 0; - - return true; -} - -struct libdecor_plugin_interface fallback_plugin_iface = { - .destroy = libdecor_plugin_fallback_destroy, - .get_fd = libdecor_plugin_fallback_get_fd, - .dispatch = libdecor_plugin_fallback_dispatch, - - .set_handle_application_cursor = libdecor_plugin_fallback_set_handle_application_cursor, - - .frame_new = libdecor_plugin_fallback_frame_new, - .frame_free = libdecor_plugin_fallback_frame_free, - .frame_commit = libdecor_plugin_fallback_frame_commit, - .frame_property_changed = libdecor_plugin_fallback_frame_property_changed, - .frame_popup_grab = libdecor_plugin_fallback_frame_popup_grab, - .frame_popup_ungrab = libdecor_plugin_fallback_frame_popup_ungrab, - .frame_get_border_size = libdecor_plugin_fallback_frame_get_border_size, -}; - -struct libdecor_plugin * -libdecor_fallback_plugin_new(void){ - struct libdecor_plugin_fallback *plugin; - - plugin = calloc(1, sizeof *plugin); - plugin->context = 0; - - libdecor_notify_plugin_ready(); - - return &plugin->plugin; -} - //#include "libdecor-cairo-blur.c" int blur_surface(cairo_surface_t *surface, int margin) @@ -2561,7 +2399,7 @@ static bool update_local_cursor(struct seat *seat); static void -libdecor_plugin_gtk_destroy(struct libdecor_plugin *plugin) +libdecor_plugin_gtk_destroy(void) { struct seat *seat, *seat_tmp; struct output *output, *output_tmp; @@ -2635,20 +2473,12 @@ libdecor_frame_gtk_new(void){ } static int -libdecor_plugin_gtk_get_fd(struct libdecor_plugin *plugin) -{ - struct libdecor_plugin_gtk *plugin_gtk = - (struct libdecor_plugin_gtk *) plugin; - struct wl_display *wl_display = ctx.wl_display; - - return wl_display_get_fd(wl_display); +libdecor_plugin_gtk_get_fd(void){ + return wl_display_get_fd(ctx.wl_display); } static int -libdecor_plugin_gtk_dispatch(struct libdecor_plugin *plugin, int timeout) -{ - struct libdecor_plugin_gtk *plugin_gtk = - (struct libdecor_plugin_gtk *) plugin; +libdecor_plugin_gtk_dispatch(int timeout){ struct wl_display *wl_display = ctx.wl_display; struct pollfd fds[1]; int ret; @@ -2687,21 +2517,14 @@ libdecor_plugin_gtk_dispatch(struct libdecor_plugin *plugin, int timeout) } static void -libdecor_plugin_gtk_set_handle_application_cursor(struct libdecor_plugin *plugin, - bool handle_cursor) -{ +libdecor_plugin_gtk_set_handle_application_cursor(bool handle_cursor){ ctx.handle_cursor = handle_cursor; } static struct libdecor_frame * -libdecor_plugin_gtk_frame_new(struct libdecor_plugin *plugin) -{ - struct libdecor_plugin_gtk *plugin_gtk = - (struct libdecor_plugin_gtk *) plugin; +libdecor_plugin_gtk_frame_new(void){ struct libdecor_frame_gtk *frame_gtk; - frame_gtk = libdecor_frame_gtk_new(); - return &frame_gtk->frame; } @@ -2734,10 +2557,8 @@ const struct wl_buffer_listener buffer_listener = { buffer_release }; -struct libdecor_plugin_gtk; static struct buffer * -create_shm_buffer(struct libdecor_plugin_gtk *plugin_gtk, - int width, +create_shm_buffer(int width, int height, bool opaque, int scale) @@ -2826,9 +2647,7 @@ free_border_component(struct border_component *border_component) } static void -libdecor_plugin_gtk_frame_free(struct libdecor_plugin *plugin, - struct libdecor_frame *frame) -{ +libdecor_plugin_gtk_frame_free(struct libdecor_frame *frame){ struct libdecor_frame_gtk *frame_gtk = (struct libdecor_frame_gtk *) frame; @@ -2908,10 +2727,7 @@ redraw_scale(struct libdecor_frame_gtk *frame_gtk, } static bool -add_surface_output(struct libdecor_plugin_gtk *plugin_gtk, - struct wl_output *wl_output, - struct wl_list *list) -{ +add_surface_output(struct wl_output *wl_output, struct wl_list *list){ struct output *output; struct surface_output *surface_output; @@ -2944,7 +2760,7 @@ surface_enter(void *data, if (cmpnt == NULL) return; - if (!add_surface_output(0, wl_output, &cmpnt->output_list)) + if (!add_surface_output(wl_output, &cmpnt->output_list)) return; if (redraw_scale(frame_gtk, cmpnt)) @@ -3492,8 +3308,7 @@ draw_border_component(struct libdecor_frame_gtk *frame_gtk, } if (!buffer) - buffer = create_shm_buffer(0, - component_width, + buffer = create_shm_buffer(component_width, component_height, border_component->opaque, border_component->scale); @@ -3635,8 +3450,7 @@ window_state_to_decoration_type(enum libdecor_window_state window_state) } static void -libdecor_plugin_gtk_frame_commit(struct libdecor_plugin *plugin, - struct libdecor_frame *frame, +libdecor_plugin_gtk_frame_commit(struct libdecor_frame *frame, struct libdecor_state *state, struct libdecor_configuration *configuration) { @@ -3685,8 +3499,7 @@ libdecor_plugin_gtk_frame_commit(struct libdecor_plugin *plugin, } static void -libdecor_plugin_gtk_frame_property_changed(struct libdecor_plugin *plugin, - struct libdecor_frame *frame) +libdecor_plugin_gtk_frame_property_changed(struct libdecor_frame *frame) { struct libdecor_frame_gtk *frame_gtk = (struct libdecor_frame_gtk *) frame; @@ -3825,8 +3638,7 @@ synthesize_pointer_leave(struct seat *seat) } static void -libdecor_plugin_gtk_frame_popup_grab(struct libdecor_plugin *plugin, - struct libdecor_frame *frame, +libdecor_plugin_gtk_frame_popup_grab(struct libdecor_frame *frame, const char *seat_name) { struct libdecor_frame_gtk *frame_gtk = @@ -3850,8 +3662,7 @@ libdecor_plugin_gtk_frame_popup_grab(struct libdecor_plugin *plugin, } static void -libdecor_plugin_gtk_frame_popup_ungrab(struct libdecor_plugin *plugin, - struct libdecor_frame *frame, +libdecor_plugin_gtk_frame_popup_ungrab(struct libdecor_frame *frame, const char *seat_name) { struct libdecor_frame_gtk *frame_gtk = @@ -3876,8 +3687,7 @@ libdecor_plugin_gtk_frame_popup_ungrab(struct libdecor_plugin *plugin, } static bool -libdecor_plugin_gtk_frame_get_border_size(struct libdecor_plugin *plugin, - struct libdecor_frame *frame, +libdecor_plugin_gtk_frame_get_border_size(struct libdecor_frame *frame, struct libdecor_configuration *configuration, int *left, int *right, @@ -3924,24 +3734,6 @@ libdecor_plugin_gtk_frame_get_border_size(struct libdecor_plugin *plugin, return true; } -struct libdecor_plugin_interface gtk_plugin_iface = { - .destroy = libdecor_plugin_gtk_destroy, - .get_fd = libdecor_plugin_gtk_get_fd, - .dispatch = libdecor_plugin_gtk_dispatch, - - .set_handle_application_cursor = libdecor_plugin_gtk_set_handle_application_cursor, - - .frame_new = libdecor_plugin_gtk_frame_new, - .frame_free = libdecor_plugin_gtk_frame_free, - .frame_commit = libdecor_plugin_gtk_frame_commit, - .frame_property_changed = libdecor_plugin_gtk_frame_property_changed, - - .frame_popup_grab = libdecor_plugin_gtk_frame_popup_grab, - .frame_popup_ungrab = libdecor_plugin_gtk_frame_popup_ungrab, - - .frame_get_border_size = libdecor_plugin_gtk_frame_get_border_size, -}; - static void cursor_surface_enter(void *data, struct wl_surface *wl_surface, @@ -4794,10 +4586,6 @@ output_removed(struct output *output) free(output); } -static struct libdecor_plugin_priority priorities[] = { - { NULL, LIBDECOR_PLUGIN_PRIORITY_HIGH } -}; - //#include "desktop-settings.c" static bool diff --git a/digesting_libdecor.h b/digesting_libdecor.h index d4d4938..d83e480 100644 --- a/digesting_libdecor.h +++ b/digesting_libdecor.h @@ -114,62 +114,11 @@ enum libdecor_wm_capabilities { // libdecor-plugin.h struct libdecor_frame_private; - struct libdecor_frame { struct libdecor_frame_private *priv; struct wl_list link; }; -struct libdecor_plugin_private; - -struct libdecor_plugin { - struct libdecor_plugin_private *priv; -}; - -#define LIBDECOR_PLUGIN_PRIORITY_HIGH 1000 -#define LIBDECOR_PLUGIN_PRIORITY_MEDIUM 100 -#define LIBDECOR_PLUGIN_PRIORITY_LOW 0 - -struct libdecor_plugin_priority { - const char *desktop; - int priority; -}; - -struct libdecor_plugin_interface { - void (* destroy)(struct libdecor_plugin *plugin); - - int (* get_fd)(struct libdecor_plugin *plugin); - int (* dispatch)(struct libdecor_plugin *plugin, - int timeout); - - void (* set_handle_application_cursor)(struct libdecor_plugin *plugin, - bool handle_cursor); - - struct libdecor_frame * (* frame_new)(struct libdecor_plugin *plugin); - void (* frame_free)(struct libdecor_plugin *plugin, - struct libdecor_frame *frame); - void (* frame_commit)(struct libdecor_plugin *plugin, - struct libdecor_frame *frame, - struct libdecor_state *state, - struct libdecor_configuration *configuration); - void (*frame_property_changed)(struct libdecor_plugin *plugin, - struct libdecor_frame *frame); - void (* frame_popup_grab)(struct libdecor_plugin *plugin, - struct libdecor_frame *frame, - const char *seat_name); - void (* frame_popup_ungrab)(struct libdecor_plugin *plugin, - struct libdecor_frame *frame, - const char *seat_name); - - bool (* frame_get_border_size)(struct libdecor_plugin *plugin, - struct libdecor_frame *frame, - struct libdecor_configuration *configuration, - int *left, - int *right, - int *top, - int *bottom); -}; - // #include "libdecor.c" struct libdecor_state { @@ -237,17 +186,6 @@ struct libdecor_frame_private { bool visible; }; -struct libdecor_plugin_private { - struct libdecor_plugin_interface *iface; -}; - -// #include "libdecor-fallback.c" - -struct libdecor_plugin_fallback { - struct libdecor_plugin plugin; - struct libdecor *context; -}; - // #include "desktop-settings.h" enum libdecor_color_scheme { @@ -543,12 +481,6 @@ int libdecor_state_get_content_height(struct libdecor_state *state); enum libdecor_window_state libdecor_state_get_window_state(struct libdecor_state *state); -void libdecor_plugin_release(struct libdecor_plugin *plugin); - -// #include "libdecor-fallback.h" - -struct libdecor_plugin * libdecor_fallback_plugin_new(void); - // #include "libdecor-cairo-blur.h" int blur_surface(cairo_surface_t *surface, int margin); @@ -572,7 +504,6 @@ static void finish_init(void); //#include "plugins/gtk/libdecor-gtk.c" -static void libdecor_plugin_gtk_destroy(struct libdecor_plugin *plugin); static void init_wl_output( uint32_t id, uint32_t version); @@ -580,19 +511,18 @@ static void output_removed(struct output *output); static const char *libdecor_gtk_proxy_tag = "libdecor-gtk"; -static void libdecor_plugin_gtk_destroy(struct libdecor_plugin *plugin); -static int libdecor_plugin_gtk_get_fd(struct libdecor_plugin *plugin); -static int libdecor_plugin_gtk_get_fd(struct libdecor_plugin *plugin); -static int libdecor_plugin_gtk_dispatch(struct libdecor_plugin *plugin, int timeout); -static void libdecor_plugin_gtk_set_handle_application_cursor(struct libdecor_plugin *plugin, bool handle_cursor); -static struct libdecor_frame * libdecor_plugin_gtk_frame_new(struct libdecor_plugin *plugin); -static void libdecor_plugin_gtk_frame_free(struct libdecor_plugin *plugin, struct libdecor_frame *frame); -static void libdecor_plugin_gtk_frame_commit(struct libdecor_plugin *plugin, struct libdecor_frame *frame, struct libdecor_state *state, struct libdecor_configuration *configuration); -static void libdecor_plugin_gtk_frame_property_changed(struct libdecor_plugin *plugin, struct libdecor_frame *frame); -static void libdecor_plugin_gtk_frame_popup_grab(struct libdecor_plugin *plugin, struct libdecor_frame *frame, const char *seat_name); -static void libdecor_plugin_gtk_frame_popup_ungrab(struct libdecor_plugin *plugin, struct libdecor_frame *frame, const char *seat_name); -static bool libdecor_plugin_gtk_frame_get_border_size(struct libdecor_plugin *plugin, struct libdecor_frame *frame, struct libdecor_configuration *configuration, - int *left, int *right, int *top, int *bottom); +static void libdecor_plugin_gtk_destroy(void); +static int libdecor_plugin_gtk_get_fd(void); +static int libdecor_plugin_gtk_get_fd(void); +static int libdecor_plugin_gtk_dispatch(int timeout); +static void libdecor_plugin_gtk_set_handle_application_cursor(bool handle_cursor); +static struct libdecor_frame * libdecor_plugin_gtk_frame_new(void); +static void libdecor_plugin_gtk_frame_free(struct libdecor_frame *frame); +static void libdecor_plugin_gtk_frame_commit(struct libdecor_frame *frame, struct libdecor_state *state, struct libdecor_configuration *configuration); +static void libdecor_plugin_gtk_frame_property_changed(struct libdecor_frame *frame); +static void libdecor_plugin_gtk_frame_popup_grab(struct libdecor_frame *frame, const char *seat_name); +static void libdecor_plugin_gtk_frame_popup_ungrab(struct libdecor_frame *frame, const char *seat_name); +static bool libdecor_plugin_gtk_frame_get_border_size(struct libdecor_frame *frame, struct libdecor_configuration *configuration, int *left, int *right, int *top, int *bottom); // digesting_libdecor