aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/superpowers/specs/2026-10-19-notification-sounds-design.md21
1 files changed, 18 insertions, 3 deletions
diff --git a/docs/superpowers/specs/2026-10-19-notification-sounds-design.md b/docs/superpowers/specs/2026-10-19-notification-sounds-design.md
index 857ca4d..e64ed39 100644
--- a/docs/superpowers/specs/2026-10-19-notification-sounds-design.md
+++ b/docs/superpowers/specs/2026-10-19-notification-sounds-design.md
@@ -21,7 +21,7 @@ Two keys join `~/.config/notifyd/config.json`:
- `soundTheme`: the freedesktop sound theme an app's `sound-name` hint is
looked up in. A non-string or empty value reads as `freedesktop`.
-`soundTheme` is the daemon's; `sounds` is the balloon shell's. Both are
+`soundTheme` is read by the daemon and mirrored to gsettings by the page (see Settings page); `sounds` is the balloon shell's. Both are
resolved in `shared/NotifyConfig.js` for the page; notifyd's `Config` gains
`SoundTheme`.
@@ -98,8 +98,23 @@ directory under `~/.local/share/sounds` and `/usr/share/sounds` that holds an
`index.theme`, listed with `find` once when the page opens. The current
`soundTheme` is highlighted.
-Saving and reloading are unchanged: the same draft, file and `notifyctl
-reload`.
+The theme is the desktop's too. Save sets `soundTheme` in the file and
+`gsettings set org.gnome.desktop.sound theme-name <theme>`, so libcanberra
+and GTK event sounds use the same theme. notifyd still reads only the file:
+no daemon dependency on gsettings.
+
+The page also reads gsettings, with `gsettings get` each time the module
+refreshes (every settings window open) and after each save. When the system
+theme differs from `soundTheme`, a yellow line under the chooser says so,
+"System sound theme is <x>, changed outside this page", with a **Use <x>**
+button that puts it in the draft. Nothing is changed silently in either
+direction. A missing `gsettings` or schema reads as no system theme and the
+line stays hidden.
+
+Saving otherwise works as before: the same draft, the file write, then
+`notifyctl reload`. The save runs the gsettings write between the two: a
+failure there is reported ("saved; the system sound theme could not be
+set") and does not stop the reload.
## Out of scope