fnott(5)
π fnott(5) β configuration file π
β¨ NAME β¨
fnott β the config file bestie, aka where you tell fnott how to serve looks π
πΈ DESCRIPTION πΈ
okay so, fnott uses the standard unix config format: section-based key/value pairs, no cap. The default (global) section is unnamed β like, it has no [section] prefix, it's just vibing there at the top. But you can explicitly name it [main] if you want, say if you need to reopen it after any of the other sections. lowkey flexible of it.
fnott will go hunting for a config file in these locations, in this exact order:
XDG_CONFIG_HOME/fnott/fnott.ini(and if that env var is unset, it defaults to~/.config/fnott/fnott.ini)XDG_CONFIG_DIRS/fnott/fnott.ini(and if that's unset, it defaults to/etc/xdg/fnott/fnott.ini)
π SECTION: default π
Global options
outputβ which output to put your notifications on. If you leave it unspecified, the compositor picks one for us, king behavior.
β οΈ heads up bestie: if you don't specify an output, and the compositor's chosen output is scaled, then every new notification will flash a low-res frame before re-rendering at the correct scale factor. Why? Because fnott literally has no way of knowing the scale factor until after the notification has been mapped (i.e. shown). it's giving "mystery box" energy and not in a fun way π
Default: unspecified.
In Sway, you can run swaymsg -t get_outputs to get a list of available outputs. slay.
min-widthβ minimum notification width, in pixels. Default:0.max-widthβ maximum notification width, in pixels.0means unlimited. Note that fnott will automatically word-wrap the notification text if you set this to a non-zero value. Default:0.max-heightβ maximum notification height, in pixels.0means unlimited. Default:0.icon-themeβ the icon theme to use when a notification has requested a non-embedded icon. Default:default.max-icon-sizeβ maximum icon size, in pixels. Icons bigger than this get scaled down. A value of0disables icons entirely. Default:32.stacking-orderβ how to stack multiple notifications:bottom-up: oldest, highest priority furthest away from the anchor point.top-down: oldest, highest priority at the anchor point.
So like, if your notifications are anchored at the top, bottom-up puts the most recent notification in the upper corner, while the oldest one sits at the bottom of the stack. periodt.
Default: bottom-up.
anchorβ where notifications are positioned:top-left,top-right,bottom-left,bottom-rightorcenter. Default:top-right.edge-margin-verticalβ vertical margin, in pixels, between the screen edge (top or bottom, depending on the anchor pointer) and the notifications. Default:10.edge-margin-horizontalβ horizontal margin, in pixels, between the screen edge (left or right, depending on the anchor pointer) and the notifications. Default:10.notification-marginβ margin between notifications. Default:10.selection-helperβ the command (and optionally its arguments) to execute to display actions and let the user pick one to run.
The utility should accept (action) entries to display on stdin (newline separated), and write the selected entry on stdout.
π
it is strongly recommended that you enable selection-helper-uses-null-separator (see below), if your helper of choice supports it.
Default: dmenu.
selection-helper-uses-null-separatorβ Boolean. When enabled, the action strings passed to the selection helper will be NULL separated instead of newline separated.
Note that you may also have to adjust selection-helper, to make sure the selection helper parses the action strings correctly. For example, instead of fuzzel --dmenu, you'd have to use fuzzel --dmenu0. iykyk.
Default: no.
play-soundβ command to execute to play notification sounds.${filename}gets expanded to the path of the audio file to play. Default:aplay ${filename}.scaling-filterβ which scaling filter to use when scaling non-SVG notification images.
Possible values are:
nonenearestbilinearcubiclanczos3
none is the fastest but also looks the worst. lanczos3 produces the best result, but is also, by far, the slowest option. pick your fighter π₯
Default: lanczos3
Per-urgency default options π«
These options can also be specified in an urgency section, in which case they override whatever you set in the default section. cute, right?
layerβ layer on which notifications will appear:background,bottom,toporoverlay. Default:top.backgroundβ background color of the notification, in RGBA format. Default:3f5f3fff.border-colorβ border color of the notification, in RGBA format. Default:909090ff.border-radiusβ corner radius on the border, in pixels. Default:0.border-sizeβ border size, in pixels. Default:1.padding-verticalβ vertical padding, in pixels, between the notification edge (top or bottom) and the notification text. Default:20.padding-horizontalβ horizontal padding, in pixels, between the notification edge (left or right) and the notification text. Default:20.dpi-awareβ Boolean.
When set to yes, fonts are sized using the monitor's DPI, which makes 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.
π«Ά note that this option typically does not work with bitmap fonts, which only contain a pre-defined set of sizes and cannot be dynamically scaled. Whichever size (of the available ones) best matches the DPI or scaling factor will be used.
also note: if the font size was specified in pixels (:pixelsize=Ninstead of:size=N), DPI scaling (dpi-aware=yes) will have no effect β the specified pixel size is 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: no
title-fontβ font to use for the application title, in fontconfig format (see FONT FORMAT). Default:sans serif.title-colorβ text color to use for the application title, in RGBA format. Default:ffffffff.title-formatβ template string for the title portion of the notification (see FORMAT STRINGS). Default:<i>%a%A</i>.summary-fontβ font to use for the summary, in fontconfig format (see FONT FORMAT). Default:sans serif.summary-colorβ text color to use for the summary, in RGBA format. Default:ffffffff.summary-formatβ template string for the summary portion of the notification (see FORMAT STRINGS). Default:<b>%s\n</b>.body-fontβ font to use for the text body, in fontconfig format (see FONT FORMAT). Default:sans serif.body-colorβ text color to use for the text body, in RGBA format. Default:ffffffff.body-formatβ template string for the body portion of the notification (see FORMAT STRINGS). Default:%b.progress-bar-heightβ height, in pixels, of progress bars (rendered when a notification has anint:valuehint). Default:20.progress-colorβ color, in RGBA format, of the progress indicator. Default:ffffffff.progress-styleβ defines the style of the progress indicator in notifications.
Possible values:
bar: displays a separate progress bar.background: fills the notification background with the progress color.
Default: bar.
max-timeoutβ time limit, in seconds, before notifications are automatically dismissed. Applications can provide their own timeout when they create a notification, and this option lets you cap that timeout. A value of0disables the limit. Default:0.default-timeoutβ time, in seconds, before notifications are automatically dismissed if the notifying application doesn't specify a timeout. A value of0disables the timeout β meaning if the application doesn't provide a timeout, the notification is never automatically dismissed (unlessmax-timeouthas been set). Default:0.idle-timeoutβ time, in seconds, that you must be idle to prevent any notification from being dismissed. A value of0disables the timeout. Default:0.sound-fileβ absolute path to the audio file to play when a notification is received. If unset, no sound is played. Default: unset.iconβ icon to use when none is provided by the notifications themselves. Can be either an absolute path, or a name (without extension).
In the latter case, it'll be searched for in the selected icon theme, using the fallback rules defined by the XDG icon theme specification.
Default: unset.
π SECTION: low π
This section lets you override the options listed under per-urgency default options for low priority notifications.
By default, the following options are already overridden:
background:2b2b2bfftitle-color888888ffsummary-color:888888ffbody-color:888888ff
π¦ SECTION: normal π¦
This section lets you override the options listed under per-urgency default options for normal priority notifications.
By default, the following options are already overridden: none. yeah, it's a blank slate bestie β¨
π₯ SECTION: critical π₯
This section lets you override the options listed under per-urgency default options for critical priority notifications.
By default, the following options are already overridden:
background:6c3333ff
π FONT FORMAT π
The font is specified in FontConfig syntax. That is, a colon-separated list of font name and font options.
Examples:
Dina:weight=bold:slant=italicCourier New:size=12
π FORMAT STRINGS π
Okay bestie, this is the part where you get to customize the vibe of your notifications β¨. The title-format, summary-format and body-format options let you decide exactly what shows up in each lil' portion of the notification. Main character energy for your notifs, fr fr π.
They're strings with placeholders in them, and those placeholders get expanded with attributes straight from the notification itself π:
%aβ the application name π%sβ the notification summary%bβ the notification body text%Aβ the action indicator (it's literally a'*'if actions are present, and an empty string otherwise π)%%β a literal'%'\nβ a literal newline
And there's markup too, because obviously π. These tags are also supported:
<b>β bold π₯<i>β italic π¦<u>β underline β¨
No cap, that's the whole format language. Simple, iconic, we ate π .
π SEE ALSO π
fnott(1)β go read the big one too, bestie π«Ά
That's the whole page, and that's a wrap on fnott(5) πΈ β shoutout to the source, fnott 5, dated 2025-08-21. Love that for us. Go format some strings, you gorgeous genius ππβ¨
π¦ where this page comes from
- ubuntu resolute: fnott 1.8.0+ds-1 Β· MIT
- ubuntu stonking: fnott 1.8.0+ds-1 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms