Owns one dunstrc (the laptop's, in the interface face, its menu on the seat's dmenu command) and the dunstrc.d directory for other modules' rules; D-Bus starts it, so nothing else does. Go tools over the session bus.
dunst
The notifier as a module (novox/hq ADR 0208, research 026/05).
- Installs
dunst, andlibnotifyfornotify-send, the client every program and these tools use. - Claims the mesh's
node-notifierseat and serves its verbssendandhistory. - Owns
~/.config/dunst/dunstrcand the directory~/.config/dunst/dunstrc.d/. Another module's rule is that module's own file in the directory (ADR 0208 §4). dunst reads the directory afterdunstrc, so a drop-in outranks it. - Starts nothing. The package registers dunst with D-Bus, which starts it on the first notification, inside the account's service manager. There is no autostart line, no unit and no session-start contribution.
- Requires no display of its own. dunst speaks both X11 and Wayland and picks the one the session has, so it serves an X session and a later sway one alike.
Tools
Every tool goes over the account's session bus. None needs the screen, and each answers clearly when the account is not logged in.
| tool | does |
|---|---|
node-notifier.send |
a notification: title, body, urgency, sender, icon, how long; answers its id |
node-notifier.history |
what was shown, newest first, with how long ago |
dunst_pause / dunst_resume |
do not disturb: notifications are held back, not lost |
dunst_close_all |
clear the screen; the history keeps them |
dunst_rules |
the rules the running notifier holds, and the files they come from |
dunst_count |
shown, waiting, in history, and whether paused |
What it chose, and what it improves
The workstations' files differed: one had the notifications bottom-right, 15 % transparent and with rounded corners; the other top-right, opaque and square. This module takes the second, because the rest of the desktop is square and opaque, and the top-right corner sits under the bar that shows the count. The file keeps only the settings that differ from dunst's defaults.
- The context menu works. It called
/usr/bin/dmenu, installed on neither machine. It now callsdmenu, the seat command of whichever module holdsnode-launcher(rofion the workstations). - The face is the interface one, Inter (research 026/04), instead of a monospace Nerd font.
icon_path, which named two directories of an icon theme that is not installed, is gone. The icon theme is looked up recursively.
What it leaves as found
~/.config/dunst/dunstrc.d/50-slack.conf, the Slack rule. It becomes the Slack module's own drop-in when there is one, and until then it is the operator's file in a directory this module owns.
Migration (ADR 0182)
- The first push keeps the found
dunstrconce, then writes the module's. - The desktop runs two notification daemons because its session began before the session bus
fix (research 026/01). That ends at the next login, and nothing here starts a second one.
dunst_countafter logging in again shows the one daemon's counts.
Blockers
node-notifieris ADR 0208's seat. Until the controller knows it,mctlreads the claim as unknown.dunst_rulesand the counts ask the running notifier. When none runs, the bus starts one, which needs a session to draw on.