AvengeMedia / AvengeMedia/DankMaterialShell
Audio volume controls modify the wrong output device when Bluetooth headphones are the default sink
- Dominant language
- QML
- Stars
- 8.1k
- Forks
- 515
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 102
Description
### Compositor
Niri
### Distribution
Fedora
### If Other, please specify
_No response_
### Select your Installation Method
Distro Packaging
### Was this your original Installation method?
Yes
### If no, specify
_No response_
### dms doctor -vC
Click to expand
## DMS Doctor Report
**System**
- [ok] Operating System: Fedora Linux 44 (Workstation Edition)
- ID: fedora, Version: 44, Arch: amd64
- [ok] Architecture: amd64
- [ok] Display Server: Wayland
- WAYLAND_DISPLAY=wayland-1
**Versions**
- [ok] DMS CLI: dms v1.4.6
- /usr/bin/dms
- [ok] Quickshell: Quickshell 0.3.0 (revision , distributed by Fedora COPR (avengemedia/quickshell))
- /usr/bin/qs
- [ok] DMS Shell: 1.4.6
- /usr/share/quickshell/dms
**Installation**
- [ok] DMS Configuration: Found
- /usr/share/quickshell/dms
- [ok] shell.qml: Present
- /usr/share/quickshell/dms/shell.qml
- [info] Install Type: System package
- /usr/share/quickshell/dms
**Compositor**
- [ok] niri: 26.04
- /usr/bin/niri
- [info] Active: niri
- [ok] Background Blur: Supported
- Compositor supports ext-background-effect-v1
**Quickshell Features**
- [ok] Polkit: Available
- Authentication prompts
- [ok] IdleMonitor: Available
- Idle detection
- [ok] IdleInhibitor: Available
- Prevent idle/sleep
- [ok] ShortcutInhibitor: Available
- Allow shortcut management (niri)
- [ok] BackgroundBlur: Available
- Background blur API support in Quickshell
**Optional Features**
- [ok] accountsservice: Available
- User accounts
- [ok] power-profiles-daemon: Available
- Power profile management
- [ok] logind: Available
- Session management
- [ok] cups-pk-helper: Available
- Printer management
- [info] I2C/DDC: No monitors detected
- External monitor brightness control
- [ok] qt6-imageformats: Installed (1 formats)
- Formats: GIF (/usr/lib64/qt6/plugins/imageformats)
- [ok] kimageformats: Installed (4 formats)
- Formats: AVIF, HEIF, JXL, EXR (/usr/lib64/qt6/plugins/imageformats)
- [ok] Terminal: alacritty
- [ok] Network: NetworkManager
- NetworkManager present. Using NM API.
- [ok] matugen: Installed
- Dynamic theming
- [ok] dgop: Installed
- System monitoring
- [ok] cava: Installed
- Audio visualizer
- [info] khal: Not installed
- Calendar events
- [ok] danksearch: Installed
- File search
- [ok] fprintd: Installed
- Fingerprint auth
**Config Files**
- [ok] settings.json: Present
- /home/zrn/.config/DankMaterialShell/settings.json
- [info] clsettings.json: Not yet created
- /home/zrn/.config/DankMaterialShell/clsettings.json
- [ok] plugin_settings.json: Present
- /home/zrn/.config/DankMaterialShell/plugin_settings.json
- [ok] session.json: Present
- /home/zrn/.local/state/DankMaterialShell/session.json
- [ok] dms-colors.json: Present
- /home/zrn/.cache/DankMaterialShell/dms-colors.json
**Services**
- [ok] dms.service: enabled, active
- [info] greetd: Not installed
- Optional greeter service
**Environment**
- [info] QT_QPA_PLATFORMTHEME: Not set
- [info] QS_ICON_THEME: Not set
---
**Summary:** 0 error(s), 0 warning(s), 33 ok
### Description
When a Bluetooth audio device is connected and becomes the default PipeWire sink, audio playback correctly switches to the Bluetooth device.
However, the DMS IPC audio commands (`audio increment`, `audio decrement`) do not control the current default sink.
**but `audio mute` works**
The commands print a success message such as "Volume increased to 30%", but the actual volume of the default Bluetooth output does not change.
Using `wpctl` directly works as expected.
Audio
├─ Devices:
│ 43. Renoir/Cezanne HDMI/DP Audio Controller [alsa]
│ 44. Ryzen HD Audio Controller [alsa]
│ 82. HONOR CHOICE Earbuds X7 [bluez5]
│
├─ Sinks:
│ 51. Ryzen HD Audio Controller Analog Stereo [vol: 0.42]
│ * 89. HONOR CHOICE Earbuds X7 [vol: 0.63]
│
├─ Streams:
73. Firefox
72. output_FR > HONOR CHOICE Earbuds X7:playback_FR [active]
95. output_FL > HONOR CHOICE Earbuds X7:playback_FL [active]
Settings
└─ Default Configured Devices:
0. Audio/Sink bluez_output.E8_26_CF_57_13_66.1
### Expected Behavior
The DMS audio IPC commands should modify the current PipeWire default audio sink.
For example, they should behave the same as:
wpctl set-volume @DEFAULT_AUDIO_SINK@ 3%+
wpctl set-volume @DEFAULT_AUDIO_SINK@ 3%-
wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
This should work regardless of whether the default output is speakers, wired headphones, or Bluetooth headphones.
### Steps to Reproduce
1. Start DMS Shell.
2. Connect a Bluetooth headset.
3. Confirm it becomes the default PipeWire sink (`wpctl status`).
4. Play audio to verify playback is through the Bluetooth device.
5. Run:
dms ipc call audio increment 3
(or use the configured volume keybinds)
6. Observe that DMS reports the volume changed, but the Bluetooth device volume does not change.
7. Run:
wpctl set-volume @DEFAULT_AUDIO_SINK@ 3%+
8. Observe that the Bluetooth device volume changes correctly.
### Error Messages/Logs
No errors are printed.
Example:
dms ipc call audio increment 3
Volume increased to 30%
PipeWire still reports the Bluetooth sink at the same volume.
Relevant information:
- DMS version: 1.4.6-1.fc44
- PipeWire: 1.6.7
- WirePlumber: 0.5.x
### Screenshots/Recordings
_No response_
Contributor guide
Research direction
Start by tracing the DMS IPC audio entry points for `audio increment` and `audio decrement`, comparing their target selection with the `audio mute` command. Reproduce with `wpctl status`, then verify that increment and decrement behave like `wpctl set-volume @DEFAULT_AUDIO_SINK@ 3%+` and `3%-` for speakers, wired headphones, and Bluetooth sinks.
Written by the indexing model from the issue text.
Assessment
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 62/100