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

Screensaver: blank fullscreen window when Ghostty is the default terminal on a fractionally scaled monitor (Ghostty freezes on last pre-resize frame)

Reported by darnoldy · filed Sep 6, 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

Screensaver: blank fullscreen window when Ghostty is the default terminal on a fractionally scaled monitor (Ghostty freezes on last pre-resize frame)revision 1 · captured 2026-09-28 21:23 UTC via poll

System details

AMD Ryzen 9 9950X3D · KVM guest (Proxmox, Q35) with a passed-through NVIDIA RTX 5060 Ti (open kernel module 610.57.04) plus virtio-gpu · Dell 4K@120 at scale 1.25 · Omarchy 4.0.2 · Hyprland 0.56.2 · ghostty 1.3.1-2 · gtk4 4.22.4

What's wrong?

With Ghostty as the default terminal, the idle screensaver opens its fullscreen window but renders nothing — a solid rectangle in the theme background color, per monitor, until input dismisses it.

The Omarchy side is innocent. The root cause is a Ghostty rendering bug: on a fractionally scaled monitor, a Ghostty window that becomes fullscreen (or grows past roughly 2400x1400 logical) permanently displays the last frame drawn before the resize. The pty keeps flowing (the exact screensaver ttfx invocation emits 4.4 MB of output to a correctly-sized 54x211 pty), input works, stty size is right — only presentation stops. That's also why the window shows the theme background instead of black: omarchy-screensaver's OSC 11 arrives after the freeze.

Isolation evidence, all on the same machine:

  • Reproduces with ghostty --config-default-files=false + the stock fullscreen window rule — no Omarchy config involved.
  • Same monitor at scale 1.00: Ghostty fullscreen renders fine. Scale 1.25: frozen. A floating Ghostty at 2400x1400 renders; at 2800x1600 it freezes.
  • foot fullscreen at scale 1.25 renders fine (so does Nautilus fullscreen), so it's not the compositor's fullscreen path.
  • Identical under GSK_RENDERER=ngl/gl/cairo/vulkan — it's Ghostty's own GL surface, not GTK's renderer.
  • render:direct_scanout is off.

The NVIDIA-in-VM setup may be a contributing factor; I can't test bare metal. This likely also explains other "screensaver is black on my 4K monitor" reports from Ghostty users, and it affects any Ghostty window a user fullscreens (SUPER+F) on a fractionally scaled output.

Suggestion: since foot ships in the base install and omarchy-launch-screensaver already supports it, the launcher could fall back to foot for the screensaver when the default terminal is Ghostty and any monitor has a non-integer scale — or just document the pairing until Ghostty fixes it upstream.

Workaround I'm using: a wrapper that points XDG_CONFIG_HOME at a temp dir naming foot.desktop so the stock launcher's xdg-terminal-exec --print-id picks foot, called from a cloned omarchy.idle (which runs into #10404's Stay Awake indicator side effect, for what it's worth) plus a system.screensaver override in omarchy-menu.jsonc.

Happy to provide the full omarchy-debug log, screenshots of the frozen vs. working states, or run further tests.

Disclosure: diagnosed and written with AI assistance (Claude Code); reproduced and reviewed on my machine.

View raw text
### System details

AMD Ryzen 9 9950X3D · KVM guest (Proxmox, Q35) with a passed-through NVIDIA RTX 5060 Ti (open kernel module 610.57.04) plus virtio-gpu · Dell 4K@120 at scale 1.25 · Omarchy 4.0.2 · Hyprland 0.56.2 · ghostty 1.3.1-2 · gtk4 4.22.4

### What's wrong?

With Ghostty as the default terminal, the idle screensaver opens its fullscreen window but renders nothing — a solid rectangle in the theme background color, per monitor, until input dismisses it.

The Omarchy side is innocent. The root cause is a Ghostty rendering bug: **on a fractionally scaled monitor, a Ghostty window that becomes fullscreen (or grows past roughly 2400x1400 logical) permanently displays the last frame drawn before the resize.** The pty keeps flowing (the exact screensaver `ttfx` invocation emits 4.4 MB of output to a correctly-sized 54x211 pty), input works, `stty size` is right — only presentation stops. That's also why the window shows the theme background instead of black: `omarchy-screensaver`'s `OSC 11` arrives after the freeze.

Isolation evidence, all on the same machine:

- Reproduces with `ghostty --config-default-files=false` + the stock `fullscreen` window rule — no Omarchy config involved.
- Same monitor at scale 1.00: Ghostty fullscreen renders fine. Scale 1.25: frozen. A floating Ghostty at 2400x1400 renders; at 2800x1600 it freezes.
- foot fullscreen at scale 1.25 renders fine (so does Nautilus fullscreen), so it's not the compositor's fullscreen path.
- Identical under `GSK_RENDERER=ngl/gl/cairo/vulkan` — it's Ghostty's own GL surface, not GTK's renderer.
- `render:direct_scanout` is off.

The NVIDIA-in-VM setup may be a contributing factor; I can't test bare metal. This likely also explains other "screensaver is black on my 4K monitor" reports from Ghostty users, and it affects any Ghostty window a user fullscreens (SUPER+F) on a fractionally scaled output.

**Suggestion:** since foot ships in the base install and `omarchy-launch-screensaver` already supports it, the launcher could fall back to foot for the screensaver when the default terminal is Ghostty and any monitor has a non-integer scale — or just document the pairing until Ghostty fixes it upstream.

**Workaround I'm using:** a wrapper that points `XDG_CONFIG_HOME` at a temp dir naming `foot.desktop` so the stock launcher's `xdg-terminal-exec --print-id` picks foot, called from a cloned `omarchy.idle` (which runs into #10404's Stay Awake indicator side effect, for what it's worth) plus a `system.screensaver` override in `omarchy-menu.jsonc`.

Happy to provide the full `omarchy-debug` log, screenshots of the frozen vs. working states, or run further tests.

*Disclosure: diagnosed and written with AI assistance (Claude Code); reproduced and reviewed on my machine.*

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 10:55 UTC