description: Linkyfy is a PySide6 desktop application for LinkedIn automation. It uses Selenium and undetected-chromedriver to launch and control a real browser session, supports persistent browser profile data, and supports authenticated proxy workflows.
snapcraft: PRIVATE
upstream: PRIVATE
upstream-relation: Original developer and publisher
reasoning: Linkyfy currently needs classic confinement because it depends on discovering and launching a real host browser installation rather than only software bundled inside the snap.
In its current architecture, the application:
detects browser binaries from standard host system locations
launches and controls an external Chrome/Chromium process through Selenium and undetected-chromedriver
relies on persistent browser profile/runtime state for automation workflows
supports authenticated local proxy workflows that are part of normal operation
Because of this, the currently available interfaces under strict confinement are not sufficient for the app in its current design. Supporting strict confinement would require a significant redesign of how browser execution is handled.
I understand that strict confinement is generally preferred over classic.
I’ve reviewed the available interfaces, and the app still requires host browser discovery and host browser process control, so strict confinement is not sufficient in its current form.
Also, I believe this classic request may already have been approved, but uploads for the linkyfy snap are still failing with:
(NEEDS REVIEW) confinement ‘classic’ not allowed
Could someone please confirm whether the classic snap declaration has actually been applied in the store for the snap name linkyfy and for this publisher account?
I uploaded a new build of the snap, and the latest upload still fails only on classic confinement review.
The package passes the other checks, but the store still reports:
(NEEDS REVIEW) confinement ‘classic’ not allowed
Could a reviewer please confirm whether classic confinement has been approved and applied for the linkyfy snap under this publisher account? If not, please review this request based on the latest uploaded build.
Classic confinement has not been already granted, as the official way to request it, is the one outlined here.
The snap is not a good candidate for classic conifinement, as it does not fall under one of the supported categories, included in the aforementioned post (#reject). However, the browser-support plug, could be really helpful in your case.
Thank you for the clarification and for suggesting the browser-support plug.
We are currently using browser-support in strict confinement, but we are running into an issue launching Chrome programmatically via ChromeDriver (Selenium automation). Chrome is bundled inside the snap at build time, but it exits immediately with a non-zero status when launched as a subprocess from within the snap environment.
We have already applied the standard flags for sandboxless Chrome (--no-sandbox, --disable-setuid-sandbox, --no-zygote, --disable-gpu) and the snap has browser-support, network, x11, home, and desktop plugs connected. Despite this, Chrome fails to start — it appears the browser-support plug without allow-sandbox: true may not grant sufficient permissions for Chrome to initialise its internal process model.
Our questions:
Would browser-support with allow-sandbox: true resolve this, and is that reviewable for our use case?
Are there any additional plugs or snap interfaces we should be using to allow a bundled Chrome binary to launch and accept ChromeDriver connections inside strict confinement?
Is there a recommended pattern for snaps that need to drive a Chromium-based browser for automation (similar to how the Chromium snap itself is structured)?
We are committed to making strict confinement work and appreciate any guidance you can offer.
Have you tried using the snappy-debug tool and run it alongside your snap ? That should make suggestions for any still missing plugs …
Many plugs are also not automatically connecting, make sure you used the snap connect … command to connect them to their respective slots …