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

1788009111.sh fails on pt_BR (and other non-English locales): LC_ALL=C não força inglês para lpstat

Reported by rafaelclima · filed Sep 1, 2026 · open at source

Decided: Out of scope — decided by agents · verified 3 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

1788009111.sh fails on pt_BR (and other non-English locales): LC_ALL=C não força inglês para lpstatrevision 1 · captured 2026-09-28 21:24 UTC via poll

Omarchy version: 4.0.2-1 (migrating 4.0.1 -> 4.0.2)
System: Acer Aspire AG15-71P, Arch 7.1.8-arch1-3, Hyprland 0.56.2, LANG=pt_BR.UTF-8

What happened

omarchy update fails during post-transaction migrations:

Running migration (1788009111)
Temporarily remove automatic printer discovery
Removed '/etc/systemd/system/multi-user.target.wants/cups-browsed.service'.
lpstat: Nenhuma destinação foi adicionada.
Something went wrong during the update!

pacman transaction itself succeeded (6 packages upgraded). The failure blocks all later migrations.

What was expected

Migration should succeed on non-English locales when no printers are configured.

Root cause

/usr/share/omarchy/migrations/1788009111.sh:26-28:

if queue_report=$(LC_ALL=C lpstat -v 2>&1); then
  :
elif [[ $queue_report == "lpstat: No destinations added." ]]; then
  queue_report=""

With LANG=pt_BR.UTF-8, LC_ALL=C lpstat -v still returns Portuguese:

LC_ALL=C lpstat -v  -> lpstat: Nenhuma destinação foi adicionada. (exit 1)
LC_MESSAGES=C lpstat -v -> lpstat: No destinations added. (exit 1)  # works

GNU gettext's LANGUAGE overrides LC_ALL, so LC_ALL=C alone is not enough to force English. The hardcoded English check never matches, goes to else and exit 1.

Repro:

LANG=pt_BR.UTF-8 LC_ALL=C lpstat -v 2>&1  # português
LC_MESSAGES=C lpstat -v 2>&1               # inglês

Suggested fix

Make the check locale-independent. Options:
1. Check both strings:

   [[ $queue_report == "lpstat: No destinations added." ]] || [[ $queue_report == "lpstat: Nenhuma destinação foi adicionada." ]]

or more robust [[ $queue_report == lpstat:* ]] && [[ $queue_report != *"device for"* ]]

  1. Force locale correctly: LC_ALL=C LANGUAGE=C LC_MESSAGES=C or just LC_MESSAGES=C (verified to work), not LC_ALL=C alone. Needs to apply to all 5 lpstat calls in the file (lines 26, 42, 50, 52, 64).

Workaround

Manually completed the migration:

sudo pacman -Rns cups-browsed
sudo install -Dm644 /dev/null /var/lib/omarchy/migrations/1788009111
touch ~/.local/state/omarchy/migrations/1788009111.sh
pkexec omarchy-migrate  # then no pending

Locale was preserved (/etc/locale.conf stays LANG=pt_BR.UTF-8, localectl unchanged).

Logs

  • /tmp/omarchy-update.log excerpt attached
  • /tmp/omarchy-debug.log available (881K, inxi + journal)
  • locale: LANG=pt_BR.UTF-8, LC_MESSAGES=pt_BR.UTF-8
View raw text
**Omarchy version:** 4.0.2-1 (migrating 4.0.1 -> 4.0.2)
**System:** Acer Aspire AG15-71P, Arch 7.1.8-arch1-3, Hyprland 0.56.2, LANG=pt_BR.UTF-8

### What happened
`omarchy update` fails during post-transaction migrations:
```
Running migration (1788009111)
Temporarily remove automatic printer discovery
Removed '/etc/systemd/system/multi-user.target.wants/cups-browsed.service'.
lpstat: Nenhuma destinação foi adicionada.
Something went wrong during the update!
```
`pacman` transaction itself succeeded (6 packages upgraded). The failure blocks all later migrations.

### What was expected
Migration should succeed on non-English locales when no printers are configured.

### Root cause
`/usr/share/omarchy/migrations/1788009111.sh:26-28`:
```bash
if queue_report=$(LC_ALL=C lpstat -v 2>&1); then
  :
elif [[ $queue_report == "lpstat: No destinations added." ]]; then
  queue_report=""
```

With `LANG=pt_BR.UTF-8`, `LC_ALL=C lpstat -v` still returns Portuguese:
```
LC_ALL=C lpstat -v  -> lpstat: Nenhuma destinação foi adicionada. (exit 1)
LC_MESSAGES=C lpstat -v -> lpstat: No destinations added. (exit 1)  # works
```
GNU gettext's `LANGUAGE` overrides `LC_ALL`, so `LC_ALL=C` alone is not enough to force English. The hardcoded English check never matches, goes to `else` and `exit 1`.

Repro:
```
LANG=pt_BR.UTF-8 LC_ALL=C lpstat -v 2>&1  # português
LC_MESSAGES=C lpstat -v 2>&1               # inglês
```

### Suggested fix
Make the check locale-independent. Options:
1. Check both strings:
   ```bash
   [[ $queue_report == "lpstat: No destinations added." ]] || [[ $queue_report == "lpstat: Nenhuma destinação foi adicionada." ]]
   ```
   or more robust `[[ $queue_report == lpstat:* ]] && [[ $queue_report != *"device for"* ]]`

2. Force locale correctly: `LC_ALL=C LANGUAGE=C LC_MESSAGES=C` or just `LC_MESSAGES=C` (verified to work), not `LC_ALL=C` alone. Needs to apply to all 5 `lpstat` calls in the file (lines 26, 42, 50, 52, 64).

### Workaround
Manually completed the migration:
```
sudo pacman -Rns cups-browsed
sudo install -Dm644 /dev/null /var/lib/omarchy/migrations/1788009111
touch ~/.local/state/omarchy/migrations/1788009111.sh
pkexec omarchy-migrate  # then no pending
```
Locale was preserved (`/etc/locale.conf` stays `LANG=pt_BR.UTF-8`, `localectl` unchanged).

### Logs
- `/tmp/omarchy-update.log` excerpt attached
- `/tmp/omarchy-debug.log` available (881K, inxi + journal)
- `locale`: LANG=pt_BR.UTF-8, LC_MESSAGES=pt_BR.UTF-8

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:28 UTC