Fuzzel 1.13 adds new features for menu building and usability

Fuzzel 1.13 adds new features for menu building and usability
Fuzzel now has the option to hide the prompt and input line.

Fuzzel, a popular Linux app-launcher and menu building tool on Linux has recently released version 1.13.

While Fuzzel may be best known as an app launcher, it's a popular choice for building little menus. See What's Fuzzel Good For? for examples.

In the 1.12 and 1.13 releases, several more options were added help build menus. Here are some highlights and examples:

--select-index=INDEX

Pre-select the entry with the index value. Example uses:

  • For a clipboard manager, to pre-select the second entry instead of the first
  • For a window switcher, to select the second-most-current window.

Fuzzel already supports the --index flag for returning the index of a result instead of the value– another useful option for utilities.

--with-nth / --accept-nth

An alternative to using parallel data structures and --index is pass in rows tab-separated data and use these flags to display and return different columns. --with-nth selects one or more columns to display. While --accept-nth selects one or more columns to return. You could imagine picking from a tab-separated file of emoji data, with symbols, names and descriptions. Maybe you want to display the first two columns and return the second.

A future version may also support a third option to select which columns to match against. For example, maybe you want to match against emoji descriptions, but not display them– emoji pickers on phone keyboards can work like that.

--auto-select

When one option is left, automatically select it. For example, a simple a simple Yes/No menu where typing any character in Yes/No selects it.

➤ echo -e "👍 Yes\n👎 No" | ./build/fuzzel --dmenu --minimal-lines --auto-select --hide-prompt --width=7

--hide-prompt

Minimalists and menu-builders rejoice! Now there's an option to hide the prompt and input line. This is useful for touchscreen or mouse-driven menus. It can also be used for a minimal design aesthetic, as the while the prompt is hidden, typing to filter to still works. Suitable for simple menus.

--minimal-lines

If you are building a little menu that may produce between two to ten lines to select from, it's a chore to calculate how many lines to display. With --minimal-lines, Fuzzel will display a maximum of lines set in your config file, but if the actual input has fewer lines, the number of lines of input will be used instead.

--selection-radius

Now you can round the corners of the selection for a more button-like look to the selection.

echo -e '⏻ Power Off\n󰜉 Restart' | fuzzel --hide-prompt --minimal-lines --dmenu --width 11 --selection-radius=6 
Screenshot of menu that shows Power Off and Restart. No input bar is visible
Menu example that shows off --selection-radius, --minimal-lines and --hide-prompt

Fallback icons in dmenu mode

Fuzzel has had the ability to display icons in dmenu mode for a while. Now there's the option for fallback icons in dmenu mode. If the primary icon is not found, another can be used instead. For example, try a Firefox icon and if not found, return a web browser icon.

Usability Features in Fuzzel

Besides menu-building features, this release of update added a number of details that improve usability:

  • Touchscreen support, including making scrolling line-by-line instead of page-by-page.
  • For hardcore keyboard users, Fuzzel added the ability to disable mouse support with enable-mouse=no in config file or --no-mouse CLI option
  • When launching terminal apps, you can now set the title and app_id. This plays better with other window switching and management tools which may use these. See terminal entry in man fuzzel.ini for details.
  • You can now set a Wayland namespace with --namespace. Useful in combination with other utilities that match against this. As example, both Hyprland and Swayfx have eyecandy options to match against namespaces.
  • And finally, long inputs now scroll side-to-side. Useful if you paste in a long URL and then want to scroll to the right side of it to edit it.
0:00
/0:25

Demo of Fuzzel running with touchscreen support on SXMO on a phone!

In progress

  • Gamma-correct blending, has been added. In 1.13 this only works with if the "nanosvg" SVG render is selected at compile time. These builds options are NOT the default in a number of Linux distros because the default renderer has more complete SVG support. Already since 1.13, another SVG rendering option has landed, "resvg" that supports both gamma-correct blending like nanosvg and has great SVG support like librsvg. Win-win!
  • Performance: Some edge cases with for people who had huge PNG icons or many directories to search are now faster.

What's next for Fuzzel?

Be on the lookout: There are a number of draft features that may get merged into a future version of Fuzzel including: