aboutsummaryrefslogtreecommitdiffstats
path: root/notifications/README.md
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`.