fuzzel.ini(5) | File Formats Manual | fuzzel.ini(5) |
NAME
fuzzel.ini - configuration file for fuzzel(1)
DESCRIPTION
fuzzel uses the standard unix configuration format, with section based key/value pairs. The default section is usually unnamed, i.e. not prefixed with a [section]. However it can also be explicitly named [main], say if it needs to be reopened after any of the other sections.
fuzzel will search for a configuration file in the following locations, in this order:
- XDG_CONFIG_HOME/fuzzel/fuzzel.ini (defaulting to ~/.config/fuzzel/fuzzel.ini if unset)
- XDG_CONFIG_DIRS/fuzzel/fuzzel.ini (defaulting to /etc/xdg/fuzzel/fuzzel.ini if unset)
An example configuration file containing all options with their default value commented out will usually be installed to /etc/xdg/fuzzel/fuzzel.ini.
SECTION: main
include
The import file has its own section scope. I.e. the including configuration is still in the default section after the include, regardless of which section the included file ends in.
- The path must be an absolute path, or start with ~/.
- Multiple include directives are allowed, but only one path per directive.
- Nested imports are allowed.
Default: not set.
namespace
Default: launcher
output
Example: DP-1
Default: Not set-- let the compositor choose output.
font
Examples:
- Dina:weight=bold:slant=italic
- Courier New:size=12
- Fantasque Sans Mono:fontfeatures=ss01
Default: monospace.
use-bold
dpi-aware
When set to yes, fonts are sized using the monitor's DPI, making a font of a given size have the same physical size, regardless of monitor.
In this mode, the monitor's scaling factor is ignored; doubling the scaling factor will not double the font size.
When set to no, the monitor's DPI is ignored. The font is instead sized using the monitor's scaling factor; doubling the scaling factor does double the font size.
Finally, if set to auto, fonts will be sized using the monitor's DPI if all monitors have a scaling factor of 1. If at least one monitor as a scaling factor larger than 1 (regardless of whether the fuzzel window is mapped on that monitor or not), fonts will be scaled using the scaling factor.
Note that this option typically does not work with bitmap fonts, which only contains a pre-defined set of sizes, and cannot be dynamically scaled. Whichever size (of the available ones) that best matches the DPI or scaling factor, will be used.
Also note that if the font size has been specified in pixels (:pixelsize=N, instead of :size=N), DPI scaling (dpi-aware=yes) will have no effect (the specified pixel size will be used as is). But, if the monitor's scaling factor is used to size the font (dpi-aware=no), the font's pixel size will be multiplied with the scaling factor.
Default: auto.
gamma-correct
Compared to the default (disabled), bright glyphs on a dark background will appear thicker, and dark glyphs on a light background will appear thinner.
FreeType can limit the effect of the latter, with a technique called stem darkening. It is only available for CFF fonts (OpenType, .otf) and disabled by default (in FreeType). You can enable it by setting the environment variable FREETYPE_PROPERTIES="cff:no-stem-darkening=0" before starting fuzzel.
Also be aware that many fonts have been developed on systems that do not do gamma-correct blending, and may therefore look thicker than intended when rendered with gamma-correct blending, since the font designer set the font weight based on incorrect rendering.
In order to represent colors faithfully, higher precision image buffers are required. For this reason, fuzzel uses 16-bit image buffers (instead of 8-bit) when gamma-correct blending is enabled.
It is not possible to enable gamma-correct blending in cairo enabled builds of fuzzel, since cairo does not support 16-bit image buffers.
placeholder
prompt
icon-theme
icons-enabled
hide-before-typing
fields
Even though fuzzel only displays the application names, matching can (and by default is) be done against other fields as well. Supported fields are:
- filename
- name
- generic
- exec
- categories
- keywords
- comment
"filename" is the ".desktop" file name.
Default: filename,name,generic.
password-character
match-mode
exact: what you type is matched exactly against each field in the fields list.
fzf: fzf-style matching, where substrings from what you have typed are matched against each field in the fields list.
fuzzy: levenshtein-based fuzzy matching of what you have typed against each field in the fields list.
Default: fzf
sort-result
Disabling this can improve search latency when searching very large data sets.
Default: yes
match-counter
Default: no.
filter-desktop
show-actions
terminal
The command may contain the placeholder {cmd} which will be replaced with the actual command to be run. When {cmd} is present, the command is only substituted in those locations and is not appended at the end.
Examples:
- foot -a '{cmd}' -T '{cmd}' {cmd} sets app-id and title to the command name, then executes it
- xterm -e {cmd} executes the command in xterm
- xterm -e (no {cmd}) uses old behavior: appends command after terminal args
Default: $TERMINAL -e.
list-executables-in-path
launch-prefix
anchor
- top-left
- top
- top-right
- left
- center
- right
- bottom-left
- bottom
- bottom-right
Default: center
x-margin
Note: this option has no effect when anchor=center, top or bottom.
y-margin
Note: this option has no effect when anchor=center, left or right.
lines
hide-prompt
minimal-lines
width
tabs
horizontal-pad
vertical-pad
inner-pad
image-size-ratio
line-height
letter-spacing
layer
top renders above normal windows, but typically below fullscreen windows and lock screens.
overlay renders on top of both normal windows and fullscreen windows. Note that the order is undefined if several windows use the same layer. Since e.g. lock screens typically use overlay, that means fuzzel may or may not appear on top of a lock screen.
Default: overlay
keyboard-focus
exclusive locks keyboard focus to fuzzel, receiving all keyboard input until closed.
on-demand makes fuzzel focus like a regular window, allowing other windows to take keyboard focus by e.g. clicking on them. By default switching keyboard focus will immediately close fuzzel, using exit-on-keyboard-focus-loss=no allows interacting with other windows while fuzzel is open.
Default: exclusive
exit-on-keyboard-focus-loss
Setting this to false can be useful on compositors where enabling "focus-follows-mouse" causes fuzzel to exit as soon as the mouse is moved over another window. Sway (<= 1.7) exhibits this behavior, for example.
Default: yes
render-workers
In case you have a ridiculous amount of cores and/or threads, consider limiting the number of render-workers, since fuzzel cannot parallelize more than the number of displayed entries.
match-workers
In case you have a ridiculous amount of cores and/or threads, consider limiting the number of match-workers, since fuzzel cannot parallelize more than the number of available entries.
delayed-filter-ms
delayed-filter-limit
scaling-filter
none, nearest and bilinear are the fastest options, but also have the worst looking results.
cubic, lanczos2, lanczos3 and lanczos3-stretched are the slowest options, with the best looking results.
box, and to some degree, linear, are in the middle, performance wise, while in most cases still being just as, or close to, as good as cubic and the lanczos filters.
Default: box
cache
auto-select
enable-mouse
SECTION: colors
All color values are in RGBA.
background
text
prompt
placeholder
input
match
selection
selection-text
selection-match
counter=HEX
border
SECTION: border
width
radius
selection-radius
SECTION: dmenu
mode
exit-immediately-if-empty
SECTION: key-bindings
This section lets you override the default key bindings.
The general format is action=combo1...comboN. That is, each action may have one or more key combinations, space separated. Each combination is in the form mod1+mod2+key. The names of the modifiers and the key must be valid XKB key names.
Note that if Shift is one of the modifiers, the key must not be in upper case. For example, Control+Shift+V will never trigger, but Control+Shift+v will.
Note that Alt is usually called Mod1.
xkbcli interactive-wayland can be useful for finding keysym names.
A key combination can only be mapped to one action. Lets say you want to bind Control+k to next. Since this is the default shortcut for delete-line-forward, you must unmap the default binding. This can be done by setting action=none; e.g. delete-line-forward=none.
cancel
execute
execute-or-next
execute-input
cursor-left
cursor-left-word
cursor-right
cursor-right-word
cursor-home
cursor-end
delete-input
delete-line-backward
delete-line-forward
delete-prev
delete-prev-word
delete-next
delete-next-word
delete-line-forward
delete-line
insert-selected
expunge
clipboard-paste
primary-paste
prev
prev-with-wrap
prev-page
next
next-with-wrap
next-page
first
last
custom-1, custom-2, ..., custom-19
Default:
- custom-1: Mod1+1
- custom-2: Mod1+2
- custom-3: Mod1+3
- custom-4: Mod1+4
- custom-5: Mod1+5
- custom-6: Mod1+6
- custom-7: Mod1+7
- custom-8: Mod1+8
- custom-9: Mod1+9
- custom-10: Mod1+10
- custom-11: Mod1+11
- custom-12: Mod1+12
- custom-13: Mod1+13
- custom-14: Mod1+14
- custom-15: Mod1+15
- custom-16: Mod1+16
- custom-17: Mod1+17
- custom-18: Mod1+18
- custom-19: Mod1+19
FONT CONFIG
Fontconfig uses a flexible string format for specifying fonts that allows you to define font families, styles, weights, and various properties. The basic syntax follows this pattern:
Common Properties:
- family - Font family name
- style - italic, oblique, roman
- weight - light, normal, bold, black (or numeric values 100-900)
- size - Point size
- slant - italic, oblique, roman
- width - condensed, normal, expanded
Fontconfig supports fallback fonts. You can specify multiple font families separated by commas. The fallback fonts are searched in the order they appear. If a glyph cannot be found in any of the fallback fonts, the dynamic fallback list from fontconfig (for the primary font) is searched. Ex:
Fontconfig always returns something unless you don't have any fonts installed, regardless of what font name you give it. You can check fonts that would be matched with `fc-match -s YourFontName`.
The font library Fuzzel uses, fcft, will search the explicit fallbacks whenever a glyph cannot be found in the primary font. When it cannot find a glyph in the explicit fallbacks, then it searches the fontconfig fallbacks of the first font in Fuzzel's list.
This design allows a custom fallback sequence as well as custom font options for each fallback.
SEE ALSO
2025-08-21 |