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.
Copy URL shortcut (Alt+Shift+L) dead after pre-package migration: stale Chromium command registration points at old extension ID
Reported by SisyphusOfCorinth · filed Aug 13, 2026Closed upstream on 2026-08-13 by the merge of PR #6821 (closed by dhh). GitHub close reason: completed.
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
System details
Intel i9-12900HK, Intel Iris Xe + NVIDIA RTX 3050 Ti Mobile, Omarchy 4.0.0.r1708.g144f4d1-1, Chromium 151.0.7922.137 (Arch)
What's wrong?
Alt+Shift+L (Copy URL) does nothing — not in Chromium, not in any web app. Same symptom as #4745, which was closed without a diagnosis. I traced it to the root cause; it affects installs that migrated from the pre-package era (~/.local/share/omarchy).
Root cause
- Pre-package installs loaded the copy-url extension unpacked from
~/.local/share/omarchy/default/chromium/extensions/copy-url, and back then itsmanifest.jsonhad nokey. Chromium derives an unpacked extension's ID from a hash of its load path, so on my machine it got IDikkebdkaanlebnifjnbeiaklodhbjcci(= first 16 bytes of sha256 of the absolute path, mapped to a–p; verifiable). - On first load, Chromium recorded the extension's suggested shortcut in the profile:
extensions.commands["linux:Alt+Shift+L"] → ikkebdk…inDefault/Preferences. That registration persists indefinitely. - Omarchy later moved to
/usr/share/omarchyand pinned the extension with a manifestkey, giving it the current IDbgpiichlckmfanooecilcjemknkcpngb. - Chromium's command service never assigns a suggested key that is already registered to another extension — even one that no longer exists. So the current extension silently never claims Alt+Shift+L, and the keypress dispatches to a ghost.
Everything else checks out on an affected system (native-messaging host manifests and host binary present, --load-extension correct in chromium-flags.conf), which makes this miserable to debug: clicking the extension's toolbar action copies the URL fine — only the keyboard shortcut is dead. Brave is affected identically via brave-flags.conf (same stale entry in its Default/Preferences).
Corroborating detail: yt-dlp's Alt+Shift+D worked here because its current key-derived ID (dedjgkn…) holds that registration — only copy-url on this machine predates the path move.
Reproduction (simulates the migration history)
- Load an extension with a suggested command key via
--load-extensionfrom path A, manifest withoutkey. Launch once so Chromium registers the shortcut. Quit. - Add the manifest
key(or move to path B) so the extension ID changes. - Relaunch.
extensions.commandsinDefault/Preferencesstill maps the accelerator to the old ID; the new ID never gets it; the shortcut does nothing.
Fix verified locally
With the browser closed, delete the stale extensions.commands["linux:Alt+Shift+L"] entry (and the orphaned extensions.settings["ikkebdk…"] entry) from Default/Preferences in both Chromium and Brave profiles. On the next launch the current extension re-registers Alt+Shift+L by itself and the shortcut works again.
Suggested resolution
- A migration that removes stale
extensions.commandsentries whose extension ID is the path-derived hash of$HOME/.local/share/omarchy/default/chromium/extensions/<name>(deterministic per user, computable in the migration) for chromium/brave/chrome/edge profile dirs. Needs the browser-not-running case handled, since Chromium rewrites Preferences on exit. - Same cleanup applies in principle to yt-dlp (
Alt+Shift+D) for users whose stale registration predates itskey. whatsapp-slimstill ships without a manifestkey, so its ID is still path-derived — pinning it now would prevent this bug class recurring if its path or packaging ever changes.
View raw text
### System details Intel i9-12900HK, Intel Iris Xe + NVIDIA RTX 3050 Ti Mobile, Omarchy 4.0.0.r1708.g144f4d1-1, Chromium 151.0.7922.137 (Arch) ### What's wrong? Alt+Shift+L (Copy URL) does nothing — not in Chromium, not in any web app. Same symptom as #4745, which was closed without a diagnosis. I traced it to the root cause; it affects installs that migrated from the pre-package era (`~/.local/share/omarchy`). **Root cause** 1. Pre-package installs loaded the copy-url extension unpacked from `~/.local/share/omarchy/default/chromium/extensions/copy-url`, and back then its `manifest.json` had no `key`. Chromium derives an unpacked extension's ID from a hash of its load path, so on my machine it got ID `ikkebdkaanlebnifjnbeiaklodhbjcci` (= first 16 bytes of sha256 of the absolute path, mapped to a–p; verifiable). 2. On first load, Chromium recorded the extension's suggested shortcut in the profile: `extensions.commands["linux:Alt+Shift+L"] → ikkebdk…` in `Default/Preferences`. That registration persists indefinitely. 3. Omarchy later moved to `/usr/share/omarchy` and pinned the extension with a manifest `key`, giving it the current ID `bgpiichlckmfanooecilcjemknkcpngb`. 4. Chromium's command service never assigns a suggested key that is already registered to another extension — even one that no longer exists. So the current extension silently never claims Alt+Shift+L, and the keypress dispatches to a ghost. Everything else checks out on an affected system (native-messaging host manifests and host binary present, `--load-extension` correct in `chromium-flags.conf`), which makes this miserable to debug: clicking the extension's toolbar action copies the URL fine — only the keyboard shortcut is dead. Brave is affected identically via `brave-flags.conf` (same stale entry in its `Default/Preferences`). Corroborating detail: yt-dlp's Alt+Shift+D worked here because its current key-derived ID (`dedjgkn…`) holds that registration — only copy-url on this machine predates the path move. **Reproduction (simulates the migration history)** 1. Load an extension with a suggested command key via `--load-extension` from path A, manifest without `key`. Launch once so Chromium registers the shortcut. Quit. 2. Add the manifest `key` (or move to path B) so the extension ID changes. 3. Relaunch. `extensions.commands` in `Default/Preferences` still maps the accelerator to the old ID; the new ID never gets it; the shortcut does nothing. **Fix verified locally** With the browser closed, delete the stale `extensions.commands["linux:Alt+Shift+L"]` entry (and the orphaned `extensions.settings["ikkebdk…"]` entry) from `Default/Preferences` in both Chromium and Brave profiles. On the next launch the current extension re-registers Alt+Shift+L by itself and the shortcut works again. **Suggested resolution** - A migration that removes stale `extensions.commands` entries whose extension ID is the path-derived hash of `$HOME/.local/share/omarchy/default/chromium/extensions/<name>` (deterministic per user, computable in the migration) for chromium/brave/chrome/edge profile dirs. Needs the browser-not-running case handled, since Chromium rewrites Preferences on exit. - Same cleanup applies in principle to yt-dlp (`Alt+Shift+D`) for users whose stale registration predates its `key`. - `whatsapp-slim` still ships without a manifest `key`, so its ID is still path-derived — pinning it now would prevent this bug class recurring if its path or packaging ever changes.
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.