LinuxCommandLibrary

fuzzel

Launch applications using a fuzzy finder

TLDR

Run applications

$ fuzzel
copy

Run fuzzel in dmenu mode
$ fuzzel [[-d|--dmenu]]
copy

Display a menu of the output of the ls command
$ [ls] | fuzzel [[-d|--dmenu]]
copy

Display a menu with custom items separated by a new line (\n)
$ echo -e "[red]\n[green]\n[blue]" | fuzzel [[-d|--dmenu]]
copy

Let the user choose between multiple items and save the selected one to a file
$ echo -e "[red]\n[green]\n[blue]" | fuzzel [[-d|--dmenu]] > [color.txt]
copy

Reset apps usage count (default cache directory: $XDG_CACHE_HOME/fuzzel)
$ rm [[-v|--verbose]] $HOME/.cache/fuzzel
copy

Launch fuzzel on a specific monitor, see wlr-randr or swaymsg --type get_outputs
$ fuzzel [[-o|--output]] "[DP-1]"
copy

Use fuzzel to do an online search
$ fuzzel [[-d|--dmenu]] [[-l|--lines]] 0 --placeholder "[Type your search]" | sed 's/^/\"/g;s/$/\"/g' | xargs firefox --search
copy

SYNOPSIS

fuzzel [OPTION…]

PARAMETERS

--help
    Show help message and exit

--version
    Print version information

--dmenu
    Enable dmenu compatibility mode (read from stdin, write to stdout)

--prompt=STRING
    Set prompt text (default: >)

--lines=LINES
    Maximum number of lines to display (default: 15)

--width=WIDTH
    Window width as fraction (0.0-1.0) or pixels (default: 50)

--height=HEIGHT
    Window height fraction (0.0-1.0, default: 0.20)

--font=FONT
    X11 font string (e.g., 'Fira Code:12')

--icon-theme=THEME
    Icon theme name (default: from XDG)

--icon-size=SIZE
    Icon size in pixels (default: 32)

--no-fuzzy
    Disable fuzzy matching (use prefix only)

--fuzzy-threshold=THRESHOLD
    Minimum fuzzy match score (0.0-1.0, default: 0.0)

--bg-color=COLOR
    Background color (e.g., #rrggbbaa)

--fg-color=COLOR
    Foreground/text color

--selection-bg-color=COLOR
    Selected item background color

--selection-fg-color=COLOR
    Selected item text color

--border-color=COLOR
    Window border color

--border-width=WIDTH
    Border width in pixels (default: 2)

--padding-horizontal=PX
    Horizontal padding (default: 10)

--padding-vertical=PX
    Vertical padding (default: 10)

--line-height=HEIGHT
    Line height multiplier (default: 1.0)

--show-actions
    Show application actions

--terminal=COMMAND
    Terminal to use for non-GUI apps

--no-hidden
    Hide desktop entries with NoDisplay=true

--log-level=LEVEL
    Logging verbosity (error|warn|info|debug)

DESCRIPTION

Fuzzel is a lightweight, fast fuzzy finder and application launcher designed specifically for Wayland compositors like Sway, Hyprland, and River.

It provides an efficient way to search and execute applications, commands, or scripts using fuzzy string matching, which ranks results based on relevance rather than strict prefixes. Users type to filter a list of desktop entries from $XDG_DATA_DIRS/applications, with support for icons via icon themes.

Key strengths include seamless Wayland integration (no XWayland needed), customizable styling through a simple INI config file, and compatibility with dmenu protocols for scripting. It displays as a centered, resizable window with smooth keyboard navigation: arrow keys or j/k for selection, Enter to run, Escape or Ctrl+G to exit.

Fuzzel supports multiple modes: default launcher, dmenu (stdin input/output), query mode for custom lists, and stdin-lines for multi-line input. Performance is optimized for large entry lists, making it ideal for minimalistic Wayland setups. Unlike rofi or wofi, fuzzel's matching algorithm is particularly snappy and tunable via options like --no-fuzzy or match thresholds.

Configuration allows fine-tuning fonts, colors, padding, line spacing, and behaviors like hiding hidden apps (--no-hidden). It's script-friendly, outputting selected entry details in dmenu mode for easy parsing.

CAVEATS

Wayland-only; requires layer-shell protocol support in compositor. No mouse support by default. Config changes require restart.

CONFIGURATION

Uses ~/.config/fuzzel/fuzzel.ini for persistent settings like colors, fonts, and keybinds. Supports [main] section and overrides.

KEYBINDINGS

Customizable via config: default up/down/tab/shift+tab for nav, ctrl+r to reload entries, ctrl+shift+space for history.

INPUT MODES

--dmenu: pipe-driven scripts.
stdin: custom lists.
Launch with fuzzel --dmenu for compatibility.

HISTORY

Developed by Simon Ser (emersion) starting 2020 for Sway/Wayland ecosystem. Initial release 1.0 in 2021; now at 1.10+ with ongoing features like better theming and Hyprland support.

SEE ALSO

dmenu(1), rofi(1), wofi(1), bemenu(1)

Copied to clipboard