Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package fuzzel for openSUSE:Factory checked in at 2024-09-15 12:35:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fuzzel (Old) and /work/SRC/openSUSE:Factory/.fuzzel.new.29891 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fuzzel" Sun Sep 15 12:35:37 2024 rev:13 rq:1200805 version:1.11.1 Changes: -------- --- /work/SRC/openSUSE:Factory/fuzzel/fuzzel.changes 2024-09-10 21:15:58.536892411 +0200 +++ /work/SRC/openSUSE:Factory/.fuzzel.new.29891/fuzzel.changes 2024-09-15 12:40:01.161594748 +0200 @@ -1,0 +2,18 @@ +Fri Sep 13 10:08:10 UTC 2024 - llyyr <[email protected]> + +- Update to 1.11.1: + - Added: + * New option --hide-before-typing for application launcher mode + hides the list until the first character is typed + - Changed: + * Logging no longer reports "aborted" if dmenu mode is called with + no input + - Fixed: + * Crash when the border size is larger than the border radius + * Regression: cursor not centered when using a custom line height + * Regression: selected background not rendered on top of the + regular background + * Regression: Supporting XDG_CONFIG_HOME as absolute path but not + relative should be supported + +------------------------------------------------------------------- Old: ---- fuzzel-1.11.0.tar.gz fuzzel-1.11.0.tar.gz.sig New: ---- fuzzel-1.11.1.tar.gz fuzzel-1.11.1.tar.gz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fuzzel.spec ++++++ --- /var/tmp/diff_new_pack.S9TQYx/_old 2024-09-15 12:40:01.621613913 +0200 +++ /var/tmp/diff_new_pack.S9TQYx/_new 2024-09-15 12:40:01.625614079 +0200 @@ -17,7 +17,7 @@ Name: fuzzel -Version: 1.11.0 +Version: 1.11.1 Release: 0 Summary: A Wayland-native application launcher, similar to rofi's drun mode License: MIT ++++++ fuzzel-1.11.0.tar.gz -> fuzzel-1.11.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuzzel-1.11.0/CHANGELOG.md new/fuzzel-1.11.1/CHANGELOG.md --- old/fuzzel-1.11.0/CHANGELOG.md 2024-09-09 06:29:45.000000000 +0200 +++ new/fuzzel-1.11.1/CHANGELOG.md 2024-09-13 08:35:36.000000000 +0200 @@ -1,5 +1,6 @@ # Changelog +* [1.11.1](#1-11-1) * [1.11.0](#1-11-0) * [1.10.2](#1-10-2) * [1.10.1](#1-10-1) @@ -26,6 +27,49 @@ * [1.4.1](#1-4-1) +## 1.11.1 + +### Added + +* New option `--hide-before-typing` for application launcher mode hides + the list until the first character is typed ([#351][351]) + + +### Changed + +* Logging no longer reports "aborted" if dmenu mode is called with no + input ([#406][406]). + + +### Fixed + +* Crash when the border size is larger than the border radius + ([#401][401]). +* Regression: cursor not centered when using a custom line height + ([#403][403]). +* Regression: selected background not rendered on top of the regular + background ([#405][405]). +* Regression: Supporting XDG_CUSTOM_HOME as absolute path but not relative + should be supported ([#408][408]) + +[351]: https://codeberg.org/dnkl/fuzzel/issues/351 +[401]: https://codeberg.org/dnkl/fuzzel/issues/401 +[403]: https://codeberg.org/dnkl/fuzzel/issues/403 +[405]: https://codeberg.org/dnkl/fuzzel/issues/405 +[406]: https://codeberg.org/dnkl/fuzzel/issues/406 +[408]: https://codeberg.org/dnkl/fuzzel/issues/408 + + +### Contributors + +* @ever +* @ingolemo +* @otaj +* @thoralf +* @tranzystorekk +* Mark Stosberg + + ## 1.11.0 ### Added @@ -89,6 +133,8 @@ * Support for pasting text into fuzzel. Both the regular clipboard, and the primary clipboard are supported. See the new `clipboard-paste` and `primary-paste` key bindings ([#200][200]). +* `hide-before-typing` command line and config option, hiding the + application list until the first letter is typed. ([#351][#351]). [344]: https://codeberg.org/dnkl/fuzzel/issues/344 [131]: https://codeberg.org/dnkl/fuzzel/issues/131 @@ -100,6 +146,7 @@ [188]: https://codeberg.org/dnkl/fuzzel/issues/188 [274]: https://codeberg.org/dnkl/fuzzel/issues/274 [200]: https://codeberg.org/dnkl/fuzzel/issues/200 +[351]: https://codeberg.org/dnkl/fuzzel/issues/351 ### Changed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuzzel-1.11.0/PKGBUILD new/fuzzel-1.11.1/PKGBUILD --- old/fuzzel-1.11.0/PKGBUILD 2024-09-09 06:29:45.000000000 +0200 +++ new/fuzzel-1.11.1/PKGBUILD 2024-09-13 08:35:36.000000000 +0200 @@ -3,7 +3,7 @@ SVG_BACKEND=librsvg # none|librsvg|nanosvg (librsvg force-enables cairo, nanosvg is bundled) pkgname=fuzzel -pkgver=1.11.0 +pkgver=1.11.1 pkgrel=1 pkgdesc="Simplistic application launcher for wayland" arch=('x86_64' 'aarch64') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuzzel-1.11.0/completions/fish/fuzzel.fish new/fuzzel-1.11.1/completions/fish/fuzzel.fish --- old/fuzzel-1.11.0/completions/fish/fuzzel.fish 2024-09-09 06:29:45.000000000 +0200 +++ new/fuzzel-1.11.1/completions/fish/fuzzel.fish 2024-09-13 08:35:36.000000000 +0200 @@ -18,6 +18,7 @@ complete -c fuzzel -x -s D -l dpi-aware -a "no yes auto" -d "scale fonts using the monitor's DPI (auto)" complete -c fuzzel -x -l icon-theme -a "(find /usr/share/icons -mindepth 1 -maxdepth 1 -type d -print0 | xargs -0 -n 1 basename | sort)" -d "icon theme name (hicolor)" complete -c fuzzel -s I -l no-icons -d "do not render any icons" +complete -c fuzzel -l hide-before-typing -d "hide application list until something is typed" complete -c fuzzel -x -s F -l fields -a "filename name generic exec categories keywords comment" -d "comma separated list of XDG Desktop entry fields to match" complete -c fuzzel -x -s p -l prompt -d "string to use as input prompt (\"> \")" complete -c fuzzel -x -l placeholder -d "placeholder text in input box" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuzzel-1.11.0/completions/zsh/_fuzzel new/fuzzel-1.11.1/completions/zsh/_fuzzel --- old/fuzzel-1.11.0/completions/zsh/_fuzzel 2024-09-09 06:29:45.000000000 +0200 +++ new/fuzzel-1.11.1/completions/zsh/_fuzzel 2024-09-13 08:35:36.000000000 +0200 @@ -13,6 +13,7 @@ '--use-bold[allow fuzzel to use bold fonts]' \ '--icon-theme[icon theme name (hicolor)]:theme:->icon_theme' \ '(-I --no-icons)'{-I,--no-icons}'[do not render any icons]' \ + '--hide-before-typing[hide application list until something is typed]' \ '(-F --fields)'{-F,--fields}'[comma separated list of XDG Desktop entry fields to match ]:fields:(filename name generic exec categories keywords comment)' \ '(-p --prompt)'{-p,--prompt}'[string to use as input prompt ("> ")]:()' \ '--placeholder[placeholder text in the input box]:()' \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuzzel-1.11.0/config.c new/fuzzel-1.11.1/config.c --- old/fuzzel-1.11.0/config.c 2024-09-09 06:29:45.000000000 +0200 +++ new/fuzzel-1.11.1/config.c 2024-09-13 08:35:36.000000000 +0200 @@ -188,7 +188,7 @@ /* First, check XDG_CONFIG_HOME (or .config, if unset) */ if (xdg_config_home != NULL && xdg_config_home[0] != '\0' && - xdg_config_home[0] != '/') { + xdg_config_home[0] == '/') { if (asprintf(&path, "%s/fuzzel/fuzzel.ini", xdg_config_home) < 0) { LOG_ERRNO("failed to build fuzzel.ini path"); goto done; @@ -814,6 +814,9 @@ else if (strcmp(key, "icons-enabled") == 0) return value_to_bool(ctx, &conf->icons_enabled); + else if (strcmp(key, "hide-before-typing") == 0) + return value_to_bool(ctx, &conf->hide_when_prompt_empty); + else if (strcmp(key, "list-executables-in-path") == 0) return value_to_bool(ctx, &conf->list_executables_in_path); @@ -1609,6 +1612,7 @@ .match_worker_count = sysconf(_SC_NPROCESSORS_ONLN), .icons_enabled = true, .icon_theme = strdup("hicolor"), + .hide_when_prompt_empty = false, .actions_enabled = false, .match_mode = MATCH_MODE_FZF, .sort_result = true, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuzzel-1.11.0/config.h new/fuzzel-1.11.1/config.h --- old/fuzzel-1.11.0/config.h 2024-09-09 06:29:45.000000000 +0200 +++ new/fuzzel-1.11.1/config.h 2024-09-13 08:35:36.000000000 +0200 @@ -126,6 +126,8 @@ bool icons_enabled; char *icon_theme; + bool hide_when_prompt_empty; + bool actions_enabled; struct config_key_binding_list key_bindings; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuzzel-1.11.0/dmenu.c new/fuzzel-1.11.1/dmenu.c --- old/fuzzel-1.11.0/dmenu.c 2024-09-09 06:29:45.000000000 +0200 +++ new/fuzzel-1.11.1/dmenu.c 2024-09-13 08:35:36.000000000 +0200 @@ -63,7 +63,7 @@ } if (fds[1].revents & (POLLIN | POLLHUP)) { - LOG_WARN("aborted"); + LOG_DBG("aborted"); break; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuzzel-1.11.0/doc/fuzzel.1.scd new/fuzzel-1.11.1/doc/fuzzel.1.scd --- old/fuzzel-1.11.0/doc/fuzzel.1.scd 2024-09-09 06:29:45.000000000 +0200 +++ new/fuzzel-1.11.1/doc/fuzzel.1.scd 2024-09-13 08:35:36.000000000 +0200 @@ -119,6 +119,9 @@ *-I*,*--no-icons* Do not render any icons. +*--hide-before-typing* + Hide application list until something is typed. + *-F*,*--fields*=_FIELDS_ Comma separated list of XDG Desktop entry fields to match against: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuzzel-1.11.0/doc/fuzzel.ini.5.scd new/fuzzel-1.11.1/doc/fuzzel.ini.5.scd --- old/fuzzel-1.11.0/doc/fuzzel.ini.5.scd 2024-09-09 06:29:45.000000000 +0200 +++ new/fuzzel-1.11.1/doc/fuzzel.ini.5.scd 2024-09-13 08:35:36.000000000 +0200 @@ -114,6 +114,11 @@ Boolean. When enabled, application icons (from the selected *icon-theme*) will be rendered. Default: _yes_. +*hide-before-typing* + Boolean. When enabled, application list will be hidden until the first + letter is typed. When the prompt is cleared again, the list will appear. + Default: _no_. + *fields* Comma separated list of XDG Desktop entry fields to match against. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuzzel-1.11.0/fuzzel.ini new/fuzzel-1.11.1/fuzzel.ini --- old/fuzzel-1.11.0/fuzzel.ini 2024-09-09 06:29:45.000000000 +0200 +++ new/fuzzel-1.11.1/fuzzel.ini 2024-09-13 08:35:36.000000000 +0200 @@ -6,6 +6,7 @@ # placeholder= # icon-theme=hicolor # icons-enabled=yes +# hide-before-typing=no # fields=filename,name,generic # password-character=* # filter-desktop=no diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuzzel-1.11.0/main.c new/fuzzel-1.11.1/main.c --- old/fuzzel-1.11.0/main.c 2024-09-09 06:29:45.000000000 +0200 +++ new/fuzzel-1.11.1/main.c 2024-09-13 08:35:36.000000000 +0200 @@ -330,6 +330,7 @@ " -D,--dpi-aware=no|yes|auto enable or disable DPI aware rendering (auto)\n" " --icon-theme=NAME icon theme name (\"hicolor\")\n" " -I,--no-icons do not render any icons\n" + " --hide-before-typing hide application list until something is typed\n" " -F,--fields=FIELDS comma separated list of XDG Desktop entry\n" " fields to match\n" " -p,--prompt=PROMPT string to use as input prompt (\"> \")\n" @@ -729,6 +730,7 @@ #define OPT_PLACEHOLDER_COLOR 292 #define OPT_SEARCH_TEXT 293 #define OPT_COUNTER 294 + #define OPT_HIDE_WHEN_PROMPT_EMPTY 295 static const struct option longopts[] = { {"config", required_argument, 0, OPT_CONFIG}, @@ -740,6 +742,7 @@ {"dpi-aware", required_argument, 0, 'D'}, {"icon-theme", required_argument, 0, OPT_ICON_THEME}, {"no-icons", no_argument, 0, 'I'}, + {"hide-before-typing", no_argument, 0, OPT_HIDE_WHEN_PROMPT_EMPTY}, {"fields", required_argument, 0, 'F'}, {"password", optional_argument, 0, OPT_PASSWORD}, {"anchor", required_argument, 0, 'a'}, @@ -817,6 +820,7 @@ bool dpi_aware_set:1; bool match_fields_set:1; bool icons_disabled_set:1; + bool hide_when_prompt_empty_set:1; bool anchor_set:1; bool x_margin_set : 1; bool y_margin_set : 1; @@ -943,6 +947,11 @@ cmdline_overrides.icons_disabled_set = true; break; + case OPT_HIDE_WHEN_PROMPT_EMPTY: + cmdline_overrides.conf.hide_when_prompt_empty = true; + cmdline_overrides.hide_when_prompt_empty_set = true; + break; + case 'F': { static const struct { const char *name; @@ -1679,6 +1688,8 @@ conf.match_fields = cmdline_overrides.conf.match_fields; if (cmdline_overrides.icons_disabled_set) conf.icons_enabled = cmdline_overrides.conf.icons_enabled; + if (cmdline_overrides.hide_when_prompt_empty_set) + conf.hide_when_prompt_empty = cmdline_overrides.conf.hide_when_prompt_empty; if (cmdline_overrides.anchor_set) conf.anchor = cmdline_overrides.conf.anchor; if (cmdline_overrides.x_margin_set) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuzzel-1.11.0/meson.build new/fuzzel-1.11.1/meson.build --- old/fuzzel-1.11.0/meson.build 2024-09-09 06:29:45.000000000 +0200 +++ new/fuzzel-1.11.1/meson.build 2024-09-13 08:35:36.000000000 +0200 @@ -1,5 +1,5 @@ project('fuzzel', 'c', - version: '1.11.0', + version: '1.11.1', license: 'MIT', meson_version: '>=0.58.0', default_options: [ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuzzel-1.11.0/render.c new/fuzzel-1.11.1/render.c --- old/fuzzel-1.11.0/render.c 2024-09-09 06:29:45.000000000 +0200 +++ new/fuzzel-1.11.1/render.c 2024-09-13 08:35:36.000000000 +0200 @@ -205,7 +205,7 @@ PIXMAN_OP_SRC, bg_img, &bg, brd_sz_scaled, brd_sz_scaled, w-(brd_sz_scaled*2), h-(brd_sz_scaled*2), - brd_rad_scaled - brd_sz_scaled); + max(brd_rad_scaled - brd_sz_scaled, 0)); if (msaa_scale != 1){ pixman_f_transform_t ftrans; @@ -245,6 +245,25 @@ } static int +render_baseline(const struct render *render) +{ + const struct fcft_font *font = render->font; + const int line_height = render->row_height; + const int font_height = font->ascent + font->descent; + + /* + * Center glyph on the line *if* using a custom line height, + * otherwise the baseline is simply 'descent' pixels above the + * bottom of the cell + */ + const int glyph_top_y = render->conf->line_height.px >= 0 + ? round((line_height - font_height) / 2.) + : 0; + + return line_height - glyph_top_y - font->descent; +} + +static int render_match_count(const struct render *render, struct buffer *buf, const struct prompt *prompt, const struct matches *matches) { @@ -350,25 +369,27 @@ } static void -render_cursor(const struct render *render, int x, int y, pixman_image_t *pix) +render_cursor(const struct render *render, int x, int baseline, pixman_image_t *pix) { struct fcft_font *font = render->font; if (true) { /* Bar cursor */ + const int height = min(font->ascent + font->descent, render->row_height); + pixman_image_fill_rectangles( PIXMAN_OP_SRC, pix, &render->pix_input_color, 1, &(pixman_rectangle16_t){ x, - render->border_size + render->y_margin, + baseline - render->font->ascent, font->underline.thickness, - min(font->ascent + font->descent, render->row_height)}); + height}); } else { /* TODO: future: underline cursor */ pixman_image_fill_rectangles( PIXMAN_OP_SRC, pix, &render->pix_input_color, 1, &(pixman_rectangle16_t){ - x, y - font->underline.position, + x, baseline - font->underline.position, font->max_advance.x, font->underline.thickness}); } @@ -402,8 +423,7 @@ ? render->subpixel : FCFT_SUBPIXEL_NONE; int x = render->border_size + render->x_margin; - int y = render->border_size + render->y_margin + - (render->row_height + font->height) / 2 - font->descent; + int y = render->border_size + render->y_margin + render_baseline(render); /* Erase background */ pixman_color_t bg = render->pix_background_color; @@ -906,11 +926,10 @@ static void render_match_entry_background(const struct render *render, - int idx, int row_count, bool is_selected, + int idx, int row_count, pixman_image_t *pix, int width) { - pixman_color_t bg = is_selected - ? render->pix_selection_color : render->pix_background_color; + pixman_color_t bg = render->pix_background_color; const int sel_margin = render->x_margin / 3; @@ -924,6 +943,23 @@ } static void +render_selected_match_entry_background(const struct render *render, + int idx, pixman_image_t *pix, int width) +{ + pixman_color_t bg = render->pix_selection_color; + + const int sel_margin = render->x_margin / 3; + + const int x = render->border_size + render->x_margin - sel_margin; + const int y = first_row_y(render) + idx * render->row_height; + const int w = width - 2 * (render->border_size + render->x_margin - sel_margin); + const int h = 1 * render->row_height; + + pixman_image_fill_rectangles( + PIXMAN_OP_OVER, pix, &bg, 1, &(pixman_rectangle16_t){x, y, w, h}); +} + +static void render_one_match_entry(const struct render *render, const struct matches *matches, const struct match *match, bool render_icons, int idx, bool is_selected, int width, int height, @@ -943,9 +979,11 @@ double cur_x = render->border_size + render->x_margin; double max_x = width - render->border_size - render->x_margin; - render_match_entry_background(render, idx, 1, is_selected, pix, width); + render_match_entry_background(render, idx, 1, pix, width); if (is_selected) { + render_selected_match_entry_background(render, idx, pix, width); + /* If currently selected item has a scalable icon, and if * there's "enough" free space, render a large representation * of the icon */ @@ -1019,7 +1057,7 @@ } } - const int y = first_row + (render->row_height + render->font->height) / 2 - render->font->descent + idx * render->row_height; + const int y = first_row + render_baseline(render) + idx * render->row_height; /* Application title */ render_match_text( @@ -1064,7 +1102,7 @@ /* Erase background of the "empty" area, after the last match */ render_match_entry_background( - render, match_count, render->conf->lines - match_count, false, + render, match_count, render->conf->lines - match_count, buf->pix[0], buf->width); for (size_t i = 0; i < match_count; i++) { @@ -1298,7 +1336,7 @@ const unsigned row_height = render->conf->line_height.px >= 0 ? pt_or_px_as_pixels(render, &render->conf->line_height) - : font->height; + : max(font->height, font->ascent + font->descent); const unsigned icon_height = max(0, row_height - font->descent); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fuzzel-1.11.0/wayland.c new/fuzzel-1.11.1/wayland.c --- old/fuzzel-1.11.0/wayland.c 2024-09-09 06:29:45.000000000 +0200 +++ new/fuzzel-1.11.1/wayland.c 2024-09-13 08:35:36.000000000 +0200 @@ -137,6 +137,7 @@ float dpi; enum fcft_subpixel subpixel; bool font_is_sized_by_dpi; + bool hide_when_prompt_empty; enum { KEEP_RUNNING, EXIT_UPDATE_CACHE, EXIT} status; int exit_code; @@ -2111,7 +2112,15 @@ /* Window content */ matches_lock(wayl->matches); render_prompt(wayl->render, buf, wayl->prompt, wayl->matches); + if (wayl->hide_when_prompt_empty) { + if (prompt_text(wayl->prompt)[0] != '\0') { + wayl->hide_when_prompt_empty = false; + } else { + goto skip_list; + } + } render_match_list(wayl->render, buf, wayl->prompt, wayl->matches); +skip_list: matches_unlock(wayl->matches); #if defined(FUZZEL_ENABLE_CAIRO) @@ -2331,6 +2340,7 @@ .render = render, .prompt = prompt, .matches = matches, + .hide_when_prompt_empty = conf->hide_when_prompt_empty, .status = KEEP_RUNNING, .exit_code = !conf->dmenu.enabled ? EXIT_SUCCESS : EXIT_FAILURE, .font_reloaded = {
