From 543b818b54126bc8b40302d5b12cd44b90b20ddd Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Mon, 19 Oct 2026 09:49:17 +0200 Subject: docs: notification sound theme mirrors gsettings Save sets the system sound theme too, and the page reads it back on every open so a change made elsewhere shows instead of being overwritten. Co-Authored-By: Claude Opus 5.5 --- .../specs/2026-10-19-notification-sounds-design.md | 21 ++++++++++++++++++--- 1 file 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 `, 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 , changed outside this page", with a **Use ** +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 -- cgit v1.2.3