Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package bemenu for openSUSE:Factory checked in at 2024-07-08 19:08:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/bemenu (Old) and /work/SRC/openSUSE:Factory/.bemenu.new.2080 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "bemenu" Mon Jul 8 19:08:44 2024 rev:26 rq:1186089 version:0.6.22 Changes: -------- --- /work/SRC/openSUSE:Factory/bemenu/bemenu.changes 2024-03-13 22:20:19.768143900 +0100 +++ /work/SRC/openSUSE:Factory/.bemenu.new.2080/bemenu.changes 2024-07-08 19:09:08.692681216 +0200 @@ -1,0 +2,12 @@ +Mon Jul 8 07:02:19 UTC 2024 - Michael Vetter <mvet...@suse.com> + +- Update to 0.6.22: + * Clipboard fixes/improvements #405 + * Fix: Transparency on the filter reveals a rectangle behind it + that shouldn't be there. #404 + * Fix osx build failing. #406 + * Correctness fixes (memory leaks, compiler warning, out-of-bounds + read) #411 + * Border fixes (fixes: #399) #407 + +------------------------------------------------------------------- Old: ---- bemenu-0.6.21.tar.gz New: ---- bemenu-0.6.22.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ bemenu.spec ++++++ --- /var/tmp/diff_new_pack.iS5qi1/_old 2024-07-08 19:09:09.276702575 +0200 +++ /var/tmp/diff_new_pack.iS5qi1/_new 2024-07-08 19:09:09.280702721 +0200 @@ -18,7 +18,7 @@ %define bcond_with curses Name: bemenu -Version: 0.6.21 +Version: 0.6.22 Release: 0 Summary: Dynamic menu library and client program inspired by dmenu License: MIT ++++++ bemenu-0.6.21.tar.gz -> bemenu-0.6.22.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bemenu-0.6.21/README.md new/bemenu-0.6.22/README.md --- old/bemenu-0.6.21/README.md 2024-03-13 03:28:12.000000000 +0100 +++ new/bemenu-0.6.22/README.md 2024-07-08 01:51:20.000000000 +0200 @@ -85,7 +85,7 @@ | x11 | x11, xinerama, cairo, pango, pangocairo | | Wayland | wayland-client, wayland-protocols, cairo, pango, pangocairo, xkbcommon | -Currently, pasting from clipboard is done at runtime with `wl-paste -t text/plain` and `xclip -t text/plain -out`, attempted in that order. +Currently, pasting from clipboard is done at runtime with `wl-paste` and `xclip`, attempted in that order. ### Installing the dependencies diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bemenu-0.6.21/VERSION new/bemenu-0.6.22/VERSION --- old/bemenu-0.6.21/VERSION 2024-03-13 03:28:12.000000000 +0100 +++ new/bemenu-0.6.22/VERSION 2024-07-08 01:51:20.000000000 +0200 @@ -1 +1 @@ -0.6.21 +0.6.22 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bemenu-0.6.21/client/common/common.c new/bemenu-0.6.22/client/common/common.c --- old/bemenu-0.6.21/client/common/common.c 2024-03-13 03:28:12.000000000 +0100 +++ new/bemenu-0.6.22/client/common/common.c 2024-07-08 01:51:20.000000000 +0200 @@ -363,7 +363,7 @@ { char *ptr; client->lines = strtol(optarg, &ptr, 10); - client->lines_mode = (!strcmp(ptr + 1, "up") ? BM_LINES_UP : BM_LINES_DOWN); + client->lines_mode = (*ptr && !strcmp(ptr + 1, "up") ? BM_LINES_UP : BM_LINES_DOWN); break; } case 'c': diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bemenu-0.6.21/default.nix new/bemenu-0.6.22/default.nix --- old/bemenu-0.6.21/default.nix 2024-03-13 03:28:12.000000000 +0100 +++ new/bemenu-0.6.22/default.nix 2024-07-08 01:51:20.000000000 +0200 @@ -19,10 +19,13 @@ with lib; let - src = ./.; - version = readFile "${src}/VERSION"; + version = readFile ./VERSION; in stdenv.mkDerivation { - inherit src version; + src = with fileset; toSource { + root = ./.; + fileset = unions [ ./VERSION ./GNUmakefile ./bemenu.pc.in ./scripts ./lib ./man ./client ]; + }; + inherit version; pname = "bemenu"; strictDeps = true; @@ -64,6 +67,11 @@ done ''; + doCheck = stdenv.isLinux; + checkPhase = '' + make check-symbols + ''; + meta = { homepage = "https://github.com/Cloudef/bemenu"; description = "Dynamic menu library and client program inspired by dmenu"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bemenu-0.6.21/lib/bemenu.h new/bemenu-0.6.22/lib/bemenu.h --- old/bemenu-0.6.21/lib/bemenu.h 2024-03-13 03:28:12.000000000 +0100 +++ new/bemenu-0.6.22/lib/bemenu.h 2024-07-08 01:51:20.000000000 +0200 @@ -256,7 +256,8 @@ BM_KEY_LINE_DELETE_LEFT, BM_KEY_LINE_DELETE_RIGHT, BM_KEY_WORD_DELETE, - BM_KEY_PASTE, + BM_KEY_PASTE_PRIMARY, + BM_KEY_PASTE_CLIPBOARD, BM_KEY_TAB, BM_KEY_SHIFT_TAB, BM_KEY_ESCAPE, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bemenu-0.6.21/lib/list.c new/bemenu-0.6.22/lib/list.c --- old/bemenu-0.6.21/lib/list.c 2024-03-13 03:28:12.000000000 +0100 +++ new/bemenu-0.6.22/lib/list.c 2024-07-08 01:51:20.000000000 +0200 @@ -64,7 +64,7 @@ } void *new_items; - if (!(new_items = calloc(sizeof(void*), nmemb))) + if (!(new_items = calloc(nmemb, sizeof(void*)))) return false; memcpy(new_items, items, sizeof(void*) * nmemb); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bemenu-0.6.21/lib/menu.c new/bemenu-0.6.22/lib/menu.c --- old/bemenu-0.6.21/lib/menu.c 2024-03-13 03:28:12.000000000 +0100 +++ new/bemenu-0.6.22/lib/menu.c 2024-07-08 01:51:20.000000000 +0200 @@ -767,7 +767,7 @@ assert(menu); struct bm_item **new_items; - if (!(new_items = calloc(sizeof(struct bm_item*), nmemb))) + if (!(new_items = calloc(nmemb, sizeof(struct bm_item*)))) return 0; memcpy(new_items, items, sizeof(struct bm_item*) * nmemb); @@ -1150,9 +1150,18 @@ } break; - case BM_KEY_PASTE: + case BM_KEY_PASTE_PRIMARY: + case BM_KEY_PASTE_CLIPBOARD: { - char *paster[] = {"wl-paste -t text/plain", "xclip -t text/plain -out"}; + char *paster[2] = {NULL, NULL}; + if (key == BM_KEY_PASTE_PRIMARY) { + paster[0] = "wl-paste -t text -p"; + paster[1] = "xclip -t UTF8_STRING -out"; + } else { + paster[0] = "wl-paste -t text"; + paster[1] = "xclip -t UTF8_STRING -out -selection clipboard"; + } + for (size_t paster_i = 0; paster_i < sizeof paster / sizeof paster[0]; paster_i++) { FILE *clipboard = popen(paster[paster_i], "r"); if (clipboard == NULL) { @@ -1390,7 +1399,6 @@ } if (count_down == 2) { - int16_t scroll_count = 0; int16_t scroll_directions[2]; int16_t distance_trigger = displayed * bm_menu_get_line_height(menu) / 4; for (size_t i = 0; i < 2; ++i) { @@ -1401,7 +1409,6 @@ int32_t movement_y = point.pos_y - point.start_y; if (abs(movement_y) > distance_trigger) { scroll_directions[i] = movement_y / abs(movement_y); - scroll_count++; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bemenu-0.6.21/lib/renderers/cairo_renderer.h new/bemenu-0.6.22/lib/renderers/cairo_renderer.h --- old/bemenu-0.6.21/lib/renderers/cairo_renderer.h 2024-03-13 03:28:12.000000000 +0100 +++ new/bemenu-0.6.22/lib/renderers/cairo_renderer.h 2024-07-08 01:51:20.000000000 +0200 @@ -67,7 +67,7 @@ if (!(cairo->pango = pango_cairo_create_context(cairo->cr))) goto fail; - cairo_set_antialias(cairo->cr, CAIRO_ANTIALIAS_NONE); + cairo_set_antialias(cairo->cr, CAIRO_ANTIALIAS_DEFAULT); cairo->surface = surface; assert(cairo->scale > 0); @@ -85,6 +85,8 @@ { if (cairo->cr) cairo_destroy(cairo->cr); + if (cairo->pango) + g_object_unref(cairo->pango); if (cairo->surface) cairo_surface_destroy(cairo->surface); } @@ -130,6 +132,7 @@ static inline bool bm_cairo_draw_line_str(struct cairo *cairo, struct cairo_paint *paint, struct cairo_result *result, const char *buffer) { + cairo_save(cairo->cr); PangoLayout *layout = bm_pango_get_layout(cairo, paint, buffer); pango_cairo_update_layout(cairo->cr, layout); @@ -188,6 +191,7 @@ result->height = line_height; cairo_identity_matrix(cairo->cr); + cairo_restore(cairo->cr); return true; } @@ -260,17 +264,19 @@ } static inline void -bm_cairo_draw_rounded_path(cairo_t *cr, double x, double y, double width, double height, double radius) +bm_cairo_rounded_path(cairo_t *cr, double x, double y, double width, double height, double radius) { + double adjusted_radius = MIN(MIN(radius, height * 0.5), width * 0.5); /* Prevent border from intersecting itself. */ double degrees = M_PI / 180; cairo_new_sub_path(cr); - cairo_arc(cr, x + width - radius, y + radius, radius, -90 * degrees, 0 * degrees); - cairo_arc(cr, x + width - radius, y + height - radius, radius, 0 * degrees, 90 * degrees); - cairo_arc(cr, x + radius, y + height - radius, radius, 90 * degrees, 180 * degrees); - cairo_arc(cr, x + radius, y + radius, radius, 180 * degrees, 270 * degrees); + cairo_arc(cr, x + width - adjusted_radius, y + adjusted_radius, adjusted_radius, -90 * degrees, 0 * degrees); + cairo_arc(cr, x + width - adjusted_radius, y + height - adjusted_radius, adjusted_radius, 0 * degrees, 90 * degrees); + cairo_arc(cr, x + adjusted_radius, y + height - adjusted_radius, adjusted_radius, 90 * degrees, 180 * degrees); + cairo_arc(cr, x + adjusted_radius, y + adjusted_radius, adjusted_radius, 180 * degrees, 270 * degrees); cairo_close_path(cr); } + static inline void bm_cairo_paint(struct cairo *cairo, uint32_t width, uint32_t max_height, struct bm_menu *menu, struct cairo_paint_result *out_result) { @@ -302,11 +308,9 @@ uint32_t filtered_item_count; bm_menu_get_filtered_items(menu, &filtered_item_count); - cairo_set_source_rgba(cairo->cr, 0, 0, 0, 0); - cairo_rectangle(cairo->cr, 0, 0, width, height); - cairo_save(cairo->cr); cairo_set_operator(cairo->cr, CAIRO_OPERATOR_CLEAR); + cairo_reset_clip(cairo->cr); cairo_paint(cairo->cr); cairo_restore(cairo->cr); @@ -323,6 +327,16 @@ memset(&result, 0, sizeof(result)); uint32_t title_x = 0; + uint32_t total_height=menu->lines*height; /*Total height of the full menu*/ + if (!menu->fixed_height){ + total_height = MIN(count*height, total_height); + } + total_height += height+border_size*2; + total_height = MIN(total_height, (max_height/height)*height); + + bm_cairo_rounded_path(cairo->cr, 1, 1, ((width + border_size)/cairo->scale)-2, total_height-2, border_radius); + cairo_clip(cairo->cr); + if (menu->title) { /* Essentially hide the title text if we are drawing lines "up". */ enum bm_color title_fg = (menu->lines_mode == BM_LINES_UP ? BM_COLOR_ITEM_BG : BM_COLOR_TITLE_FG); @@ -347,7 +361,7 @@ paint.cursor = menu->cursor; paint.cursor_height = menu->cursor_height; paint.cursor_width = menu->cursor_width; - paint.pos = (struct pos){ (menu->title ? 2 : 0) + result.x_advance + border_size, vpadding + border_size }; + paint.pos = (struct pos){ (menu->title ? 6 : 0) + result.x_advance + border_size, vpadding + border_size }; paint.box = (struct box){ (menu->title ? 2 : 4), 0, vpadding, -vpadding, width - paint.pos.x, height }; if (menu->lines == 0 || menu->lines_mode == BM_LINES_DOWN) { @@ -585,9 +599,9 @@ bm_cairo_color_from_menu_color(menu, BM_COLOR_BORDER, &paint.fg); cairo_set_source_rgba(cairo->cr, paint.fg.r, paint.fg.b, paint.fg.g, paint.fg.a); if (!border_radius) { - cairo_rectangle(cairo->cr, 0, 0, (width + border_size)/cairo->scale, (height * (page_length + 1)) + (2 * border_size)); + cairo_rectangle(cairo->cr, 0, 0, (width + border_size)/cairo->scale, total_height); } else { - bm_cairo_draw_rounded_path(cairo->cr, 0, 0, (width + border_size)/cairo->scale, (height * (page_length + 1)) + (2 * border_size), border_radius); + bm_cairo_rounded_path(cairo->cr, 1, 1, ((width + border_size)/cairo->scale)-2, total_height-2, border_radius); } cairo_set_line_width(cairo->cr, 2 * menu->border_size); @@ -595,6 +609,7 @@ out_result->height += 2 * border_size; out_result->height *= cairo->scale; + cairo_reset_clip(cairo->cr); } #endif /* _BM_CAIRO_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bemenu-0.6.21/lib/renderers/curses/curses.c new/bemenu-0.6.22/lib/renderers/curses/curses.c --- old/bemenu-0.6.21/lib/renderers/curses/curses.c 2024-03-13 03:28:12.000000000 +0100 +++ new/bemenu-0.6.22/lib/renderers/curses/curses.c 2024-07-08 01:51:20.000000000 +0200 @@ -238,7 +238,6 @@ uint32_t count, cl = 0; const uint32_t lines = fmax(getmaxy(curses.stdscreen), 1) - 1; if (lines > 1) { - uint32_t displayed = 0; struct bm_item **items = bm_menu_get_filtered_items(menu, &count); const bool scrollbar = (menu->scrollbar > BM_SCROLLBAR_NONE && (menu->scrollbar != BM_SCROLLBAR_AUTOHIDE || count > lines) ? true : false); const int32_t offset_x = title_len + (scrollbar && 2 > title_len ? 2 - title_len : 0); @@ -255,7 +254,6 @@ draw_line(color, 1 + cl++, "%*s%s%s", offset_x + prefix_x, "", (menu->prefix ? " " : ""), (items[i]->text ? items[i]->text : "")); } - ++displayed; } if (scrollbar) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bemenu-0.6.21/lib/renderers/wayland/registry.c new/bemenu-0.6.22/lib/renderers/wayland/registry.c --- old/bemenu-0.6.21/lib/renderers/wayland/registry.c 2024-03-13 03:28:12.000000000 +0100 +++ new/bemenu-0.6.22/lib/renderers/wayland/registry.c 2024-07-08 01:51:20.000000000 +0200 @@ -477,30 +477,27 @@ { struct input *input = data; - if (!input->seat) { - input->seat = seat; - } - - if (caps & WL_SEAT_CAPABILITY_KEYBOARD) { + if ((caps & WL_SEAT_CAPABILITY_KEYBOARD) && !input->keyboard) { input->keyboard = wl_seat_get_keyboard(seat); wl_keyboard_add_listener(input->keyboard, &keyboard_listener, data); + } else if (!(caps & WL_SEAT_CAPABILITY_KEYBOARD) && input->keyboard) { + wl_keyboard_destroy(input->keyboard); + input->keyboard = NULL; } - if (caps & WL_SEAT_CAPABILITY_POINTER) { + if ((caps & WL_SEAT_CAPABILITY_POINTER) && !input->pointer) { input->pointer = wl_seat_get_pointer(seat); wl_pointer_add_listener(input->pointer, &pointer_listener, data); + } else if (!(caps & WL_SEAT_CAPABILITY_POINTER) && input->pointer) { + wl_pointer_destroy(input->pointer); + input->pointer = NULL; } - if (caps & WL_SEAT_CAPABILITY_TOUCH) { + if ((caps & WL_SEAT_CAPABILITY_TOUCH) && !input->touch) { input->touch = wl_seat_get_touch(seat); wl_touch_add_listener(input->touch, &wl_touch_listener, data); - } - - if (seat == input->seat && !(caps & WL_SEAT_CAPABILITY_KEYBOARD) && !(caps & WL_SEAT_CAPABILITY_POINTER)) { - wl_keyboard_destroy(input->keyboard); - input->seat = NULL; - input->keyboard = NULL; - input->pointer = NULL; + } else if (!(caps & WL_SEAT_CAPABILITY_TOUCH) && input->touch) { + wl_touch_destroy(input->touch); input->touch = NULL; } } @@ -631,9 +628,35 @@ { assert(wayland); + if (wayland->input.keyboard) + wl_keyboard_destroy(wayland->input.keyboard); + + if (wayland->input.pointer) + wl_pointer_destroy(wayland->input.pointer); + + if (wayland->input.touch) + wl_touch_destroy(wayland->input.touch); + + if (wayland->viewporter) + wp_viewporter_destroy(wayland->viewporter); + + if (wayland->wfs_mgr) + wp_fractional_scale_manager_v1_destroy(wayland->wfs_mgr); + + struct output *output, *output_tmp; + wl_list_for_each_safe(output, output_tmp, &wayland->outputs, link) { + wl_list_remove(&output->link); + wl_output_destroy(output->output); + free(output->name); + free(output); + } + if (wayland->shm) wl_shm_destroy(wayland->shm); + if (wayland->seat) + wl_seat_destroy(wayland->seat); + if (wayland->layer_shell) zwlr_layer_shell_v1_destroy(wayland->layer_shell); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bemenu-0.6.21/lib/renderers/wayland/wayland.c new/bemenu-0.6.22/lib/renderers/wayland/wayland.c --- old/bemenu-0.6.21/lib/renderers/wayland/wayland.c 2024-03-13 03:28:12.000000000 +0100 +++ new/bemenu-0.6.22/lib/renderers/wayland/wayland.c 2024-07-08 01:51:20.000000000 +0200 @@ -203,7 +203,10 @@ return (mods & MOD_CTRL ? BM_KEY_RETURN : BM_KEY_UNICODE); case XKB_KEY_y: - return (mods & MOD_CTRL ? BM_KEY_PASTE : BM_KEY_UNICODE); + return (mods & MOD_CTRL ? BM_KEY_PASTE_PRIMARY : BM_KEY_UNICODE); + + case XKB_KEY_Y: + return (mods & MOD_CTRL ? BM_KEY_PASTE_CLIPBOARD : BM_KEY_UNICODE); case XKB_KEY_1: if ((mods & MOD_ALT)) return BM_KEY_CUSTOM_1; @@ -462,10 +465,11 @@ (void)wl_surface; struct window *window = data; - struct surf_output *surf_output; - wl_list_for_each(surf_output, &window->surf_outputs, link) { + struct surf_output *surf_output, *surf_output_tmp; + wl_list_for_each_safe(surf_output, surf_output_tmp, &window->surf_outputs, link) { if (surf_output->output->output == wl_output) { wl_list_remove(&surf_output->link); + free(surf_output); break; } } @@ -481,11 +485,12 @@ static void destroy_windows(struct wayland *wayland) { - struct window *window; - wl_list_for_each(window, &wayland->windows, link) { + struct window *window, *window_tmp; + wl_list_for_each_safe(window, window_tmp, &wayland->windows, link) { + wl_list_remove(&window->link); bm_wl_window_destroy(window); + free(window); } - wl_list_init(&wayland->windows); } void diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bemenu-0.6.21/lib/renderers/wayland/wayland.h new/bemenu-0.6.22/lib/renderers/wayland/wayland.h --- old/bemenu-0.6.21/lib/renderers/wayland/wayland.h 2024-03-13 03:28:12.000000000 +0100 +++ new/bemenu-0.6.22/lib/renderers/wayland/wayland.h 2024-07-08 01:51:20.000000000 +0200 @@ -81,7 +81,6 @@ struct input { int *repeat_fd; - struct wl_seat *seat; struct wl_keyboard *keyboard; struct wl_pointer *pointer; struct wl_touch *touch; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bemenu-0.6.21/lib/renderers/wayland/window.c new/bemenu-0.6.22/lib/renderers/wayland/window.c --- old/bemenu-0.6.21/lib/renderers/wayland/window.c 2024-03-13 03:28:12.000000000 +0100 +++ new/bemenu-0.6.22/lib/renderers/wayland/window.c 2024-07-08 01:51:20.000000000 +0200 @@ -297,6 +297,12 @@ if (window->surface) wl_surface_destroy(window->surface); + + struct surf_output *surf_output, *surf_output_tmp; + wl_list_for_each_safe(surf_output, surf_output_tmp, &window->surf_outputs, link) { + wl_list_remove(&surf_output->link); + free(surf_output); + } } static void diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bemenu-0.6.21/lib/renderers/x11/x11.c new/bemenu-0.6.22/lib/renderers/x11/x11.c --- old/bemenu-0.6.21/lib/renderers/x11/x11.c 2024-03-13 03:28:12.000000000 +0100 +++ new/bemenu-0.6.22/lib/renderers/x11/x11.c 2024-07-08 01:51:20.000000000 +0200 @@ -150,7 +150,10 @@ return (mods & MOD_CTRL ? BM_KEY_WORD_DELETE : BM_KEY_UNICODE); case XK_y: - return (mods & MOD_CTRL ? BM_KEY_PASTE : BM_KEY_UNICODE); + return (mods & MOD_CTRL ? BM_KEY_PASTE_PRIMARY : BM_KEY_UNICODE); + + case XK_Y: + return (mods & MOD_CTRL ? BM_KEY_PASTE_CLIPBOARD : BM_KEY_UNICODE); case XK_j: return (mods & MOD_ALT ? BM_KEY_DOWN : BM_KEY_UNICODE); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bemenu-0.6.21/man/bemenu.1.scd.in new/bemenu-0.6.22/man/bemenu.1.scd.in --- old/bemenu-0.6.21/man/bemenu.1.scd.in 2024-03-13 03:28:12.000000000 +0100 +++ new/bemenu-0.6.22/man/bemenu.1.scd.in 2024-07-08 01:51:20.000000000 +0200 @@ -298,8 +298,8 @@ *C-w* Clear the filter. -*C-y* - Paste the clipboard. +*C-y, C-Y* + Paste selection (*C-y* for "primary", *C-Y* for "clipboard"). *M-[1-9]* Print selected items and exit with a custom error code 10 (*M-1*)