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-4083GitHub issuePublicReceived

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.

Received and recorded verbatim. Nothing has been checked yet.

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

Theme templates not rendering due to yq string interpolation bugrevision 1 · captured 2026-10-04 11:49 UTC via poll

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

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.