mako - configuration file
The config file is located at ~/.config/mako/config or at
$XDG_CONFIG_HOME/mako/config. Option lines can be specified to
configure mako like so:
key=value
Empty lines and lines that begin with # are ignored.
max-history=n
Set maximum number of expired notifications to keep in
the history buffer to
n. If the buffer is full, newly expired
notifications replace the oldest ones. If 0, history is disabled.
Default: 5
sort=+/-time | +/-priority
Sorts incoming notifications by time and/or priority in
ascending(+) or descending(-) order.
Default: -time
Bindings allow one to perform an action when an event is
triggered. Supported values are none, dismiss,
dismiss-all, dismiss-group, invoke-default-action and
exec <command>.
on-button-left=action
Default: invoke-default-action
on-button-middle=action
Default: none
on-button-right=action
Default: dismiss
on-touch=action
Default: dismiss
on-notify = action
Default: none
When exec is used, the command will be executed in a POSIX
shell. The shell variable id will be set to the notification ID. For
example, the following option will display an interactive action menu on
middle click:
on-button-middle=exec makoctl menu -n "$id" dmenu -p 'Select action: '
The following option will play a sound when a new notification is
opened:
on-notify=exec mpv /usr/share/sounds/freedesktop/stereo/message.oga
font=font
Set font to
font, in Pango format.
Default: monospace 10
background-color=color
Set background color to
color. See
COLORS
for more information.
Default: #285577FF
text-color=color
Set text color to
color. See
COLORS for
more information.
Default: #FFFFFFFF
width=px
Set width of notification popups.
Default: 300
height=px
Set maximum height of notification popups. Notifications
whose text takes up less space are shrunk to fit.
Default: 100
outer-margin=directional
Set outer-margin of each edge to the size specified by
directional. See
DIRECTIONAL VALUES for more information. This
margin applies to the outside of the whole notification list.
Default: 0
margin=directional
Set margin of each edge to the size specified by
directional. See
DIRECTIONAL VALUES for more information. This
margin applies to each individual notification. Note that it applies in
addition to outer-margin, meaning first and last notifications will use the
sum of both margins.
Default: 10
padding=directional
Set padding on each side to the size specified by
directional. See
DIRECTIONAL VALUES for more information.
Default: 5
border-size=px
Set popup border size to
px pixels.
Default: 2
border-color=color
Set popup border color to
color. See
COLORS
for more information.
Default: #4C7899FF
border-radius=px
Set popup corner radius to
px pixels.
Default: 0
progress-color=[over|source] color
Set popup progress indicator color to
color. See
COLOR for more information. To draw the progress indicator on top of
the background color, use the
over attribute. To replace the background
color, use the
source attribute (this can be useful when the
notification is semi-transparent).
Progress can be indicated in a notification by setting a hint,
"value" to an integer between 0 and 100 inclusive.
Default: over #5588AAFF
icons=0|1
Show icons in notifications.
Default: 1
max-icon-size=px
Set maximum icon size to
px pixels.
Default: 64
icon-path=path[:path...]
Paths to search for icons when a notification specifies a
name instead of a full path. Colon-delimited. This approximates the search
algorithm used by the XDG Icon Theme Specification, but does not support any
of the theme metadata. Therefore, if you want to search parent themes, you'll
need to add them to the path manually.
The path should be the root of the icon theme, the categories and
resolutions will be searched for the most appropriate match.
/usr/share/icons/hicolor and /usr/share/pixmaps are always
searched.
Default: ""
icon-location=position
Position of the icon relative to the displayed text.
Valid options are
left,
right,
top and
bottom.
Default: left
markup=0|1
If 1, enable Pango markup. If 0, disable Pango markup. If
enabled, Pango markup will be interpreted in your format specifier and in the
body of notifications.
Default: 1
actions=0|1
Applications may request an action to be associated with
activating a notification. Disabling this will cause mako to ignore these
requests.
Default: 1
history=0|1
If set, mako will save notifications that have reached
their timeout into the history buffer instead of immediately deleting them.
max-history determines the size of the history buffer.
Default: 1
format=format
Set notification format string to
format. See
FORMAT SPECIFIERS for more information. To change this for grouped
notifications, set it within a
grouped criteria.
Default: <b>%s</b>\n%b
Default when grouped: (%g) <b>%s</b>\n%b
text-alignment=left|center|right
Set notification text alignment.
Default: left
default-timeout=timeout
Set the default timeout to
timeout in
milliseconds. To disable the timeout, set it to zero.
Default: 0
ignore-timeout=0|1
If set, mako will ignore the expire timeout sent by
notifications and use the one provided by
default-timeout instead.
Default: 0
group-by=field[,field,...]
A comma-separated list of criteria fields that will be
compared to other visible notifications to determine if this one should form a
group with them. All listed criteria must be exactly equal for two
notifications to group.
Default: none
max-visible=n
Set maximum number of visible notifications to
n.
Older notifications will be hidden. If -1, all notifications are visible.
Default: 5
output=name
Show notifications on the specified output. If empty,
notifications will appear on the focused output.
Requires the compositor to support the Wayland protocol
xdg-output-unstable-v1 version 2.
Default: ""
layer=layer
Arrange mako at the specified layer, relative to normal
windows. Supported values are
background,
bottom,
top,
and
overlay. Using
overlay will cause notifications to be
displayed above fullscreen windows, though this may also occur at
top
depending on your compositor.
Default: top
anchor=position
Show notifications at the specified position on the
output. Supported values are
top-right,
top-center,
top-left,
bottom-right,
bottom-center,
bottom-left,
center-right,
center-left and
center.
Default: top-right
In addition to the set of options at the top of the file, the
config file may contain zero or more sections, each containing any
combination of the BINDING OPTIONS and STYLE OPTIONS. The
sections, called criteria, are defined with an INI-like square bracket
syntax. The brackets may contain any number of fields, like so:
[field=value field2=value2 ...]
When a notification is received, it will be compared to the fields
defined in each criteria. If all of the fields match, the style options
within will be applied to the notification. Fields not included in the
criteria are not considered during the match. A notification may match any
number of criteria. This matching occurs in the order the criteria are
defined in the config file, meaning that if multiple criteria match a
notification, the last occurrence of any given style option will
"win".
The following fields are available in criteria:
•app-name (string)
•app-icon (string)
•
summary (string)
•An exact match on the summary of the
notification.
•This field conflicts with summary~.
•
summary~ (string)
•A POSIX extended regular expression match on the
summary of the notification.
•This field conflicts with summary.
•
body (string)
•An exact match on the body of the
notification.
•This field conflicts with body~.
•
body~ (string)
•A POSIX extended regular expression match on the
body of the
notification.
•This field conflicts with body.
•urgency (one of "low",
"normal", "critical")
•category (string)
•desktop-entry (string)
•actionable (boolean)
•expiring (boolean)
•
mode (string)
•Only apply style options in this section if the
provided mode is currently enabled. For more information about modes, see the
MODES section.
The following fields are also available to match on a second pass
based on where previous style options decided to place each
notification:
•
grouped (boolean)
•Whether the notification is grouped with any
others (its group-index is not -1).
•
group-index (int)
•The notification's index within its group, or -1
if it is not grouped.
•
hidden (boolean)
•hidden is special, it defines the style
for the placeholder shown when the number of notifications or groups exceeds
max-visible.
•
output (string)
- Which output the notification was sorted onto. See the output style
option for possible values.
•
anchor (string)
•Which position on the output the notification was
assigned to. See the
anchor style option for possible values.
There are only two passes performed on each notification, so the
second-pass criteria are not allowed to reposition the notification.
If a field's value contains special characters, they may be
escaped with a backslash, or quoted:
[app-name="Google Chrome"]
[app-name=Google\ Chrome]
Quotes within quotes may also be escaped, and a literal backslash
may be specified as \\. No spaces are allowed around the equal sign.
Escaping equal signs within values is unnecessary.
Additionally, boolean values may be specified using any of
true/false, 0/1, or as bare words:
[actionable=true] [actionable=1] [actionable]
[actionable=false] [actionable=0] [!actionable]
There are three criteria always present at the front of the
list:
•An empty criteria which matches all notifications
and contains the defaults for all style options, overwritten with any
configured in the global section.
•[grouped], which sets the default format
for grouped notifications and sets them invisible.
•[group-index=0], which makes the first member of
each group visible again.
These options can be overridden by simply defining the criteria
yourself and overriding them.
There are some rules restricting what can be configured depending
on what is being matched by a given criteria:
•Criteria matching
grouped or
group-index are not allowed to change the
anchor,
output,
or
group-by, as this would invalidate the grouping. Grouping is only
performed once rather than recursively, to avoid the potential for infinite
loops.
Some style options are not useful in the global context and
therefore have no associated command-line option.
invisible=0|1
Whether this notification should be invisible even if it
is above the
max-visible cutoff. This is used primarily for hiding
members of groups. If you want to make more than the first group member
visible, turn this option off within a
group-index criteria.
Default: 0
Colors can be specified as #RRGGBB or #RRGGBBAA.
Some options set values that affect all four edges of a
notification. These options can be specified in several different ways,
depending on how much control over each edge is desired:
•A single value will apply to all four
edges.
•Two values will set vertical and horizontal edges
separately.
•Three will set top, horizontal, and bottom edges
separately.
•Four will set top, right, bottom, and left edges
separately.
When specifying multiple values, they should be comma-separated.
For example, this would set the top margin to 10, left and right to 20, and
bottom to five:
Format specification works similarly to printf(3), but with
a different set of specifiers.
%% Literal "%"
\\ Literal "\"
\n New Line
%a Application name
%s Notification summary
%b Notification body
%g Number of notifications in the current group
%i Notification id
%h Number of hidden notifications
%t Total number of notifications
mako supports applying style options conditionally via modes. A
configuration section with a mode criteria will only be applied if
the current mode matches. makoctl(1) can be used to change the
current mode.
The initial list of modes contains a single mode called
"default". This is deprecated, in a future version the initial
list of modes will be empty.
For example, to hide all notifications if the mode
"do-not-disturb" is enabled:
[mode=do-not-disturb]
invisible=1
makoctl mode -a do-not-disturb will hide all notifications,
makoctl mode -r do-not-disturb will show them again.
Maintained by Simon Ser <contact@emersion.fr>, who is
assisted by other open-source contributors. For more information about mako
development, see https://github.com/emersion/mako.