Skip to content

Fuzzel

Raffi can hand its list of entries to Fuzzel and let Fuzzel draw the menu. This is a legacy option kept for setups that already rely on it. Fuzzel shows your apps and entries with their icons and descriptions, and Raffi runs whatever you pick.

Fuzzel listing Raffi entries
Terminal window
raffi -u fuzzel

Fuzzel needs to be installed and in your PATH:

Terminal window
# Arch Linux
sudo pacman -S fuzzel
# Debian and Ubuntu
sudo apt install fuzzel
# Fedora
sudo dnf install fuzzel

Fuzzel only shows a flat list, so everything that needs Raffi’s own window is left out:

  • the addons (calculator, file browser, clipboard history, passwords, Slack and the rest)
  • the preview pane, keyword help and keyboard shortcuts
  • themes, opacity and font settings from raffi.yaml
  • main_view and fallbacks, which Raffi ignores with a warning
  • entries that use alias, which are hidden

The standard build always opens Raffi’s own window, even when Fuzzel is installed. Fuzzel is used only when you ask for it, or when you run a Fuzzel-only build.

If Fuzzel is all you need, you can use a much smaller binary that leaves out Raffi’s window and its addons. Linux x86_64 releases include one as raffi-fuzzel-only_<version>_Linux_x86_64.tar.gz. To build it yourself:

Terminal window
cargo build --release --no-default-features

This build starts Fuzzel by default. It stops with an error when Fuzzel is missing, or when your config sets main_view or fallbacks, since Fuzzel can’t show them. Pass -u fuzzel or set ui_type: fuzzel to start it anyway and ignore those settings. The build also skips config checking: --check-config is unavailable and unknown keys in your config produce no warning. Add --features config-validation to the build command to keep the checks.

A minimal raffi.yaml for Fuzzel:

general:
ui_type: fuzzel
no_icons: true

Fuzzel reads its look from ~/.config/fuzzel/fuzzel.ini, and Raffi’s theme settings have no effect on it. The fuzzel.ini manual lists every option. This example works well with Raffi:

dpi-aware=yes
font=RobotoMonoNerdFont-Thin:size=16
terminal=kitty
width=50
layer=overlay
exit-on-keyboard-focus-loss=no
inner-pad=15
fields=filename,name
[colors]
background=282a36ff
text=f8f8f2ff
match=8be9fdff
selection-match=8be9fdff
selection=44475add
selection-text=f8f8f2ff
border=bd93f9ff
OptionEffectExample
dpi-awareScale with the screen’s DPIyes or no
fontFont family and sizeRobotoMonoNerdFont-Thin:size=16
terminalTerminal for entries that run in onekitty, alacritty, foot
widthWidth in characters50
layerWayland layer to draw onoverlay, top
exit-on-keyboard-focus-lossClose when another window takes focusyes or no
inner-padPadding inside the window, in pixels15
fieldsFields that searching matchesfilename,name

Colors go in the [colors] section as 8-digit hex values (RRGGBBAA):

OptionColors
backgroundWindow background
textText
matchMatched characters
selectionSelected row background
selection-textSelected row text
selection-matchMatched characters in the selected row
borderWindow border

The example above uses Dracula. Swap in one of these [colors] sections for another look.

[colors]
background=1e1e2eff
text=cdd6f4ff
match=89b4faff
selection=45475aff
selection-text=cdd6f4ff
selection-match=89dcebff
border=b4befeff