canido.dev
Projects/emersion / mako

mako

A lightweight notification daemon for Wayland

Get it on GitHub
Unclaimed

Built by @emersion on GitHub. This page was written by @iluxav from public sources, last updated for v1.11.0 (2026-03-26), and may lag behind new releases.

Maintain mako? Claim it
v1.11.0 / 2026-03-2611 things you can do4 changes to know before upgradingFollow (Atom feed)

Show desktop notifications on Wayland, style them per app or urgency, keep a history, and dismiss or act on them from the command line.

What you can do with it

Show desktop notifications from apps as popups on a Wayland desktop.

Good to know

Needs a compositor with the layer-shell protocol, such as Sway or Hyprland.

Present at v1.4

Style or hide notifications differently by app, urgency or other fields.

Present at v1.4

Group notifications that share fields, such as the same app, into one popup.

Present at v1.4

Show app icons and images sent with notifications.

Good to know

Needs gdk-pixbuf at build time.

Present at v1.4

Dismiss notifications, list them, invoke their actions and reload the config from the command line.

Present at v1.4

Load the configuration from a file you choose.

Since v1.4.1

Restore notifications that expired or were dismissed.

Since v1.5

Choose what left, middle and right clicks or a touch do on a notification.

Since v1.5
Show all 11

Switch between modes such as do-not-disturb that change or hide notifications.

Since v1.6

Replace a script's previous notification instead of stacking a new one, such as a volume indicator.

Since v1.6

Include other config files from the main config.

Good to know

The path must be absolute or start with ~/.

Since v1.10.0

Before you upgrade

Newest first
v1.10.02025-03-16

makoctl list and history now print human-readable text; scripts that parsed their JSON must call busctl directly instead.

Action requiredAffects: Scripts and status bars that read makoctl list or makoctl history output
Read the evidence
Release history 9
v1.11.02026-03-26

Get the notification list and history as JSON again for scripts.

Details

makoctl list -j and makoctl history -j print JSON. New Notifications D-Bus property with a change signal. Ships an OpenRC user init script.

Also: The '(n more)' notification now respects invisible=1; several crash fixes.

v1.11.0.

Improved: Dismiss notifications, list them, invoke their acti…

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v1.10.02025-03-16

Split the mako config into several files with include.

Details

New include=<path> directive, per-edge border-size, icon-border-radius. makoctl was rewritten in C: list and history now print human-readable text instead of JSON, and busctl and jq are no longer needed. makoctl set-mode is gone. New Modes D-Bus property.

v1.10.0.

Added: Include other config files from the main config.Improved: Show desktop notifications from apps as popups on a…Action required: Dismiss notifications, list them, invoke their acti…Action required / inferred: Switch between modes such as do-not-disturb that ch…

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v1.9.02024-05-12

Toggle do-not-disturb with one command bound to a key.

Details

makoctl mode -t <name> toggles a mode. makoctl dismiss --no-history (and the dismiss --no-history binding action) skips history. Supports the cursor-shape-v1 protocol.

v1.9.0; building needs wayland-scanner 1.14.91 or newer.

Improved: Switch between modes such as do-not-disturb that ch…Improved: Restore notifications that expired or were dismisse…

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v1.8.02023-06-01

List the notifications you already dismissed from the command line.

Details

New makoctl history. makoctl invoke takes an action name, and makoctl list shows desktop-entry and urgency.

v1.8.0.

Improved: Restore notifications that expired or were dismisse…Improved: Dismiss notifications, list them, invoke their acti…

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v1.7.12022-07-06

Keep several modes active at once and add or remove them one by one.

Correction: Only the makoctl set-mode command was deprecated (removed in v1.10.0); modes and do-not-disturb remain supported through makoctl mode.

Correction: Retyped from deprecated: only the makoctl set-mode command was deprecated; modes and do-not-disturb still work through makoctl mode.

Details

makoctl mode lists active modes; mode -s replaces them, -a and -r add and remove one. makoctl set-mode is deprecated. New outer-margin option and HiDPI cursors. Groups v1.7 and v1.7.1.

v1.7.1; the AppArmor profile is no longer shipped.

Improved: Switch between modes such as do-not-disturb that ch…Behavior changed: Switch between modes such as do-not-disturb that ch…

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v1.62021-07-11

Turn on a do-not-disturb mode that hides notifications until you switch it off.

Details

Modes: [mode=name] criteria apply only when that mode is active, switched with makoctl set-mode. New exec <command> binding action and on-notify binding, for example to play a sound. Synchronous hints let a script replace its earlier notification.

v1.6.

Added: Switch between modes such as do-not-disturb that ch…Improved: Choose what left, middle and right clicks or a touc…Added / inferred: Replace a script's previous notification instead of…

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v1.52021-05-03

Bring back notifications you dismissed or that expired.

Details

Expired and dismissed notifications go to a history buffer (history, max-history) that makoctl restore brings back. New on-button-left/middle/right and on-touch bindings, regex criteria for summary and body, icon-location, text-alignment, and anchor/output criteria so notifications can go to different screens and edges. makoctl takes -n <id>, and dismiss -g dismisses a group.

v1.5; can build with basu instead of systemd or elogind.

Added: Restore notifications that expired or were dismisse…Added: Choose what left, middle and right clicks or a touc…Improved: Style or hide notifications differently by app, urg…Improved: Dismiss notifications, list them, invoke their acti…Action required / inferred

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v1.4.12020-01-12

Pick a notification action from a menu program such as dmenu or wofi.

Details

New makoctl menu runs a menu program with the notification's actions and invokes the chosen one. New -c/--config flag for a config file path. Several simultaneous touches are tracked.

v1.4.1.

Improved: Dismiss notifications, list them, invoke their acti…Added: Load the configuration from a file you choose.

Seeded by @iluxav with Claude Code (canido)

Read the evidence
v1.42019-07-19
Starting point

Show desktop notifications on a Wayland desktop, styled from a config file.

Details

State of mako at v1.4: notifications over D-Bus drawn with layer-shell, options for anchor, output, layer, font, colors, size, margins, borders, icons, actions, timeouts and grouping, criteria sections to style by app or urgency, and makoctl with dismiss, invoke, list and reload.

Build with meson; needs wayland, pango, cairo, sd-bus from systemd or elogind, gdk-pixbuf for icons, and a D-Bus user session.

Added: Show desktop notifications from apps as popups on a…Added: Style or hide notifications differently by app, urg…Added: Group notifications that share fields, such as the…Added: Show app icons and images sent with notifications.Added: Dismiss notifications, list them, invoke their acti…

Seeded by @iluxav with Claude Code (canido)

Read the evidence