Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA 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.
Audio panel lists unplugged microphone inputs that can't be selected
Reported by lundsholm · filed Sep 29, 2026 · open at source
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
System details
ThinkPad X1 Carbon Gen 11 (21HM005NMX), Intel i7-1355U, Iris Xe, Intel SOF HDA DSP / Realtek ALC287 (sof-hda-dsp), Omarchy 4.0.4-1, PipeWire 1.6.8, WirePlumber 0.5.17, kernel 7.2.5-3-omarchy
What's wrong?
The audio panel lists inputs whose port is unavailable, and clicking one does nothing visible. The row looks like any other row, so it reads as a broken click rather than as an unplugged device.
On this laptop the row is "Stereo Microphone", the analog mic on the 3.5 mm combo jack, with nothing plugged in.
Steps to reproduce
- On a laptop with a combo headset jack, leave the jack empty.
- Open the audio panel. INPUT lists both "Stereo Microphone" and "Digital Microphone".
- Click "Stereo Microphone".
Result: the highlight stays on "Digital Microphone". No error, no feedback.
Expected: the unplugged input is not listed, the same way unplugged outputs are not listed.
Why it happens
The click does go through. omarchy-audio-input-set-default sets the preferred source, but WirePlumber leaves unavailable nodes out of default selection (haveAvailableRoutes in linking-utils.lua), so the actual default never changes. The panel highlights the actual default.
$ pactl list cards | grep -E '^\s+\[In\]'
[In] Mic2: Stereo Microphone (type: Mic, priority: 200, availability group: Mic, not available)
[In] Mic1: Digital Microphone (type: Mic, priority: 100, availability unknown)
$ amixer -c sofhdadsp contents | grep -A2 "Mic Jack"
numid=12,iface=CARD,name='Mic Jack'
; type=BOOLEAN,access=r-------,values=1
: values=off
$ pactl set-default-source alsa_input.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__Mic2__source
$ pw-metadata -n default | grep audio.source
default.configured.audio.source = ...HiFi__Mic2__source
default.audio.source = ...HiFi__Mic1__source(pw-metadata output shortened to key and node name.)
Where the panel differs between outputs and inputs
In shell/plugins/panels/audio/Panel.qml, outputs are filtered by availability and inputs are not. This is still the case on the current quattro branch:
readonly property var rawAudioSinks: {
var list = []
for (var i = 0; i < candidateSinks.length; i++)
if (sinkAvailable(candidateSinks[i])) list.push(candidateSinks[i])
...
}
readonly property var rawAudioSources: {
var list = candidateSources.slice()
...
}omarchy-audio-sink-availability feeds sinkAvailable(). There is no equivalent for sources. On this machine that is why Headphones and the three HDMI outputs are hidden while the unplugged mic is shown.
Suggested fix
Give sources the same treatment as sinks: a source availability helper (or one helper covering both), and a sourceAvailable() filter in rawAudioSources. The current default source should stay listed even if it is unavailable, as the sink list already does.
Related
- #12489 drops unplugged jacks from the output list; inputs are not covered.
- #13358 is a different symptom of the same always-present headset-jack source.
- #11005 covers output handling on a ThinkPad with the same sound card.
View raw text
### System details
ThinkPad X1 Carbon Gen 11 (21HM005NMX), Intel i7-1355U, Iris Xe, Intel SOF HDA DSP / Realtek ALC287 (`sof-hda-dsp`), Omarchy 4.0.4-1, PipeWire 1.6.8, WirePlumber 0.5.17, kernel 7.2.5-3-omarchy
### What's wrong?
The audio panel lists inputs whose port is unavailable, and clicking one does nothing visible. The row looks like any other row, so it reads as a broken click rather than as an unplugged device.
On this laptop the row is "Stereo Microphone", the analog mic on the 3.5 mm combo jack, with nothing plugged in.
#### Steps to reproduce
1. On a laptop with a combo headset jack, leave the jack empty.
2. Open the audio panel. INPUT lists both "Stereo Microphone" and "Digital Microphone".
3. Click "Stereo Microphone".
Result: the highlight stays on "Digital Microphone". No error, no feedback.
Expected: the unplugged input is not listed, the same way unplugged outputs are not listed.
#### Why it happens
The click does go through. `omarchy-audio-input-set-default` sets the preferred source, but WirePlumber leaves unavailable nodes out of default selection (`haveAvailableRoutes` in `linking-utils.lua`), so the actual default never changes. The panel highlights the actual default.
```
$ pactl list cards | grep -E '^\s+\[In\]'
[In] Mic2: Stereo Microphone (type: Mic, priority: 200, availability group: Mic, not available)
[In] Mic1: Digital Microphone (type: Mic, priority: 100, availability unknown)
$ amixer -c sofhdadsp contents | grep -A2 "Mic Jack"
numid=12,iface=CARD,name='Mic Jack'
; type=BOOLEAN,access=r-------,values=1
: values=off
$ pactl set-default-source alsa_input.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__Mic2__source
$ pw-metadata -n default | grep audio.source
default.configured.audio.source = ...HiFi__Mic2__source
default.audio.source = ...HiFi__Mic1__source
```
(`pw-metadata` output shortened to key and node name.)
#### Where the panel differs between outputs and inputs
In `shell/plugins/panels/audio/Panel.qml`, outputs are filtered by availability and inputs are not. This is still the case on the current `quattro` branch:
```qml
readonly property var rawAudioSinks: {
var list = []
for (var i = 0; i < candidateSinks.length; i++)
if (sinkAvailable(candidateSinks[i])) list.push(candidateSinks[i])
...
}
readonly property var rawAudioSources: {
var list = candidateSources.slice()
...
}
```
`omarchy-audio-sink-availability` feeds `sinkAvailable()`. There is no equivalent for sources. On this machine that is why Headphones and the three HDMI outputs are hidden while the unplugged mic is shown.
#### Suggested fix
Give sources the same treatment as sinks: a source availability helper (or one helper covering both), and a `sourceAvailable()` filter in `rawAudioSources`. The current default source should stay listed even if it is unavailable, as the sink list already does.
#### Related
- #12489 drops unplugged jacks from the output list; inputs are not covered.
- #13358 is a different symptom of the same always-present headset-jack source.
- #11005 covers output handling on a ThinkPad with the same sound card.
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 20:11 UTC