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.
ASUS ExpertBook B9406CAA (Panther Lake): display refresh stall. Fixed by xe.enable_panel_replay=0, touchpad also fixed
Reported by mijuny · filed Apr 24, 2026Closed upstream on 2026-04-29 by its own reporter mijuny. GitHub close reason: completed. Closed by its own reporter — not by itself evidence of a fix.
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?
- Not yet mapped to any requirement or component.
- 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?
- Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.
Original report
System details
ASUS ExpertBook B9406CAA (BIOS 304), Intel Panther Lake / Arc B390 [8086:b080], Omarchy 3.6, kernel linux-ptl 6.19.10, Hyprland 0.54.3
What's wrong?
Hi!
Just managed to install Omarchy 3.6 on this just-released laptop (ASUS ExpertBook B9406CAA, Panther Lake). Noticed bugs with display / GPU and found a fix with Claude Code. During the install, the only way to "refresh" the screen was to switch between tty3 and tty1. So, installation was possible but a bit messy. The fix below was produced with Claude Code (Opus 4.7), disclosed up front.
Symptom
On a default Omarchy 3.6 install on this laptop, the display never refreshes after the first scanout. Every display layer appears frozen until a VT switch forces a full modeset:
- Plymouth / LUKS prompt: logo briefly shows, input box never renders, password typed blind is accepted.
- Kernel TTY (fbcon on xedrmfb): type a command, see nothing; Ctrl+Alt+F3 then Ctrl+Alt+F1 makes the previous state snap on-screen.
- Hyprland: session starts normally and runs for minutes spawning child processes, but the screen stays on the last-committed frame.
Install was only possible by flipping TTYs repeatedly to force redraws. Until the fix below, nomodeset at the Limine editor was the only workaround — usable but falls back to simpledrm and kills GPU acceleration, video decode, and battery features.
Root cause
Panel Replay — a Xe3-new self-refresh mechanism, default-on in the xe driver — has a broken exit/wake path on this eDP panel. The panel latches the last-presented frame in self-refresh and never wakes for subsequent atomic commits. A full modeset (VT switch) resets the link and one new frame appears, then the same stall again. The older xe.enable_psr=0 knob does NOT cover Panel Replay; they are distinct parameters (see modinfo xe).
Fix
One kernel argument:
xe.enable_panel_replay=0Bisection
| Cmdline delta | Result |
|---|---|
| default | stall at every layer |
nomodeset | works via simpledrm (workaround only) |
xe.enable_dc=0 | no effect |
xe.enable_dc=0 xe.enable_fbc=0 xe.enable_psr=0 xe.enable_panel_replay=0 xe.enable_psr2_sel_fetch=0 xe.enable_dmc_wl=0 | works |
| `xe.enable_panel_replay=0` alone | works — confirmed minimal fix |
Working-boot state with xe.enable_panel_replay=0 alone: xe bound to /sys/bus/pci/drivers/xe, card0-eDP-1 connected enabled 2880x1800, intel_backlight exposed, Hyprland healthy (watchdog attached), zero DRM errors or warnings in dmesg.
xe init log excerpt (clean):
xe 0000:00:02.0: [drm] Found pantherlake (device ID b080) integrated display version 30.00 stepping B0
xe 0000:00:02.0: [drm] Finished loading DMC firmware i915/xe3lpd_dmc.bin (v2.33)
xe 0000:00:02.0: [drm] Tile0: GT0: Using GuC firmware from xe/ptl_guc_70.bin version 70.60.0
xe 0000:00:02.0: [drm] Tile0: GT1: Using HuC firmware from xe/ptl_huc.bin version 10.3.3
[drm] Initialized xe 1.1.0 for 0000:00:02.0 on minor 0
fbcon: xedrmfb (fb0) is primary deviceProposed Omarchy integration
Mirrors the existing omarchy-hw-dell-xps-oled / migrations/1776781956.sh pattern (which already mentions Panel Replay in the Dell XPS context). Two scoping options:
- Narrow: match ASUS vendor +
product_name=ASUS EXPERTBOOK B9406CAA. Only affects this exact model. - Broader: match ASUS vendor + Panther Lake (via
omarchy-hw-intel-ptl). Applies on any ASUS PTL laptop — safer for forward compat with related ExpertBook SKUs, at the cost of applying on ASUS PTL machines that may not need it.
Either adds:
bin/omarchy-hw-asus-expertbook-ptl(or broader) — DMI match scriptinstall/config/hardware/intel/ptl-panel-replay.sh— drops/etc/limine-entry-tool.d/asus-panel-replay.confappendingKERNEL_CMDLINE[default]+=" xe.enable_panel_replay=0"and runslimine-update, same shape asptl-kernel.sh
I'd be happy to open a PR.
Secondary: touchpad (separate upstream bug — NOT Omarchy's fault)
The internal Pixart 093A:4F05 touchpad (ASUS ACPI ASCP1D80) works perfectly at kernel level. evtest /dev/input/event9 captures 3938 events in 20 seconds of active use with proper ABS_MT_POSITION_X/Y, pressure, tracking IDs, multi-touch slots up to 5 contacts, 126x84mm @ ~31.5 units/mm.
libinput 1.31.1 silently drops every motion event with:
event9 - ASCP1D80:00 093A:4F05 Touchpad: kernel bug: Touch jump detected and discarded.BTN_LEFT presses pass through — clicks on the pad register — but pointer motion does not. Kernel deltas are 0.06–0.86mm per poll, well below libinput's 20mm jump threshold, so this is a libinput false positive. The device is missing from /usr/share/libinput/30-vendor-pixart.quirks (has 0255, 0274, 1336 but not 4F05).
Filing upstream at freedesktop separately. Mentioned here because other B9406 owners will hit it; a Bluetooth/USB mouse is an acceptable short-term workaround.
Here is Claude Code report about how we got Touchpad working.
Update: also got the touchpad working.
libinput 1.31.1 was discarding every motion event from this pad with kernel bug: Touch jump detected and discarded. The kernel path was fine — evtest showed proper Precision Touchpad reports with full ABS_MT_* and multi-touch slots. The trigger is that this pad reports ABS_PRESSURE/ABS_MT_PRESSURE values of 0–1 (very low), which appears to confuse libinput's contact stability check and drive a false-positive on jump detection. Masking the pressure axes fixes it — same pattern as the existing Asus UX302LA entry in libinput's shipped 50-system-asus.quirks.
Fix: create /etc/libinput/local-overrides.quirks with:
[ASUS ExpertBook B9406CAA Touchpad]
MatchBus=i2c
MatchUdevType=touchpad
MatchVendor=0x093A
MatchProduct=0x4F05
MatchDMIModalias=dmi:*svnASUS*:pn*B9406*
AttrEventCode=-ABS_MT_PRESSURE;-ABS_PRESSURE;Then log out + log back in (or reboot) so Hyprland's libinput context reloads the quirks. Aquamarine does not re-read quirks on device hot-remove/add in a live session — a full compositor restart is required.
Result after reboot: motion, clicks, two-finger scroll, tap-to-click all work normally. Confirmed on my box.
Trade-off: libinput loses pressure-based palm rejection for this pad. Fine in practice on this laptop; clickpad mechanics carry the weight.
Proper upstream fix: this entry belongs in libinput's 30-vendor-pixart.quirks (where 093A:0255, 093A:0274, 093A:1336 already live — 093A:4F05 just isn't listed yet). I'll PR it at gitlab.freedesktop.org/libinput/libinput so it ships with the library instead of needing a local override.
Omarchy integration: the same omarchy-hw-asus-expertbook-ptl hook I proposed for the display fix could drop this quirks file too. Both fixes in one PR if that's easier.
View raw text
### System details ASUS ExpertBook B9406CAA (BIOS 304), Intel Panther Lake / Arc B390 [8086:b080], Omarchy 3.6, kernel linux-ptl 6.19.10, Hyprland 0.54.3 ### What's wrong? Hi! Just managed to install Omarchy 3.6 on this just-released laptop (ASUS ExpertBook B9406CAA, Panther Lake). Noticed bugs with display / GPU and found a fix with Claude Code. During the install, the only way to "refresh" the screen was to switch between tty3 and tty1. So, installation was possible but a bit messy. The fix below was produced with Claude Code (Opus 4.7), disclosed up front. --- ### Symptom On a default Omarchy 3.6 install on this laptop, the display never refreshes after the first scanout. Every display layer appears frozen until a VT switch forces a full modeset: - **Plymouth / LUKS prompt**: logo briefly shows, input box never renders, password typed blind is accepted. - **Kernel TTY (fbcon on xedrmfb)**: type a command, see nothing; Ctrl+Alt+F3 then Ctrl+Alt+F1 makes the previous state snap on-screen. - **Hyprland**: session starts normally and runs for minutes spawning child processes, but the screen stays on the last-committed frame. Install was only possible by flipping TTYs repeatedly to force redraws. Until the fix below, `nomodeset` at the Limine editor was the only workaround — usable but falls back to `simpledrm` and kills GPU acceleration, video decode, and battery features. ### Root cause **Panel Replay** — a Xe3-new self-refresh mechanism, default-on in the `xe` driver — has a broken exit/wake path on this eDP panel. The panel latches the last-presented frame in self-refresh and never wakes for subsequent atomic commits. A full modeset (VT switch) resets the link and one new frame appears, then the same stall again. The older `xe.enable_psr=0` knob does NOT cover Panel Replay; they are distinct parameters (see `modinfo xe`). ### Fix One kernel argument: ``` xe.enable_panel_replay=0 ``` ### Bisection | Cmdline delta | Result | | --- | --- | | default | stall at every layer | | `nomodeset` | works via simpledrm (workaround only) | | `xe.enable_dc=0` | no effect | | `xe.enable_dc=0 xe.enable_fbc=0 xe.enable_psr=0 xe.enable_panel_replay=0 xe.enable_psr2_sel_fetch=0 xe.enable_dmc_wl=0` | works | | **`xe.enable_panel_replay=0` alone** | **works — confirmed minimal fix** | Working-boot state with `xe.enable_panel_replay=0` alone: `xe` bound to `/sys/bus/pci/drivers/xe`, `card0-eDP-1 connected enabled 2880x1800`, `intel_backlight` exposed, Hyprland healthy (watchdog attached), zero DRM errors or warnings in dmesg. xe init log excerpt (clean): ``` xe 0000:00:02.0: [drm] Found pantherlake (device ID b080) integrated display version 30.00 stepping B0 xe 0000:00:02.0: [drm] Finished loading DMC firmware i915/xe3lpd_dmc.bin (v2.33) xe 0000:00:02.0: [drm] Tile0: GT0: Using GuC firmware from xe/ptl_guc_70.bin version 70.60.0 xe 0000:00:02.0: [drm] Tile0: GT1: Using HuC firmware from xe/ptl_huc.bin version 10.3.3 [drm] Initialized xe 1.1.0 for 0000:00:02.0 on minor 0 fbcon: xedrmfb (fb0) is primary device ``` ### Proposed Omarchy integration Mirrors the existing `omarchy-hw-dell-xps-oled` / `migrations/1776781956.sh` pattern (which already mentions Panel Replay in the Dell XPS context). Two scoping options: 1. **Narrow**: match ASUS vendor + `product_name=ASUS EXPERTBOOK B9406CAA`. Only affects this exact model. 2. **Broader**: match ASUS vendor + Panther Lake (via `omarchy-hw-intel-ptl`). Applies on any ASUS PTL laptop — safer for forward compat with related ExpertBook SKUs, at the cost of applying on ASUS PTL machines that may not need it. Either adds: - `bin/omarchy-hw-asus-expertbook-ptl` (or broader) — DMI match script - `install/config/hardware/intel/ptl-panel-replay.sh` — drops `/etc/limine-entry-tool.d/asus-panel-replay.conf` appending `KERNEL_CMDLINE[default]+=" xe.enable_panel_replay=0"` and runs `limine-update`, same shape as `ptl-kernel.sh` I'd be happy to open a PR. ### Secondary: touchpad (separate upstream bug — NOT Omarchy's fault) The internal Pixart `093A:4F05` touchpad (ASUS ACPI `ASCP1D80`) works perfectly at kernel level. `evtest /dev/input/event9` captures 3938 events in 20 seconds of active use with proper `ABS_MT_POSITION_X/Y`, pressure, tracking IDs, multi-touch slots up to 5 contacts, 126x84mm @ ~31.5 units/mm. libinput 1.31.1 silently drops every motion event with: ``` event9 - ASCP1D80:00 093A:4F05 Touchpad: kernel bug: Touch jump detected and discarded. ``` `BTN_LEFT` presses pass through — clicks on the pad register — but pointer motion does not. Kernel deltas are 0.06–0.86mm per poll, well below libinput's 20mm jump threshold, so this is a libinput false positive. The device is missing from `/usr/share/libinput/30-vendor-pixart.quirks` (has `0255`, `0274`, `1336` but not `4F05`). Filing upstream at freedesktop separately. Mentioned here because other B9406 owners will hit it; a Bluetooth/USB mouse is an acceptable short-term workaround. --- Here is Claude Code report about how we got Touchpad working. --- Update: also got the touchpad working. libinput 1.31.1 was discarding every motion event from this pad with `kernel bug: Touch jump detected and discarded`. The kernel path was fine — evtest showed proper Precision Touchpad reports with full `ABS_MT_*` and multi-touch slots. The trigger is that this pad reports `ABS_PRESSURE`/`ABS_MT_PRESSURE` values of 0–1 (very low), which appears to confuse libinput's contact stability check and drive a false-positive on jump detection. Masking the pressure axes fixes it — same pattern as the existing `Asus UX302LA` entry in libinput's shipped `50-system-asus.quirks`. **Fix**: create `/etc/libinput/local-overrides.quirks` with: ``` [ASUS ExpertBook B9406CAA Touchpad] MatchBus=i2c MatchUdevType=touchpad MatchVendor=0x093A MatchProduct=0x4F05 MatchDMIModalias=dmi:*svnASUS*:pn*B9406* AttrEventCode=-ABS_MT_PRESSURE;-ABS_PRESSURE; ``` Then log out + log back in (or reboot) so Hyprland's libinput context reloads the quirks. Aquamarine does not re-read quirks on device hot-remove/add in a live session — a full compositor restart is required. **Result after reboot**: motion, clicks, two-finger scroll, tap-to-click all work normally. Confirmed on my box. **Trade-off**: libinput loses pressure-based palm rejection for this pad. Fine in practice on this laptop; clickpad mechanics carry the weight. **Proper upstream fix**: this entry belongs in libinput's `30-vendor-pixart.quirks` (where `093A:0255`, `093A:0274`, `093A:1336` already live — `093A:4F05` just isn't listed yet). I'll PR it at gitlab.freedesktop.org/libinput/libinput so it ships with the library instead of needing a local override. **Omarchy integration**: the same `omarchy-hw-asus-expertbook-ptl` hook I proposed for the display fix could drop this quirks file too. Both fixes in one PR if that's easier.
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.
No decision has been recorded yet.