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.
XDG_DESKTOP_DIR="$HOME" makes apps scatter .desktop shortcuts into the home directory
Reported by rogerfsh · 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
Summary
omarchy-provision-user points DESKTOP, TEMPLATES and PUBLICSHARE at $HOME and removes the
folders:
# /usr/bin/omarchy-provision-user (omarchy 4.0.2-1, lines ~98-101)
xdg-user-dirs-update --set TEMPLATES "$HOME"
xdg-user-dirs-update --set PUBLICSHARE "$HOME"
xdg-user-dirs-update --set DESKTOP "$HOME"
rmdir ~/Templates ~/Public ~/Desktop 2>/dev/null || trueThe intent is clear and I agree with it — Hyprland has no desktop metaphor, so three permanently empty
folders are noise. Pointing an XDG dir at the home directory is also the freedesktop-documented way to
say "this directory doesn't exist here", so this isn't a hack.
The problem is that apps don't interpret it that way. Nothing reads XDG_DESKTOP_DIR=$HOME as
"there is no desktop, skip it". They read it as "the desktop is ~" and write there. So the setting
that exists to keep $HOME tidy is the thing that untidies it.
Impact
On one machine, after about a day of ordinary use, ~ had collected:
steam.desktop # byte-identical to /usr/share/applications/steam.desktop
chrome-<id>-Default.desktop # Chrome PWA shortcut
chrome-<id>-Default.desktop # Chrome PWA shortcut
chrome-<id>-Default.desktop # Chrome PWA shortcutTwo things make this worse than ordinary clutter:
- The files are inert. Walker and the app menu read
~/.local/share/applications/, where correct
copies already exist. The ~ copies are never used by anything.
2. They are stale duplicates. The Chrome PWA copies in ~ lacked the %U argument and the
MimeType= line that the ~/.local/share/applications/ versions carry, so they were also worse
copies — e.g. missing x-scheme-handler/mailto registration.
Users are unlikely to connect loose .desktop files in $HOME to an XDG setting, so they accumulate
indefinitely.
Reproduce
On a stock Omarchy install:
omarchy-install-steam(or install Steam by any means) and let it create a desktop shortcut, and/or- In Chrome, open any site → Cast, save and share → Install page as app
ls ~/*.desktop
Expected: nothing in $HOME. Actual: one .desktop file per shortcut.
Suggested fix
Keep the intent, drop the side effect — give DESKTOP a real but out-of-the-way target rather than$HOME:
xdg-user-dirs-update --set DESKTOP "$HOME/.local/share/desktop"No visible folder in $HOME, and anything that insists on writing a desktop shortcut lands somewhere
ignorable. TEMPLATES and PUBLICSHARE are rarely written to by anything, so they matter less — but
the same reasoning applies.
An alternative, if a hidden path feels wrong, is to leave the folders in place and accept three empty
directories; that at least confines the writes.
Environment
- omarchy
4.0.2-1 xdg-user-dirs 0.20-1/etc/xdg/user-dirs.defaultsships the standard layout (DESKTOP=Desktop,TEMPLATES=Templates,
PUBLICSHARE=Public); the $HOME values come from omarchy-provision-user, not the system default.
Related
- #1331 — proposal that Omarchy avoid creating files in the user's home directory (same concern, other direction)
View raw text
### Summary `omarchy-provision-user` points `DESKTOP`, `TEMPLATES` and `PUBLICSHARE` at `$HOME` and removes the folders: ```bash # /usr/bin/omarchy-provision-user (omarchy 4.0.2-1, lines ~98-101) xdg-user-dirs-update --set TEMPLATES "$HOME" xdg-user-dirs-update --set PUBLICSHARE "$HOME" xdg-user-dirs-update --set DESKTOP "$HOME" rmdir ~/Templates ~/Public ~/Desktop 2>/dev/null || true ``` The intent is clear and I agree with it — Hyprland has no desktop metaphor, so three permanently empty folders are noise. Pointing an XDG dir at the home directory is also the freedesktop-documented way to say "this directory doesn't exist here", so this isn't a hack. **The problem is that apps don't interpret it that way.** Nothing reads `XDG_DESKTOP_DIR=$HOME` as "there is no desktop, skip it". They read it as "the desktop is `~`" and write there. So the setting that exists to keep `$HOME` tidy is the thing that untidies it. ### Impact On one machine, after about a day of ordinary use, `~` had collected: ``` steam.desktop # byte-identical to /usr/share/applications/steam.desktop chrome-<id>-Default.desktop # Chrome PWA shortcut chrome-<id>-Default.desktop # Chrome PWA shortcut chrome-<id>-Default.desktop # Chrome PWA shortcut ``` Two things make this worse than ordinary clutter: 1. **The files are inert.** Walker and the app menu read `~/.local/share/applications/`, where correct copies already exist. The `~` copies are never used by anything. 2. **They are stale duplicates.** The Chrome PWA copies in `~` lacked the `%U` argument and the `MimeType=` line that the `~/.local/share/applications/` versions carry, so they were also *worse* copies — e.g. missing `x-scheme-handler/mailto` registration. Users are unlikely to connect loose `.desktop` files in `$HOME` to an XDG setting, so they accumulate indefinitely. ### Reproduce On a stock Omarchy install: 1. `omarchy-install-steam` (or install Steam by any means) and let it create a desktop shortcut, and/or 2. In Chrome, open any site → **Cast, save and share → Install page as app** 3. `ls ~/*.desktop` Expected: nothing in `$HOME`. Actual: one `.desktop` file per shortcut. ### Suggested fix Keep the intent, drop the side effect — give `DESKTOP` a real but out-of-the-way target rather than `$HOME`: ```bash xdg-user-dirs-update --set DESKTOP "$HOME/.local/share/desktop" ``` No visible folder in `$HOME`, and anything that insists on writing a desktop shortcut lands somewhere ignorable. `TEMPLATES` and `PUBLICSHARE` are rarely written to by anything, so they matter less — but the same reasoning applies. An alternative, if a hidden path feels wrong, is to leave the folders in place and accept three empty directories; that at least confines the writes. ### Environment - omarchy `4.0.2-1` - `xdg-user-dirs 0.20-1` - `/etc/xdg/user-dirs.defaults` ships the standard layout (`DESKTOP=Desktop`, `TEMPLATES=Templates`, `PUBLICSHARE=Public`); the `$HOME` values come from `omarchy-provision-user`, not the system default. ### Related - #1331 — proposal that Omarchy avoid creating files in the user's home directory (same concern, other direction)
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:24 UTC