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.
omarchy-toggle-hybrid-gpu has no Vfio case: a failed force-igpu restore strands the machine in Vfio with no supported way back
Reported by dreamsgarage · filed Sep 14, 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
MSI laptop, Intel UHD 630 iGPU + NVIDIA RTX 2070 Mobile dGPU (muxless hybrid), Omarchy 4.0.3-1, Linux 7.2.3-arch1-3, Hyprland 0.56.2-2, supergfxctl 5.2.7-2, nvidia-open-dkms 610.57.04-1, Limine + UKI boot.
What's wrong?
Omarchy's GPU cycle is only ever meant to be Integrated <-> Hybrid. default/systemd/system-sleep/force-igpu uses Vfio as an internal transient to detach the nvidia driver across sleep:
pre (hibernate): switch_mode Vfio
post (resume): switch_mode Vfio -> switch_mode Integratedsupergfxd persists that Vfio request into /etc/supergfxd.conf. force-igpu runs under set -e, so when switch_mode Vfio returns 1 (its confirm poll times out), the script aborts before switch_mode Integrated ever runs. The saved mode is left at Vfio.
bin/omarchy-toggle-hybrid-gpu has cases for only two of the three modes:
case "$gpu_mode" in
"Integrated") ... ;;
"Hybrid") ... ;;
*)
echo "Hybrid GPU not found or in unknown mode."
exit 1
;;
esacSo once the saved mode is Vfio, the menu entry still appears — bin/omarchy-hw-hybrid-gpu greps supergfxctl -s, which returns [Integrated, Hybrid, Vfio] and matches Hybrid — but selecting it immediately exits with Hybrid GPU not found or in unknown mode. There is no supported way back to either end of the cycle.
Evidence from this machine
The transition failed on 2026-09-12 and was never restored:
Sep 12 21:22:26 systemd-sleep[7847]: Could not confirm the GPU transition to Vfio mode
Sep 12 21:22:26 (system-sleep)[7846]: '/usr/lib/systemd/system-sleep/force-igpu' failed with exit status 1.Every boot since (8 of them) has come up in Vfio:
$ supergfxctl -g
Vfio
$ supergfxctl -s
[Integrated, Hybrid, Vfio]
$ cat /etc/supergfxd.conf
{
"mode": "Vfio",
"vfio_enable": true,
"vfio_save": false,
...
}Note vfio_save is false — the value Omarchy's own installer writes, which appears intended to stop Vfio from being persisted — yet the saved mode is Vfio across reboots.
The resulting state is also internally inconsistent. supergfxd wrote a blacklist into /etc/modprobe.d/supergfxd.conf:
blacklist nouveau
blacklist nvidia_drm
blacklist nvidia_uvm
blacklist nvidia_modeset
blacklist nvidia
options vfio-pci ids=10DE:1F10,10DE:10F9,10DE:1ADA,10DE:1ADB,...but nvidia re-loaded and reclaimed the dGPU before vfio-pci could bind, so the daemon reports Vfio while the hardware is actually running Hybrid:
$ lspci -nnk -s 01:00.0
01:00.0 VGA compatible controller: NVIDIA Corporation TU106M [GeForce RTX 2070 Mobile]
Kernel driver in use: nvidia
$ ls /sys/bus/pci/drivers/vfio-pci/ | grep ^0000
(no devices bound)
$ nvidia-smi
(works, reports the RTX 2070)What I expected
Toggling GPU modes should always leave a supported mode saved, and the toggle should be able to recover from Vfio rather than dead-ending on it.
Steps to reproduce
- Hybrid Intel+NVIDIA laptop with
supergfxctlinstalled. - Menu -> Hardware -> Hybrid GPU -> switch to Integrated. Reboot.
- Hibernate and resume (or otherwise make
force-igpu'sswitch_mode Vfioconfirm poll fail). - Reboot.
supergfxctl -gnow reportsVfio. - Menu -> Hardware -> Hybrid GPU ->
Hybrid GPU not found or in unknown mode.
Recovery, for anyone who lands here
With supergfxd stopped (it rewrites the file while running), set "mode": "Hybrid" in /etc/supergfxd.conf, delete /etc/modprobe.d/supergfxd.conf, remove the two Integrated-only files, regenerate the boot image, and reboot:
sudo systemctl stop supergfxd
sudo rm -f /etc/modprobe.d/supergfxd.conf
sudo rm -f /usr/lib/systemd/system-sleep/force-igpu
sudo rm -f /etc/systemd/system/supergfxd.service.d/delay-start.conf
# edit /etc/supergfxd.conf -> "mode": "Hybrid"
sudo systemctl daemon-reload && sudo systemctl start supergfxd
sudo limine-mkinitcpio # or mkinitcpio -P; modconf bakes modprobe.d into the imageSuggested fixes
Either one alone closes the dead end:
- Add a
"Vfio")case toomarchy-toggle-hybrid-gputhat offers recovery to Hybrid or Integrated, instead of falling through to the catch-all. - Make
force-igpurestore the intended mode on failure — trap the abort soswitch_mode Integratedstill runs rather than exiting underset -ewithVfiosaved.
Possibly related but distinct: #8551 (daemon hangs after a failed rmmod, saved mode Integrated), #5408 (blacklist recreation), #5428 (menu detection, since fixed by the supergfxctl -s rewrite).
Filed by Claude Opus 5 via Claude Code.
View raw text
### System details
MSI laptop, Intel UHD 630 iGPU + NVIDIA RTX 2070 Mobile dGPU (muxless hybrid), Omarchy 4.0.3-1, Linux 7.2.3-arch1-3, Hyprland 0.56.2-2, supergfxctl 5.2.7-2, nvidia-open-dkms 610.57.04-1, Limine + UKI boot.
### What's wrong?
Omarchy's GPU cycle is only ever meant to be `Integrated <-> Hybrid`. `default/systemd/system-sleep/force-igpu` uses `Vfio` as an internal transient to detach the nvidia driver across sleep:
```
pre (hibernate): switch_mode Vfio
post (resume): switch_mode Vfio -> switch_mode Integrated
```
`supergfxd` **persists** that `Vfio` request into `/etc/supergfxd.conf`. `force-igpu` runs under `set -e`, so when `switch_mode Vfio` returns 1 (its confirm poll times out), the script aborts *before* `switch_mode Integrated` ever runs. The saved mode is left at `Vfio`.
`bin/omarchy-toggle-hybrid-gpu` has cases for only two of the three modes:
```bash
case "$gpu_mode" in
"Integrated") ... ;;
"Hybrid") ... ;;
*)
echo "Hybrid GPU not found or in unknown mode."
exit 1
;;
esac
```
So once the saved mode is `Vfio`, the menu entry still appears — `bin/omarchy-hw-hybrid-gpu` greps `supergfxctl -s`, which returns `[Integrated, Hybrid, Vfio]` and matches `Hybrid` — but selecting it immediately exits with `Hybrid GPU not found or in unknown mode.` There is no supported way back to **either** end of the cycle.
### Evidence from this machine
The transition failed on 2026-09-12 and was never restored:
```
Sep 12 21:22:26 systemd-sleep[7847]: Could not confirm the GPU transition to Vfio mode
Sep 12 21:22:26 (system-sleep)[7846]: '/usr/lib/systemd/system-sleep/force-igpu' failed with exit status 1.
```
Every boot since (8 of them) has come up in `Vfio`:
```console
$ supergfxctl -g
Vfio
$ supergfxctl -s
[Integrated, Hybrid, Vfio]
$ cat /etc/supergfxd.conf
{
"mode": "Vfio",
"vfio_enable": true,
"vfio_save": false,
...
}
```
Note `vfio_save` is `false` — the value Omarchy's own installer writes, which appears intended to stop `Vfio` from being persisted — yet the saved mode is `Vfio` across reboots.
The resulting state is also internally inconsistent. `supergfxd` wrote a blacklist into `/etc/modprobe.d/supergfxd.conf`:
```
blacklist nouveau
blacklist nvidia_drm
blacklist nvidia_uvm
blacklist nvidia_modeset
blacklist nvidia
options vfio-pci ids=10DE:1F10,10DE:10F9,10DE:1ADA,10DE:1ADB,
```
...but nvidia re-loaded and reclaimed the dGPU before `vfio-pci` could bind, so the daemon reports `Vfio` while the hardware is actually running Hybrid:
```console
$ lspci -nnk -s 01:00.0
01:00.0 VGA compatible controller: NVIDIA Corporation TU106M [GeForce RTX 2070 Mobile]
Kernel driver in use: nvidia
$ ls /sys/bus/pci/drivers/vfio-pci/ | grep ^0000
(no devices bound)
$ nvidia-smi
(works, reports the RTX 2070)
```
### What I expected
Toggling GPU modes should always leave a *supported* mode saved, and the toggle should be able to recover from `Vfio` rather than dead-ending on it.
### Steps to reproduce
1. Hybrid Intel+NVIDIA laptop with `supergfxctl` installed.
2. Menu -> Hardware -> Hybrid GPU -> switch to Integrated. Reboot.
3. Hibernate and resume (or otherwise make `force-igpu`'s `switch_mode Vfio` confirm poll fail).
4. Reboot. `supergfxctl -g` now reports `Vfio`.
5. Menu -> Hardware -> Hybrid GPU -> `Hybrid GPU not found or in unknown mode.`
### Recovery, for anyone who lands here
With `supergfxd` stopped (it rewrites the file while running), set `"mode": "Hybrid"` in `/etc/supergfxd.conf`, delete `/etc/modprobe.d/supergfxd.conf`, remove the two Integrated-only files, regenerate the boot image, and reboot:
```bash
sudo systemctl stop supergfxd
sudo rm -f /etc/modprobe.d/supergfxd.conf
sudo rm -f /usr/lib/systemd/system-sleep/force-igpu
sudo rm -f /etc/systemd/system/supergfxd.service.d/delay-start.conf
# edit /etc/supergfxd.conf -> "mode": "Hybrid"
sudo systemctl daemon-reload && sudo systemctl start supergfxd
sudo limine-mkinitcpio # or mkinitcpio -P; modconf bakes modprobe.d into the image
```
### Suggested fixes
Either one alone closes the dead end:
1. Add a `"Vfio")` case to `omarchy-toggle-hybrid-gpu` that offers recovery to Hybrid or Integrated, instead of falling through to the catch-all.
2. Make `force-igpu` restore the intended mode on failure — trap the abort so `switch_mode Integrated` still runs rather than exiting under `set -e` with `Vfio` saved.
Possibly related but distinct: #8551 (daemon *hangs* after a failed `rmmod`, saved mode `Integrated`), #5408 (blacklist recreation), #5428 (menu detection, since fixed by the `supergfxctl -s` rewrite).
---
Filed by Claude Opus 5 via Claude Code.
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 13:30 UTC