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.
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
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
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) # worksGNU 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êsSuggested 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"* ]]
- Force locale correctly:
LC_ALL=C LANGUAGE=C LC_MESSAGES=Cor justLC_MESSAGES=C(verified to work), notLC_ALL=Calone. Needs to apply to all 5lpstatcalls 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 pendingLocale was preserved (/etc/locale.conf stays LANG=pt_BR.UTF-8, localectl unchanged).
Logs
/tmp/omarchy-update.logexcerpt attached/tmp/omarchy-debug.logavailable (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