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): -9bcfe7aCargo.toml: patch libcosmic via local path for dev builds -04abd13yoda: depend on libcosmic-yoda (path) instead of upstream libcosmic -02adcc3lockfile: libcosmic-yoda 0.1.0-yoda -> 0.1.0-yoda.2 -a025fd6yoda: prefer cosmic-yoterm over upstream cosmic-term in terminal fallback -e8d62aeyoda: add "Always use this app" toggle to OpenWith dialog -8fb2b15yoda wayland-v5: redirect window_clipboard + cosmic-text to local forks -0595296yoda: Dolphin-style quick actions toolbar under the headerbar -4b6d345yoda: fix missing rename icon in toolbar -8b51af1yoda: use pencil-symbolic for the Rename toolbar button -33a5c8fyoda: phase 2 - customizable toolbar (settings toggles per button) -1cf17dcyoda: phase 3 - drag-drop toolbar editor in Settings -11d4357yoda: add up/down buttons next to drag handle in toolbar editor -af843d2yoda: direct drag-drop reorder on the toolbar itself -94c3e6cyoda: toolbar as segmented_button for working drag reorder -f053819yoda: toolbar icon-only + clean visual (Control style, 32px squares) -338354cImprove initial directory listing latency -d080bc8Resolve cosmic-files warnings without masking -69c35abyoda: switch window_clipboard patch to public Forgejo fork -35e115fyoda: switch cosmic-text patch to public Forgejo fork -6f3adcdchore: clean feature-gated warnings -57ab1ecfix: clean files warnings for terminal build Original tip preserved as tag backup/pre-rebase-upstream-20260524.
78 lines
2.7 KiB
Markdown
78 lines
2.7 KiB
Markdown
# 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:
|
|
|
|
```text
|
|
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:
|
|
|
|
```text
|
|
/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:
|
|
|
|
```ini
|
|
[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:
|
|
|
|
```text
|
|
/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:
|
|
|
|
```sh
|
|
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`.
|