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-251GitHub issuePublicDecided· Out of scope

omarchy.audio bar slider/scroll doesn't change volume on Bluetooth (device-routed) sink — mute works

Reported by ljxw88 · filed Sep 21, 2026 · open at source

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

omarchy.audio bar slider/scroll doesn't change volume on Bluetooth (device-routed) sink — mute worksrevision 1 · captured 2026-09-28 21:23 UTC via poll

System: Omarchy 4.0.4-1, Quickshell 0.3.1, PipeWire 1.6.8, WirePlumber 0.5.17, AMD Ryzen 9 8945HS + RTX 4060 Mobile. Default sink: Bluetooth A2DP bluez_output.50_DC_E7_54_B7_71.1 (Echo-1C3, SBC).

Repro (stock `omarchy.audio`, no clones):
1. In a terminal run watch -n 0.2 pactl get-sink-volume @DEFAULT_SINK@
2. Drag the output slider in the top-bar audio panel, or scroll on the speaker icon
3. Slider moves visually but PipeWire % never changes and loudness doesn't change (knob snaps back on release)

What works: right-click mute toggle works; omarchy audio output volume ±5 (pactl path) changes loudness; wpctl set-volume changes the reported %; Quickshell reads the volume correctly (shows 40%). Restarting the shell (omarchy restart shell) does not fix it.

Suspected cause: the sink's volume is device-routed — shell log shows Got updated device volume props for PwNode(id=85/bound) via PwDevice(id=88) — and volumeSink.audio.volume = v in shell/plugins/panels/audio/Panel.qml → setOutputVolume() is silently ignored there, while the muted setter on the same object goes through.

Workaround: cloned the plugin (omarchy plugin clone omarchy.audio) and added a pactl set-sink-volume fallback in setOutputVolume(), which fixes slider + scroll.

Note: omarchy debug doesn't exist in 4.0.4 (Unknown Omarchy command), so diagnostics were gathered manually:

Diagnostics
# Omarchy audio bar-widget volume bug diagnostics
Date: 2026-09-21T01:07:16Z

## Versions
omarchy: 4.0.4-1
quickshell: Quickshell 0.3.1 (revision , distributed by Arch Linux)
pipewire: Compiled with libpipewire 1.6.8
wireplumber: Compiled with libwireplumber 0.5.17
pactl: pactl 17.0-98-gb096

## CPU/GPU/Audio
Model name: AMD Ryzen 9 8945HS w/ Radeon 780M Graphics
01:00.0 VGA compatible controller: NVIDIA Corporation AD107M [GeForce RTX 4060 Max-Q / Mobile]
01:00.1 Audio device: NVIDIA Corporation AD107 High Definition Audio Controller
65:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Radeon High Definition Audio Controller
65:00.6 Audio device: Advanced Micro Devices, Inc. [AMD] Ryzen HD Audio Controller

## Default sink
bluez_output.50_DC_E7_54_B7_71.1
Volume: front-left: 26214 /  40% / -23.88 dB,   front-right: 26214 /  40% / -23.88 dB
Mute: no

## Bluetooth sink detail
Sink #474, State: RUNNING, Name: bluez_output.50_DC_E7_54_B7_71.1 (Echo-1C3)
Driver: PipeWire, s16le 2ch 48000Hz, Flags: HARDWARE DECIBEL_VOLUME LATENCY
api.bluez5.profile = "a2dp-sink", api.bluez5.codec = "sbc", device.id = "88"

## Stock setOutputVolume (shell/plugins/panels/audio/Panel.qml)
  function setOutputVolume(v) {
    if (!volumeSink || !volumeSink.audio) return outputVolume
    var volume = Math.max(0, Math.min(1, v))
    volumeSink.audio.volume = volume
    return volume
  }
View raw text
**System:** Omarchy 4.0.4-1, Quickshell 0.3.1, PipeWire 1.6.8, WirePlumber 0.5.17, AMD Ryzen 9 8945HS + RTX 4060 Mobile. Default sink: Bluetooth A2DP `bluez_output.50_DC_E7_54_B7_71.1` (Echo-1C3, SBC).

**Repro (stock `omarchy.audio`, no clones):**
1. In a terminal run `watch -n 0.2 pactl get-sink-volume @DEFAULT_SINK@`
2. Drag the output slider in the top-bar audio panel, or scroll on the speaker icon
3. Slider moves visually but PipeWire % never changes and loudness doesn't change (knob snaps back on release)

**What works:** right-click mute toggle works; `omarchy audio output volume ±5` (pactl path) changes loudness; `wpctl set-volume` changes the reported %; Quickshell reads the volume correctly (shows 40%). Restarting the shell (`omarchy restart shell`) does not fix it.

**Suspected cause:** the sink's volume is device-routed — shell log shows `Got updated device volume props for PwNode(id=85/bound) via PwDevice(id=88)` — and `volumeSink.audio.volume = v` in `shell/plugins/panels/audio/Panel.qml → setOutputVolume()` is silently ignored there, while the `muted` setter on the same object goes through.

**Workaround:** cloned the plugin (`omarchy plugin clone omarchy.audio`) and added a `pactl set-sink-volume` fallback in `setOutputVolume()`, which fixes slider + scroll.

Note: `omarchy debug` doesn't exist in 4.0.4 (`Unknown Omarchy command`), so diagnostics were gathered manually:

<details>
<summary>Diagnostics</summary>

```
# Omarchy audio bar-widget volume bug diagnostics
Date: 2026-09-21T01:07:16Z

## Versions
omarchy: 4.0.4-1
quickshell: Quickshell 0.3.1 (revision , distributed by Arch Linux)
pipewire: Compiled with libpipewire 1.6.8
wireplumber: Compiled with libwireplumber 0.5.17
pactl: pactl 17.0-98-gb096

## CPU/GPU/Audio
Model name: AMD Ryzen 9 8945HS w/ Radeon 780M Graphics
01:00.0 VGA compatible controller: NVIDIA Corporation AD107M [GeForce RTX 4060 Max-Q / Mobile]
01:00.1 Audio device: NVIDIA Corporation AD107 High Definition Audio Controller
65:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Radeon High Definition Audio Controller
65:00.6 Audio device: Advanced Micro Devices, Inc. [AMD] Ryzen HD Audio Controller

## Default sink
bluez_output.50_DC_E7_54_B7_71.1
Volume: front-left: 26214 /  40% / -23.88 dB,   front-right: 26214 /  40% / -23.88 dB
Mute: no

## Bluetooth sink detail
Sink #474, State: RUNNING, Name: bluez_output.50_DC_E7_54_B7_71.1 (Echo-1C3)
Driver: PipeWire, s16le 2ch 48000Hz, Flags: HARDWARE DECIBEL_VOLUME LATENCY
api.bluez5.profile = "a2dp-sink", api.bluez5.codec = "sbc", device.id = "88"

## Stock setOutputVolume (shell/plugins/panels/audio/Panel.qml)
  function setOutputVolume(v) {
    if (!volumeSink || !volumeSink.audio) return outputVolume
    var volume = Math.max(0, Math.min(1, v))
    volumeSink.audio.volume = volume
    return volume
  }
```

</details>

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:20 UTC