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.
Theme templates not rendering due to yq string interpolation bug
Reported by justcarlson · filed Feb 2, 2026Closed upstream on 2026-02-02 by its own reporter justcarlson. 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
Problem
Theme templates (ghostty.conf, hyprland.conf, etc.) are not being rendered correctly. Template variables like {{ background }}, {{ accent_strip }} are passed through literally instead of being replaced with color values.
Error when running `omarchy-theme-set`:
Error: 1:86: lexer: invalid input text "^#\";\"\"))|g\""Affected files in `~/.config/omarchy/current/theme/`:
- ghostty.conf: background = {{ background }} (should be background = #FFFCF0)
- hyprland.conf: rgb({{ accent_strip }}) (should be rgb(205EA6))
- And other templated configs
Root Cause
In bin/omarchy-theme-set-templates, the yq expression that generates both standard and _strip substitutions in a single call doesn't work correctly with recent versions of yq (v4.50.1):
# Current (broken)
sed 's/=/:/' "$COLORS_FILE" | yq -r 'to_entries[] | "s|{{ \(.key) }}|\(.value)|g", "s|{{ \(.key)_strip }}|\(.value | sub("^#";""))|g"' > "$sed_script"The nested string interpolation with sub() causes:
1. A lexer error for the sub("^#";"") syntax
2. The $k variable not interpolating in the second output string (produces {{ _strip }} instead of {{ accent_strip }})
Fix
Split into two separate yq calls:
# Generate standard substitutions
sed 's/=/:/' "$COLORS_FILE" | yq -r 'to_entries[] | "s|{{ \(.key) }}|\(.value)|g"' > "$sed_script"
# Generate _strip substitutions (separate call)
sed 's/=/:/' "$COLORS_FILE" | yq -r 'to_entries[] | "s|{{ \(.key)_strip }}|\(.value | sub(\"#\"; \"\"))|g"' >> "$sed_script"Note: The sub() regex also changed from "^#" to \"#\" (escaped quotes work, raw quotes with semicolon separator cause lexer errors).
Environment
- yq version: v4.50.1 (https://github.com/mikefarah/yq/)
- Omarchy version: latest from git
- Theme tested: flexoki-light
Workaround
Until fixed, users can manually apply the fix by running:
# Re-run theme-set after patching
omarchy-theme-set "Your Theme Name"Or manually render templates using the corrected yq syntax.
View raw text
## Problem
Theme templates (ghostty.conf, hyprland.conf, etc.) are not being rendered correctly. Template variables like `{{ background }}`, `{{ accent_strip }}` are passed through literally instead of being replaced with color values.
**Error when running `omarchy-theme-set`:**
```
Error: 1:86: lexer: invalid input text "^#\";\"\"))|g\""
```
**Affected files in `~/.config/omarchy/current/theme/`:**
- ghostty.conf: `background = {{ background }}` (should be `background = #FFFCF0`)
- hyprland.conf: `rgb({{ accent_strip }})` (should be `rgb(205EA6)`)
- And other templated configs
## Root Cause
In `bin/omarchy-theme-set-templates`, the yq expression that generates both standard and `_strip` substitutions in a single call doesn't work correctly with recent versions of yq (v4.50.1):
```bash
# Current (broken)
sed 's/=/:/' "$COLORS_FILE" | yq -r 'to_entries[] | "s|{{ \(.key) }}|\(.value)|g", "s|{{ \(.key)_strip }}|\(.value | sub("^#";""))|g"' > "$sed_script"
```
The nested string interpolation with `sub()` causes:
1. A lexer error for the `sub("^#";"")` syntax
2. The `$k` variable not interpolating in the second output string (produces `{{ _strip }}` instead of `{{ accent_strip }}`)
## Fix
Split into two separate yq calls:
```bash
# Generate standard substitutions
sed 's/=/:/' "$COLORS_FILE" | yq -r 'to_entries[] | "s|{{ \(.key) }}|\(.value)|g"' > "$sed_script"
# Generate _strip substitutions (separate call)
sed 's/=/:/' "$COLORS_FILE" | yq -r 'to_entries[] | "s|{{ \(.key)_strip }}|\(.value | sub(\"#\"; \"\"))|g"' >> "$sed_script"
```
Note: The `sub()` regex also changed from `"^#"` to `\"#\"` (escaped quotes work, raw quotes with semicolon separator cause lexer errors).
## Environment
- yq version: v4.50.1 (https://github.com/mikefarah/yq/)
- Omarchy version: latest from git
- Theme tested: flexoki-light
## Workaround
Until fixed, users can manually apply the fix by running:
```bash
# Re-run theme-set after patching
omarchy-theme-set "Your Theme Name"
```
Or manually render templates using the corrected yq syntax.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.