cosmic-files/docs/local-performance-and-portal-notes.md
Leyoda f1b1f8d799 yoda: cosmic-files customizations (squashed 21 commits)
This commit squashes the 21 local commits that customize cosmic-files for
the yoda stack, to allow a clean rebase on upstream/master.

Original commits (chronological):

- 9bcfe7a Cargo.toml: patch libcosmic via local path for dev builds
- 04abd13 yoda: depend on libcosmic-yoda (path) instead of upstream libcosmic
- 02adcc3 lockfile: libcosmic-yoda 0.1.0-yoda -> 0.1.0-yoda.2
- a025fd6 yoda: prefer cosmic-yoterm over upstream cosmic-term in terminal fallback
- e8d62ae yoda: add "Always use this app" toggle to OpenWith dialog
- 8fb2b15 yoda wayland-v5: redirect window_clipboard + cosmic-text to local forks
- 0595296 yoda: Dolphin-style quick actions toolbar under the headerbar
- 4b6d345 yoda: fix missing rename icon in toolbar
- 8b51af1 yoda: use pencil-symbolic for the Rename toolbar button
- 33a5c8f yoda: phase 2 - customizable toolbar (settings toggles per button)
- 1cf17dc yoda: phase 3 - drag-drop toolbar editor in Settings
- 11d4357 yoda: add up/down buttons next to drag handle in toolbar editor
- af843d2 yoda: direct drag-drop reorder on the toolbar itself
- 94c3e6c yoda: toolbar as segmented_button for working drag reorder
- f053819 yoda: toolbar icon-only + clean visual (Control style, 32px squares)
- 338354c Improve initial directory listing latency
- d080bc8 Resolve cosmic-files warnings without masking
- 69c35ab yoda: switch window_clipboard patch to public Forgejo fork
- 35e115f yoda: switch cosmic-text patch to public Forgejo fork
- 6f3adcd chore: clean feature-gated warnings
- 57ab1ec fix: clean files warnings for terminal build

Original tip preserved as tag backup/pre-rebase-upstream-20260524.
2026-05-24 21:27:30 +02:00

2.7 KiB

Local performance and portal notes

Date: 2026-05-05

This repository carries a local patch aimed at improving initial directory display latency in large folders, plus a system-level workaround for a COSMIC portal FileChooser crash observed with Firefox and Chromium.

Directory listing latency

The slow path was the initial construction of Item values in src/tab.rs. On a test folder with about 2000 entries, raw filesystem enumeration and stat calls completed in a few milliseconds, while COSMIC Files took multiple seconds before showing the directory.

The local patch keeps initial item construction cheap:

  • directory child counts are no longer computed synchronously in item_from_entry and item_from_gvfs_info;
  • initial MIME detection uses extension-based mime_guess;
  • regular files use a generic file icon during the initial scan instead of resolving the full MIME icon immediately.

This keeps folders and .desktop files special-cased, while avoiding expensive per-file work for ordinary files during first paint.

Measured locally during investigation:

  • before the MIME/icon changes: about 3.1 seconds for ~/Téléchargements;
  • after avoiding full MIME icon resolution during scan: below the temporary 100 ms perf-log threshold for the same folder.

File chooser portal workaround

Firefox and Chromium were failing to open Save As on the first attempt because xdg-desktop-portal-cosmic crashed while handling FileChooser.

Logs showed:

Backend call failed: Remote peer disconnected
xdg-desktop-portal-cosmic ... status=11/SEGV

The working local system workaround is to remove org.freedesktop.impl.portal.FileChooser from:

/usr/share/xdg-desktop-portal/portals/cosmic.portal

so the file chooser falls back to GTK. The resulting local cosmic.portal keeps COSMIC for the other interfaces:

[portal]
DBusName=org.freedesktop.impl.portal.desktop.cosmic
Interfaces=org.freedesktop.impl.portal.Access;org.freedesktop.impl.portal.Screenshot;org.freedesktop.impl.portal.Settings;org.freedesktop.impl.portal.ScreenCast
UseIn=COSMIC

Backups created locally:

/usr/share/xdg-desktop-portal/portals/cosmic.portal.bak-codex-20260505-filechooser
/usr/share/xdg-desktop-portal/cosmic-portals.conf.bak-codex-20260505
/usr/share/xdg-desktop-portal/cosmic-portals.conf.bak-codex-20260505-2

After editing portal files, restart:

systemctl --user restart xdg-desktop-portal.service xdg-desktop-portal-gtk.service

Package updates may overwrite /usr/share/xdg-desktop-portal/portals/cosmic.portal. If Save As starts needing two attempts again, re-check that FileChooser has not been reintroduced in cosmic.portal.