blob: f80c79ede6da0a7a1fc85911cd866e6c8a357423 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# notifications
The balloon renderer for the notification daemon (`notifyd`, a separate repo).
It reads the daemon's published files through the `Notify` singleton and draws
one balloon per live notification, bottom-right of `DP-1`.
## Suppression lives here
The daemon does not know about DND, snooze or mute. This component withholds
balloons: `status.dnd` suppresses low and normal (and critical too when
`dndPassCritical` is off), a muted app is always withheld, and
`notifyd/snooze` suppresses everything. The drawer's reserved space lists
every live notification anyway.
Placement, mute and the DND rule come from `~/.config/notifyd/config.json`,
edited from the settings window (Desktop → Notifications).
## The files are the interface
$XDG_RUNTIME_DIR/notifyd/queue.json the live queue
$XDG_RUNTIME_DIR/notifyd/history.json the ring of 20
$XDG_RUNTIME_DIR/notifyd/drawer "1" while the drawer holds the space
$XDG_RUNTIME_DIR/notifyd/snooze an epoch second while snoozing
~/.config/notifyd/config.json settings, shared with the daemon
`notifyctl` and `notify-snooze.sh` are in `~/bin`; without them the balloons
draw but close and actions do nothing.
## Blur
Hyprland blurs a layer surface only when a rule names its namespace. This
component sets `keystone-notifications`; the rule is in
`~/.config/hypr/sections/decorations.lua`.
## History rows
The spec calls history rows closable individually. `notifyctl` has no per-id
history delete, only `clear-history`, so the history page ships a clear all
and inert rows. The daemon verb and the renderer row it needs are tracked in
the `notifyd` repo's `TODO.md`; when that ships, the row's X is wired to
`notifyctl history-remove`.
|