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

XDG_DESKTOP_DIR="$HOME" makes apps scatter .desktop shortcuts into the home directory

Reported by rogerfsh · 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

XDG_DESKTOP_DIR="$HOME" makes apps scatter .desktop shortcuts into the home directoryrevision 1 · captured 2026-09-28 21:24 UTC via poll

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

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)
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