Flatpak: import settings/data from a native (tarball/.deb/AUR) Slipstream install #416

Open
opened 2026-10-05 09:15:27 +00:00 by sky_line · 0 comments
Owner

People moving from a tarball / .deb / AUR install to the Flatpak (or running both) start the Flatpak with no settings, chat logs, presets, caches or per-account data, because the two keep user data in different places.

Where data lives (verified)

  • Tarball, .deb, AUR: ~/.slipstreamviewer (lldir_linux.cpp, passwd home).
  • Flatpak: --persist=.slipstreamviewer in scripts/packaging/flatpak/org.slipstreamviewer.Slipstream.yml, so the data really lives in ~/.var/app/org.slipstreamviewer.Slipstream/.slipstreamviewer. Inside the sandbox that directory is mounted at ~/.slipstreamviewer, which also means the host's real ~/.slipstreamviewer is hidden inside the sandbox.
  • The viewer importer (slviewerimportcore.cpp findSourceViewers, the Firestorm/LL/Alchemy import) has read-only filesystem permissions for ~/.firestorm*, ~/.secondlife, ~/.alchemyviewer, ~/.alchemynext and ~/.blackdragon, but not for a tarball Slipstream install. Adding --filesystem=~/.slipstreamviewer:ro would collide with the --persist mount on the same path, so it needs a different route.

Goal

On the Flatpak's first run, or from the importer, offer to import settings and data from an existing native Slipstream install, using the same UI as importing from Firestorm/LL. Also cover the reverse (Flatpak → native) for people leaving the Flatpak.

Options to evaluate

  1. The importer reads the native folder through a different mount path. For example, expose the host's real directory via --filesystem=~/.slipstreamviewer:ro, if Flatpak resolves that path outside the persist overlay (check exactly how --persist and --filesystem interact on the same path). Otherwise expose the parent with a narrow pattern, or symlink-free host access (e.g. xdg- paths don't apply here). Investigate before choosing.
  2. Document / file-chooser portal: the importer asks the user to pick their old ~/.slipstreamviewer folder through the portal (works in any sandbox, no permanent permission). Good fallback UI: "Import from another Slipstream install…".
  3. One-time migration outside the sandbox: a documented command (cp -a ~/.slipstreamviewer/. ~/.var/app/org.slipstreamviewer.Slipstream/.slipstreamviewer/), plus a launcher / flatpak-spawn helper. Simple, but manual; good as a wiki fallback either way.

What to import

Same categories as the Firestorm/LL importer:

  • settings and per-account settings;
  • chat transcripts and logs;
  • graphics / camera presets;
  • gesture sets;
  • favourites / landmarks history;
  • the keybindings file;
  • the Discord settings;
  • optionally the caches (texture cache, GPU texture cache, sound cache). Copying caches is fast to rebuild and large, so make it opt-in.

Never overwrite existing Flatpak data without the importer's usual backups. Skip machine-specific items (absolute paths such as custom cache or chat log locations, which need rewriting or prompting).

Done when

  • A Flatpak user with an existing native install can import everything (one click, or a portal pick) on first run or from the importer.
  • The reverse direction is documented, or supported.
  • Wiki install page: a "moving between native and Flatpak" section (ties into #415).
People moving from a **tarball / .deb / AUR install** to the **Flatpak** (or running both) start the Flatpak with no settings, chat logs, presets, caches or per-account data, because the two keep user data in different places. ## Where data lives (verified) - **Tarball, .deb, AUR:** `~/.slipstreamviewer` (`lldir_linux.cpp`, passwd home). - **Flatpak:** `--persist=.slipstreamviewer` in `scripts/packaging/flatpak/org.slipstreamviewer.Slipstream.yml`, so the data really lives in **`~/.var/app/org.slipstreamviewer.Slipstream/.slipstreamviewer`**. Inside the sandbox that directory is mounted at `~/.slipstreamviewer`, which also means the host's real `~/.slipstreamviewer` is **hidden** inside the sandbox. - **The viewer importer** (`slviewerimportcore.cpp` `findSourceViewers`, the Firestorm/LL/Alchemy import) has read-only filesystem permissions for `~/.firestorm*`, `~/.secondlife`, `~/.alchemyviewer`, `~/.alchemynext` and `~/.blackdragon`, but **not** for a tarball Slipstream install. Adding `--filesystem=~/.slipstreamviewer:ro` would collide with the `--persist` mount on the same path, so it needs a different route. ## Goal On the Flatpak's first run, or from the importer, offer to **import settings and data from an existing native Slipstream install**, using the same UI as importing from Firestorm/LL. Also cover the reverse (Flatpak → native) for people leaving the Flatpak. ## Options to evaluate 1. **The importer reads the native folder through a different mount path.** For example, expose the host's real directory via `--filesystem=~/.slipstreamviewer:ro`, if Flatpak resolves that path outside the persist overlay (check exactly how `--persist` and `--filesystem` interact on the same path). Otherwise expose the parent with a narrow pattern, or symlink-free host access (e.g. `xdg-` paths don't apply here). Investigate before choosing. 2. **Document / file-chooser portal:** the importer asks the user to pick their old `~/.slipstreamviewer` folder through the portal (works in any sandbox, no permanent permission). Good fallback UI: "Import from another Slipstream install…". 3. **One-time migration outside the sandbox:** a documented command (`cp -a ~/.slipstreamviewer/. ~/.var/app/org.slipstreamviewer.Slipstream/.slipstreamviewer/`), plus a launcher / flatpak-spawn helper. Simple, but manual; good as a wiki fallback either way. ## What to import Same categories as the Firestorm/LL importer: - settings and per-account settings; - chat transcripts and logs; - graphics / camera presets; - gesture sets; - favourites / landmarks history; - the keybindings file; - the Discord settings; - optionally the caches (texture cache, GPU texture cache, sound cache). Copying caches is fast to rebuild and large, so make it opt-in. Never overwrite existing Flatpak data without the importer's usual backups. Skip machine-specific items (absolute paths such as custom cache or chat log locations, which need rewriting or prompting). ## Done when - [ ] A Flatpak user with an existing native install can import everything (one click, or a portal pick) on first run or from the importer. - [ ] The reverse direction is documented, or supported. - [ ] Wiki install page: a "moving between native and Flatpak" section (ties into #415).
sky_line added this to the Slipstream project 2026-10-06 15:04:13 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#416
No description provided.