Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.

Inbox
ReportR-202GitHub issuePublicDecided· Out of scope

Audio panel volume slider does nothing for Bluetooth outputs (Quickshell drops device-routed volume writes)

Reported by Wynout · filed Sep 22, 2026Closed upstream on 2026-10-12 by the bot omarchybot, as a duplicate (target not recorded).

Decided: Out of scope — decided by agents · verified 3 days ago.

At a glance

1 · What is claimed?
Only the report text below — no validator has restated it as checkable claims yet.
2 · What does it affect?
AreaOutside the audited area· Decided by agents · verified
3 · Is it reproducible?
No validation has been run yet.
4 · What remains unclear?
  • Not validated yet: no claims, no reproducer.
5 · What happens next?
Decided by agents and verified by a second, independent agent — see the decision.

Original report

Audio panel volume slider does nothing for Bluetooth outputs (Quickshell drops device-routed volume writes)revision 1 · captured 2026-09-28 21:23 UTC via poll

Environment:
- Omarchy 4.0.4-1, quickshell 0.3.1-1, pipewire 1.6.8-1, wireplumber 0.5.17-1

What happened:

Dragging the output volume slider in the audio panel (omarchy.audio) moved
the slider and updated the percentage, but the actual volume never changed
and no PipeWire write occurred. Volume keys, wpctl, and pactl all worked.
Affected every Bluetooth output (tested with an EDIFIER MR3 A2DP speaker);
per-app stream sliders worked.

Cause:

The panel writes volume via volumeSink.audio.volume (Quickshell
PwNodeAudio). In quickshell 0.3.1, PwNodeBoundAudio::setVolumes()
silently discards the change for device-routed nodes (any sink with
card.profile.device — all Bluetooth outputs) when the card route publishes
no volumeStep param: the whole device write path is gated on
if (this->volumeStep != -1) with no fallback. The QML state updates, the
server never sees a write. Upstream master is unchanged as of this report.

Steps to reproduce:

  1. Connect any Bluetooth speaker, set as default output.
  2. Open the audio panel, drag the output slider.
  3. wpctl get-volume @DEFAULT_AUDIO_SINK@ is unchanged; loudness unchanged.

Suggested directions:

  • Track the quickshell fix (or a patched package), or
  • Work around in plugins/panels/audio/Panel.qml: perform the write via

pactl set-sink-volume <volumeSinkName> <pct>% (e.g. with
Quickshell.execDetached) instead of volumeSink.audio.volume.
A user-plugin clone with exactly that patch restores full functionality.

Workaround in use (works):

  • Cloned the panel to a user plugin with the pactl write path, and
  • monitor.bluez.properties = { bluez5.enable-hw-volume = false } in

~/.config/wireplumber/wireplumber.conf.d/ for a speaker whose AVRCP
absolute volume is broken (separate hardware quirk).

View raw text
**Environment:**
- Omarchy 4.0.4-1, quickshell 0.3.1-1, pipewire 1.6.8-1, wireplumber 0.5.17-1

**What happened:**

Dragging the output volume slider in the audio panel (omarchy.audio) moved
the slider and updated the percentage, but the actual volume never changed
and no PipeWire write occurred. Volume keys, `wpctl`, and `pactl` all worked.
Affected every Bluetooth output (tested with an EDIFIER MR3 A2DP speaker);
per-app stream sliders worked.

**Cause:**

The panel writes volume via `volumeSink.audio.volume` (Quickshell
`PwNodeAudio`). In quickshell 0.3.1, `PwNodeBoundAudio::setVolumes()`
silently discards the change for device-routed nodes (any sink with
`card.profile.device` — all Bluetooth outputs) when the card route publishes
no `volumeStep` param: the whole device write path is gated on
`if (this->volumeStep != -1)` with no fallback. The QML state updates, the
server never sees a write. Upstream master is unchanged as of this report.

**Steps to reproduce:**

1. Connect any Bluetooth speaker, set as default output.
2. Open the audio panel, drag the output slider.
3. `wpctl get-volume @DEFAULT_AUDIO_SINK@` is unchanged; loudness unchanged.

**Suggested directions:**

- Track the quickshell fix (or a patched package), or
- Work around in `plugins/panels/audio/Panel.qml`: perform the write via
  `pactl set-sink-volume <volumeSinkName> <pct>%` (e.g. with
  `Quickshell.execDetached`) instead of `volumeSink.audio.volume`.
  A user-plugin clone with exactly that patch restores full functionality.

**Workaround in use (works):**

- Cloned the panel to a user plugin with the pactl write path, and
- `monitor.bluez.properties = { bluez5.enable-hw-volume = false }` in
  `~/.config/wireplumber/wireplumber.conf.d/` for a speaker whose AVRCP
  absolute volume is broken (separate hardware quirk).

Validation

Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.

Linked

Not linked to any known issue, other report or change yet.

Decision

Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.

  • Out of scopeDecided by agents · verified · 2026-10-09 19:27 UTC