Classic confinement request: designer3

name: designer3

description: DESIGNER 3 is a professional desktop application for designing print products such as photo books, calendars, greeting cards, puzzles and more. Users import photos from arbitrary locations, arrange them on product templates, and order the final print product.

snapcraft: PRIVATE

upstream: PRIVATE

upstream-relation: The snap publisher (motiondrive AG) is the upstream developer and sole maintainer of the project.

supported-category: art and design, photo and video

reasoning:

We evaluated strict confinement and the available interfaces. The following requirements cannot be met:

  1. Unrestricted filesystem access: As a photo product editor, users must import images from any location — USB drives, NAS mounts, network shares, arbitrary directories. home and removable-media are insufficient as they don’t cover network mounts or non-standard mount points. Project files can be saved/opened from arbitrary paths.
  2. Dynamic plugin loading: Product and rendering plugins are loaded at runtime via QPluginLoader from configurable paths. The PerfectlyClear image enhancement library is loaded dynamically via QLibrary::resolve(). Strict confinement prevents loading shared objects from outside $SNAP.
  3. Launching external applications: Users can open images in external editors (GIMP, Krita, etc.) via QProcess::startDetached(), discovered through xdg-mime. Strict confinement does not allow launching arbitrary host applications.
  4. Crash handler requiring ptrace: The integrated Google Breakpad crash handler uses ptrace() for minidump generation and /proc/ access. No existing strict interface provides this capability.
  5. D-Bus desktop integration: The application uses D-Bus for Wayland screenshot capture (org.freedesktop.portal.Screenshot), screensaver inhibition (org.freedesktop.ScreenSaver), and session management (org.gnome.SessionManager). The desktop interface does not fully cover this combination.
  6. Addon system with user-configurable paths: Downloaded addons (fonts, backgrounds, stickers, Hunspell dictionaries) are stored in user-configurable directories outside $SNAP and $SNAP_USER_DATA. personal-files is not feasible since paths are dynamic.
  7. System and addon font access: As a design application, full access to all installed system fonts (/usr/share/fonts/, ~/.local/share/fonts/) is essential. Additional fonts are loaded at runtime from addon directories via QFontDatabase::addApplicationFont().
  8. OAuth2 login via system browser: Google Photos and OneDrive integration require opening the default system browser via QDesktopServices::openUrl() for OAuth2 authentication flows with callback communication to the application.
  9. PDF print output: The application generates print-ready PDFs via QPrinter and requires access to system print services (CUPS) and arbitrary output paths.

No combination of existing interfaces can satisfy all requirements without breaking core functionality.

I understand that strict confinement is generally preferred over classic.

I’ve tried the existing interfaces to make the snap work under strict confinement.

Here a link to our software: https://fotobuch.de/software

Please note that snaps that ask for classic confinement must be in one of the supported categories listed at:

It is very unlikely you will find a matching category in that list for your type of application …

1 Like

This request has been added to the queue for review by the @reviewers team.