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.
Global fontconfig monospace font overrides explicit Ghostty font-family
Reported by dandresrp · filed May 8, 2026Closed upstream on 2026-05-11 by the merge of PR #5700 (closed by dhh). GitHub close reason: completed.
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
Omarchy’s global fontconfig setup currently makes the selected system monospace font override an explicit font configured in Ghostty.
Expected behavior:
- Omarchy’s Style > Font should set the default monospace font for apps that use monospace.
- Apps with an explicit font configuration should still be able to override it.
Actual behavior:
- ~/.config/ghostty/config sets:
font-family = JetBrainsMono Nerd Font Monoghostty +show-configreports JetBrainsMono correctly.- But
ghostty +show-face --string='abc012Il1'resolves glyphs to the current Omarchy system monospace font, e.g. CaskaydiaCove.
Local diagnostic evidence:
Sort Pattern has 29 elts
family: "CaskaydiaCove Nerd Font Mono" "JetBrainsMono Nerd Font Mono"
First font Pattern
family: "CaskaydiaCove Nerd Font Mono" "CaskaydiaCove NFM"
file: "/usr/share/fonts/TTF/CaskaydiaCoveNerdFontMono-Regular.ttf"This seems to happen because Omarchy’s ~/.config/fontconfig/fonts.conf uses a strong assignment for monospace, so fontconfig prepends the global Omarchy font ahead of Ghostty’s explicit font.
This is related to #519, but slightly different: #519 was closed after the font menu started updating fontconfig. The remaining issue is that the global font acts like an override instead of a default.
A good outcome would be:
- fc-match monospace still follows Omarchy’s selected global font.
- Ghostty and other apps can still use their explicit per-app font configuration.
View raw text
Omarchy’s global fontconfig setup currently makes the selected system monospace font override an explicit font configured in Ghostty. Expected behavior: - Omarchy’s Style > Font should set the default monospace font for apps that use `monospace`. - Apps with an explicit font configuration should still be able to override it. Actual behavior: - `~/.config/ghostty/config` sets: ```ini font-family = JetBrainsMono Nerd Font Mono ``` - `ghostty +show-config` reports JetBrainsMono correctly. - But `ghostty +show-face --string='abc012Il1'` resolves glyphs to the current Omarchy system monospace font, e.g. CaskaydiaCove. Local diagnostic evidence: ```text Sort Pattern has 29 elts family: "CaskaydiaCove Nerd Font Mono" "JetBrainsMono Nerd Font Mono" First font Pattern family: "CaskaydiaCove Nerd Font Mono" "CaskaydiaCove NFM" file: "/usr/share/fonts/TTF/CaskaydiaCoveNerdFontMono-Regular.ttf" ``` This seems to happen because Omarchy’s `~/.config/fontconfig/fonts.conf` uses a strong assignment for `monospace`, so fontconfig prepends the global Omarchy font ahead of Ghostty’s explicit font. This is related to #519, but slightly different: #519 was closed after the font menu started updating `fontconfig`. The remaining issue is that the global font acts like an override instead of a default. A good outcome would be: - `fc-match monospace` still follows Omarchy’s selected global font. - Ghostty and other apps can still use their explicit per-app font configuration.
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.