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

Apple Studio Display over USB4 flashes: stock preferred is 5K@120, then DP tunnel drops while Thunderbolt stays authorized

Reported by saariuslystoned · filed Aug 18, 2026 · open at source

Decided: Out of scope — decided by agents · verified 4 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

Apple Studio Display over USB4 flashes: stock preferred is 5K@120, then DP tunnel drops while Thunderbolt stays authorizedrevision 1 · captured 2026-09-28 21:29 UTC via poll

System details

  • Machine: HP ZBook X G1i 16 inch Mobile Workstation PC
  • CPU/iGPU: Intel Arrow Lake-P (Arc Pro 130T/140T, 8086:7d51)
  • dGPU: NVIDIA RTX PRO 1000 Blackwell (10de:2db8), nvidia-open-dkms 610.57.04-1
  • Display: Apple Studio Display XDR over USB4/Thunderbolt (authorized at 40 Gb/s). USB camera/audio/HID work even when video is gone.
  • Omarchy: 4.0.0-1 (Quattro)
  • Kernel: 7.1.8-arch1-3
  • Compositor: Hyprland 0.56.2
  • Stock config: ~/.config/hypr/monitors.lua ships hl.monitor({ output = "", mode = "preferred", position = "auto", scale = 1.25 })

What's wrong?

Connecting an Apple Studio Display over Thunderbolt/USB4 makes the external picture flash in and out. USB (camera, speakers, HID) and boltctl stay authorized. Only the DisplayPort tunnel (card0-DP-1) dies.

Two stacked problems:

  1. Stock `mode = "preferred"` picks [email protected]. That is the first EDID mode. Hyprland brings the display up at 5K@120, scale 1.25, then loses it.
  1. The USB4 DP tunnel still drops even after pinning a sane mode. 5120x2880@60 and 3840x2160@60 both went disconnected after ~20s. Kernel logs include thunderbolt ... failed to reach state TB_PORT_UP and lost during suspend, disconnecting. The Studio Display node sits at power/autosuspend_delay_ms=15000 with control=auto. Forcing control=on on the Thunderbolt devices and the Arrow Lake USB-C root ports (8086:7ec4 / 8086:7ec6) stopped full TB disconnects, but DP-1 still went disconnected while 0-1 stayed runtime=active.

This is an Intel USB4 / Thunderbolt 5 (Barlow Ridge JHL9480) path on Arrow Lake, not a dumb HDMI monitor. thunderbolt.clx=Y (CL0s) is on and not writable at runtime.

Omarchy's docs say an Intel Thunderbolt 4 machine should just work with a direct USB-C cable (https://learn.omacom.io/3/omacom/75/apple-displays-on-linux). On this Arrow Lake + Studio Display setup it does not.

Steps to reproduce

  1. Fresh Omarchy 4.0.0-1 on an Intel USB4 laptop (here: HP ZBook X G1i).
  2. Leave the default monitors.lua catch-all (mode = "preferred").
  3. Plug in an Apple Studio Display XDR over Thunderbolt/USB4.
  4. boltctl shows the display authorized; hyprctl monitors shows DP-1 at [email protected] with scale 1.25.
  5. After ~60 seconds the picture dies. hyprctl no longer lists DP-1. USB functions on the display keep working.
  6. The display reappears at 120Hz and the cycle repeats.

Expected

The Studio Display stays up. Prefer a stable 5K mode (5120x2880@60) rather than EDID-preferred 120Hz.

Workaround attempted (not sufficient)

Pinned the Studio Display so stock preferred cannot select 120Hz (do not also leave a catch-all — see #7242):

hl.monitor({ output = "eDP-1", mode = "preferred", position = "0x0", scale = 1.25 })
hl.monitor({
  output = "desc:Apple Computer Inc Studio XDR",
  mode = "3840x2160@60",
  position = "auto",
  scale = 1.5,
  bitdepth = 8,
})

Plus a udev rule forcing Thunderbolt / USB-C root-port power/control=on. Video still drops after ~20s.

Evidence

08:33:31  monitoraddedv2 DP-1 Apple Studio XDR  [email protected]  scale 1.25
08:34:32  monitorremovedv2 DP-1                  (no TB device-disconnect)
08:34:41  monitoradded again at 120.04Hz
08:34:57  pinned 5120x2880@60; still dropped ~20s later
08:40:00  thunderbolt: failed to reach state TB_PORT_UP / lost during suspend
08:40:06  replug: 3840x2160@60 scale 1.5; dropped again at 08:40:28
08:42:31  replug with TB power/control=on; DP-1 up then gone at 08:42:56
          while thunderbolt 0-1 stayed runtime=active / authorized

omarchy debug is listed in omarchy --help on 4.0.0-1 but there is no omarchy-debug binary, so no logs.omarchy.org URL.

Suggested fix

  • Do not use mode = "preferred" for Apple Studio / Pro Display XDR. Pin a 60Hz mode (and 2x scale at 5K) in stock defaults or omarchy-hyprland-monitor-watch.
  • Disable Thunderbolt runtime suspend / CL0s for USB4 displays (udev + thunderbolt.clx=N), or document that native USB-C is not reliable on Arrow Lake and point at the DP+USB-A cable path already on the Omacom page.
  • Update https://learn.omacom.io/3/omacom/75/apple-displays-on-linux — “Intel TB4, just plug USB-C” is not true on this Arrow Lake + Studio Display hardware.
View raw text
### System details

- **Machine:** HP ZBook X G1i 16 inch Mobile Workstation PC
- **CPU/iGPU:** Intel Arrow Lake-P (Arc Pro 130T/140T, `8086:7d51`)
- **dGPU:** NVIDIA RTX PRO 1000 Blackwell (`10de:2db8`), `nvidia-open-dkms 610.57.04-1`
- **Display:** Apple Studio Display XDR over USB4/Thunderbolt (authorized at 40 Gb/s). USB camera/audio/HID work even when video is gone.
- **Omarchy:** 4.0.0-1 (Quattro)
- **Kernel:** 7.1.8-arch1-3
- **Compositor:** Hyprland 0.56.2
- **Stock config:** `~/.config/hypr/monitors.lua` ships `hl.monitor({ output = "", mode = "preferred", position = "auto", scale = 1.25 })`

### What's wrong?

Connecting an Apple Studio Display over Thunderbolt/USB4 makes the external picture flash in and out. USB (camera, speakers, HID) and `boltctl` stay authorized. Only the DisplayPort tunnel (`card0-DP-1`) dies.

Two stacked problems:

1. **Stock `mode = "preferred"` picks [email protected].** That is the first EDID mode. Hyprland brings the display up at 5K@120, scale 1.25, then loses it.

2. **The USB4 DP tunnel still drops even after pinning a sane mode.** `5120x2880@60` and `3840x2160@60` both went `disconnected` after ~20s. Kernel logs include `thunderbolt ... failed to reach state TB_PORT_UP` and `lost during suspend, disconnecting`. The Studio Display node sits at `power/autosuspend_delay_ms=15000` with `control=auto`. Forcing `control=on` on the Thunderbolt devices and the Arrow Lake USB-C root ports (`8086:7ec4` / `8086:7ec6`) stopped full TB disconnects, but `DP-1` still went disconnected while `0-1` stayed `runtime=active`.

This is an Intel USB4 / Thunderbolt 5 (Barlow Ridge JHL9480) path on Arrow Lake, not a dumb HDMI monitor. `thunderbolt.clx=Y` (CL0s) is on and not writable at runtime.

Omarchy's docs say an Intel Thunderbolt 4 machine should just work with a direct USB-C cable (https://learn.omacom.io/3/omacom/75/apple-displays-on-linux). On this Arrow Lake + Studio Display setup it does not.

### Steps to reproduce

1. Fresh Omarchy 4.0.0-1 on an Intel USB4 laptop (here: HP ZBook X G1i).
2. Leave the default `monitors.lua` catch-all (`mode = "preferred"`).
3. Plug in an Apple Studio Display XDR over Thunderbolt/USB4.
4. `boltctl` shows the display authorized; `hyprctl monitors` shows `DP-1` at `[email protected]` with scale `1.25`.
5. After ~60 seconds the picture dies. `hyprctl` no longer lists `DP-1`. USB functions on the display keep working.
6. The display reappears at 120Hz and the cycle repeats.

### Expected

The Studio Display stays up. Prefer a stable 5K mode (5120x2880@60) rather than EDID-preferred 120Hz.

### Workaround attempted (not sufficient)

Pinned the Studio Display so stock `preferred` cannot select 120Hz (do not also leave a catch-all — see #7242):

```lua
hl.monitor({ output = "eDP-1", mode = "preferred", position = "0x0", scale = 1.25 })
hl.monitor({
  output = "desc:Apple Computer Inc Studio XDR",
  mode = "3840x2160@60",
  position = "auto",
  scale = 1.5,
  bitdepth = 8,
})
```

Plus a udev rule forcing Thunderbolt / USB-C root-port `power/control=on`. Video still drops after ~20s.

### Evidence

```
08:33:31  monitoraddedv2 DP-1 Apple Studio XDR  [email protected]  scale 1.25
08:34:32  monitorremovedv2 DP-1                  (no TB device-disconnect)
08:34:41  monitoradded again at 120.04Hz
08:34:57  pinned 5120x2880@60; still dropped ~20s later
08:40:00  thunderbolt: failed to reach state TB_PORT_UP / lost during suspend
08:40:06  replug: 3840x2160@60 scale 1.5; dropped again at 08:40:28
08:42:31  replug with TB power/control=on; DP-1 up then gone at 08:42:56
          while thunderbolt 0-1 stayed runtime=active / authorized
```

`omarchy debug` is listed in `omarchy --help` on 4.0.0-1 but there is no `omarchy-debug` binary, so no logs.omarchy.org URL.

### Suggested fix

- Do not use `mode = "preferred"` for Apple Studio / Pro Display XDR. Pin a 60Hz mode (and 2x scale at 5K) in stock defaults or `omarchy-hyprland-monitor-watch`.
- Disable Thunderbolt runtime suspend / CL0s for USB4 displays (udev + `thunderbolt.clx=N`), or document that native USB-C is not reliable on Arrow Lake and point at the DP+USB-A cable path already on the Omacom page.
- Update https://learn.omacom.io/3/omacom/75/apple-displays-on-linux — “Intel TB4, just plug USB-C” is not true on this Arrow Lake + Studio Display hardware.

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 04:43 UTC