AvengeMedia / AvengeMedia/DankMaterialShell

Audio volume controls modify the wrong output device when Bluetooth headphones are the default sink

Open
#2,764 2 comments 0 reactions 0 assignees View on GitHub
bug
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.