On trixie, switching Do Not Disturb off in Plasma Mobile's quick settings
leaves the Notification Sounds stream muted. That stream carries the
ringtone, so calls ring without sound until the stream is unmuted by hand
in the volume panel. This is fixed upstream since Plasma 6.4.5 and in forky
and sid (6.7.4-2). The fix is a small QML change, and a patch for 6.3.6 is
attached. Please consider it for a trixie stable update.
System: Mobian 13 (trixie) with Plasma Mobile, on a Fairphone 5. Related
packages: plasma-workspace and libnotificationmanager1 4:6.3.6-2, plasma-pa
4:6.3.4-1, libkf6pulseaudioqt5 1.7.0-1, libkf6configcore6 6.13.0-2,
pipewire-pulse 1.4.2-1, wireplumber 0.5.8-2, plasma-dialer 1:6.3.5-1.
## Steps to reproduce
1. With Notification Sounds not muted, switch Do Not Disturb on in the
quick settings.
2. Call the phone: it rings with neither sound nor vibration, as expected.
3. Switch Do Not Disturb off in the quick settings.
4. Call the phone again.
Expected: the ringtone plays again, as before step 1.
Actual: the call rings without sound. The Notification Sounds stream stays
muted until it is unmuted by hand in the volume panel; then the ringtone
plays again. Seen twice on 2026-10-20.
## What the phone shows
- With Do Not Disturb on, `~/.config/plasmanotifyrc` holds:
```
[DoNotDisturb]
NotificationSoundsMuted=true
Until=2027,10,20,16,9,47.079
```
- After switching it off, the `[DoNotDisturb]` group is gone and the file
is empty: nothing in it says the stream was muted by Do Not Disturb.
- PipeWire still has the stream muted: `pw-metadata -n route-settings`
shows `restore.stream.Output/Audio.media.role:Notification` = `{ "mute":
true, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }`, and
WirePlumber's `~/.local/state/wireplumber/stream-properties` has
`Output/Audio:media.role:Notification={... "mute":true ...}`.
## Cause (from the 6.3.6 sources)
-
`components/mobileshell/qml/notificationpopup/NotificationPopupProvider.qml`
has its own `NotificationManager.Settings` (line 27). When Do Not Disturb
starts, it mutes the notification stream and records that in
`NotificationSoundsMuted`. When Do Not Disturb ends, `onInhibitedChanged`
(line 72) unmutes the stream only if `notificationSoundsInhibited` is still
true (lines 91-94).
- The quick setting goes through `ShellDBusClient.doNotDisturb` to
`onDoNotDisturbChanged` in
`components/mobileshell/qml/widgets/notifications/NotificationsWidget.qml`
(line 127), which calls `toggleDoNotDisturbMode()` (line 103). To switch Do
Not Disturb off, that calls `notificationSettings.defaults()` (line 105)
and then `save()`. This widget uses a separate
`NotificationManager.Settings {}`, set by the panel
(`containments/panel/package/contents/ui/main.qml:262`).
- `Settings::defaults()` in libnotificationmanager (plasma-workspace 6.3.6,
`libnotificationmanager/settings.cpp:260-268`) resets the whole Do Not
Disturb group, `NotificationSoundsMuted` included (default false in
`kcfg/donotdisturbsettings.kcfg`), and the notification, job and badge
settings too. `save()` then writes these defaults.
- The popup provider's Settings watches the file (KConfigWatcher,
`settings.cpp:284-289`) and reloads the Do Not Disturb group. It sees
`Until` gone and `NotificationSoundsMuted` false at the same time, so it
never unmutes the stream.
## Fix
Upstream commit [54cd4d548e84](
https://invent.kde.org/plasma/plasma-mobile/-/commit/54cd4d548e847e23661c894f2d5359564dc92fcf)
("notifications: Ensure correct state is being set for do not disturb",
Devin Lin, 2025-08-07) replaces `toggleDoNotDisturbMode()` with
`setDoNotDisturbMode(doNotDisturb)`. To switch Do Not Disturb off, the new
function clears `notificationsInhibitedUntil` and calls
`revokeApplicationInhibitions()` instead of `defaults()`.
`NotificationSoundsMuted` therefore stays true until the popup provider has
unmuted the stream. The commit is in v6.5.0 and later, and in v6.4.5 and
v6.4.6 as [841920e525d4](
https://invent.kde.org/plasma/plasma-mobile/-/commit/841920e525d430b8ba9791f6eb2934a0f4a0c7d7).
The Plasma/6.3 branch never got it: v6.3.6 was its last release.
The attached patch is that commit for 6.3.6, with one line dropped:
`notificationSettings.fullscreenFocused = false;`. libnotificationmanager
6.3.6's `Settings` has no `fullscreenFocused` property. The patch applies
to 6.3.6 with `patch -p1`. It has not been tried on the phone yet.
*This report was researched and written by Claude (Anthropic's AI model),
working with the phone's owner, who switched Do Not Disturb, placed the
calls, and reviewed the report before it was sent.*