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

SOF ThinkPad: no headphone autoswitch, stale HDMI default, MPRIS pause on jack, mute LED dark

Reported by JeffFlag · filed Sep 9, 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

SOF ThinkPad: no headphone autoswitch, stale HDMI default, MPRIS pause on jack, mute LED darkrevision 1 · captured 2026-09-28 21:23 UTC via poll

System details

ThinkPad X1 Carbon Gen 9 (20XWCTO1WW), Intel i7-1165G7, Iris Xe (i915), Intel SOF HDA DSP / Realtek ALC287 (sof-hda-dsp), Omarchy 4.0.3-1, Hyprland 0.56.2, PipeWire 1.6.8 + WirePlumber, kernel 7.2.3-arch1-3

What's wrong?

Stock Omarchy audio handling on Intel SOF laptops is not a single policy the way GNOME/Ubuntu is. Four reproducible bugs showed up together on this X1 Carbon Gen 9. They share one cause: Speaker and Headphones are exclusive UCM card profiles, the bar lists sinks of the active profile only, HDMI jack detect does not clear after unplug, and mute/LED/MPRIS are not wired together.

1. 3.5mm earphones plugged — no headphone device, no sound

amixer reports Headphone Jack: on and the Headphones port is available, but the active profile stays:

HiFi (HDMI1, HDMI2, HDMI3, Mic1, Mic2, Speaker)

The speaker-icon menu only lists Speaker + HDMI. Headphones is a different card profile, so there is no sink to select.

pactl list cards   # Active Profile: … Speaker
pactl list sinks short   # Speaker + HDMI*, no Headphones

Expected: plug earphones → output switches to headphones (GNOME does this).

2. Unplug monitor + jack → output stuck on HDMI (“LG UltraWide”)

DRM shows eDP-1 connected and HDMI-A-1 / DP-* disconnected, but ALSA HDMI/DP,pcm=3 Jack stays on. PipeWire still marks HDMI1 available. With the Headphones profile active and the analog jack out, HDMI is the only “available” sink, so the default stays on a speakerless LG/AOC.

Expected: unplug the display → analog speakers; do not keep a stale HDMI sink as default.

3. Switching Speaker ↔ Headphones pauses Chromium and cliamp

Those two profiles are exclusive: switching destroys the previous sink. WirePlumber default linking.pause-playback = true then MPRIS-pauses players linked to the removed sink (org.mpris.MediaPlayer2.chromium.*, org.mpris.MediaPlayer2.cliamp).

Repro: play YouTube + cliamp on speakers, plug earphones → both pause and need resume. Unplug often continues (asymmetric).

Expected: jack plug/unplug does not pause media.

4. F1 mutes audio, ThinkPad mute LED stays dark

XF86AudioMute → omarchy-audio-output-volume mute-toggle mutes the PipeWire default sink. The lamp is platform::mute (thinkpad_acpi) with trigger [audio-mute], which follows ALSA Master, not PipeWire software mute. Mic-mute already has omarchy-brightness-keyboard-mute writing platform::micmute via brightnessctl. Speaker mute has no equivalent.

Expected: F1 mute lights platform::mute; unmute turns it off (same as Ubuntu on this hardware).

Stock gaps (why this is an Omarchy issue, not only kernel)

  • omarchy-audio-sink-availability / the audio plugin list sinks, not analog jack / card profiles, so Headphones can never appear while Speaker is active.
  • No jack-driven profile switch (WirePlumber does not do it for these SOF HiFi profiles when HDMI is also “available”).
  • HDMI availability is taken from the sticky ALSA jack, not DRM connected.
  • linking.pause-playback is left on, so exclusive-profile switches pause MPRIS clients.
  • Output mute LED is not driven; mic mute LED is.

Suggested direction

  1. Treat analog jack as policy: Headphones if Headphone Jack is on, else Speaker. Switch the SOF card profile; do not wait for a Headphones sink to exist in the Speaker profile.
  2. Ignore HDMI as default unless DRM reports the connector connected (do not trust ALSA HDMI jack on SOF).
  3. Keep a stable default sink (or disable linking.pause-playback) so apps do not see the physical node vanish.
  4. Drive platform::mute from PipeWire mute the same way omarchy-brightness-keyboard-mute drives platform::micmute.

A local workaround on this machine (user config only, not a PR yet): virtual sink omarchy.analog + systemd user router + HDMI nodes disabled + linking.pause-playback=false + brightnessctl --device=platform::mute. Happy to turn that into a PR if this is in scope.

Diagnostics

  • omarchy-debug --no-sudo --print: https://logs.omarchy.org/T2ubeA (expires 24h)
  • Card: alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic
  • Profiles: HiFi (… Headphones …) priority 10300 vs HiFi (… Speaker) 10200, both available: yes when HDMI1 is stale-on.
  • No screenshot of the broken speaker menu: currently mitigated locally so the stock failure is not on screen.

Related: #5334 (jack hotplug on a different codec) is HDA powersave; this ThinkPad jack does report correctly — the missing piece is Omarchy/WirePlumber policy.

View raw text
### System details
ThinkPad X1 Carbon Gen 9 (`20XWCTO1WW`), Intel i7-1165G7, Iris Xe (`i915`), Intel SOF HDA DSP / Realtek ALC287 (`sof-hda-dsp`), Omarchy 4.0.3-1, Hyprland 0.56.2, PipeWire 1.6.8 + WirePlumber, kernel 7.2.3-arch1-3

### What's wrong?

Stock Omarchy audio handling on Intel SOF laptops is not a single policy the way GNOME/Ubuntu is. Four reproducible bugs showed up together on this X1 Carbon Gen 9. They share one cause: **Speaker and Headphones are exclusive UCM card profiles**, the bar lists **sinks of the active profile only**, HDMI jack detect **does not clear** after unplug, and mute/LED/MPRIS are not wired together.

#### 1. 3.5mm earphones plugged — no headphone device, no sound

`amixer` reports `Headphone Jack: on` and the Headphones port is `available`, but the active profile stays:

`HiFi (HDMI1, HDMI2, HDMI3, Mic1, Mic2, Speaker)`

The speaker-icon menu only lists Speaker + HDMI. Headphones is a **different card profile**, so there is no sink to select.

```
pactl list cards   # Active Profile: … Speaker
pactl list sinks short   # Speaker + HDMI*, no Headphones
```

Expected: plug earphones → output switches to headphones (GNOME does this).

#### 2. Unplug monitor + jack → output stuck on HDMI (“LG UltraWide”)

DRM shows `eDP-1` connected and `HDMI-A-1` / `DP-*` disconnected, but ALSA `HDMI/DP,pcm=3 Jack` stays **on**. PipeWire still marks HDMI1 `available`. With the Headphones profile active and the analog jack out, HDMI is the only “available” sink, so the default stays on a speakerless LG/AOC.

Expected: unplug the display → analog speakers; do not keep a stale HDMI sink as default.

#### 3. Switching Speaker ↔ Headphones pauses Chromium and cliamp

Those two profiles are exclusive: switching **destroys** the previous sink. WirePlumber default `linking.pause-playback = true` then MPRIS-pauses players linked to the removed sink (`org.mpris.MediaPlayer2.chromium.*`, `org.mpris.MediaPlayer2.cliamp`).

Repro: play YouTube + cliamp on speakers, plug earphones → both **pause** and need resume. Unplug often continues (asymmetric).

Expected: jack plug/unplug does not pause media.

#### 4. F1 mutes audio, ThinkPad mute LED stays dark

`XF86AudioMute` → `omarchy-audio-output-volume mute-toggle` mutes the PipeWire default sink. The lamp is `platform::mute` (thinkpad_acpi) with trigger `[audio-mute]`, which follows **ALSA Master**, not PipeWire software mute. Mic-mute already has `omarchy-brightness-keyboard-mute` writing `platform::micmute` via `brightnessctl`. Speaker mute has no equivalent.

Expected: F1 mute lights `platform::mute`; unmute turns it off (same as Ubuntu on this hardware).

### Stock gaps (why this is an Omarchy issue, not only kernel)

- `omarchy-audio-sink-availability` / the audio plugin list **sinks**, not analog jack / card profiles, so Headphones can never appear while Speaker is active.
- No jack-driven profile switch (WirePlumber does not do it for these SOF HiFi profiles when HDMI is also “available”).
- HDMI availability is taken from the sticky ALSA jack, not DRM `connected`.
- `linking.pause-playback` is left on, so exclusive-profile switches pause MPRIS clients.
- Output mute LED is not driven; mic mute LED is.

### Suggested direction

1. Treat analog jack as policy: Headphones if `Headphone Jack` is on, else Speaker. Switch the SOF card profile; do not wait for a Headphones sink to exist in the Speaker profile.
2. Ignore HDMI as default unless DRM reports the connector `connected` (do not trust ALSA HDMI jack on SOF).
3. Keep a stable default sink (or disable `linking.pause-playback`) so apps do not see the physical node vanish.
4. Drive `platform::mute` from PipeWire mute the same way `omarchy-brightness-keyboard-mute` drives `platform::micmute`.

A local workaround on this machine (user config only, not a PR yet): virtual sink `omarchy.analog` + systemd user router + HDMI nodes disabled + `linking.pause-playback=false` + `brightnessctl --device=platform::mute`. Happy to turn that into a PR if this is in scope.

### Diagnostics

- `omarchy-debug --no-sudo --print`: https://logs.omarchy.org/T2ubeA (expires 24h)
- Card: `alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic`
- Profiles: `HiFi (… Headphones …)` priority 10300 vs `HiFi (… Speaker)` 10200, both `available: yes` when HDMI1 is stale-on.
- No screenshot of the broken speaker menu: currently mitigated locally so the stock failure is not on screen.

Related: #5334 (jack hotplug on a different codec) is HDA powersave; this ThinkPad jack **does** report correctly — the missing piece is Omarchy/WirePlumber **policy**.

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 11:21 UTC