Classic request for sublime-merge

I’ve built a snap of sublime-merge, a graphical tool, from the same super lovely people as sublime-text. I’ve pushed it to the store under the snapcrafters account, and have pushed the yaml to the snapcrafters repo at https://github.com/snapcrafters/sublime-merge

Sublime merge requires access to arbitrary binaries, such as defining a text editor binary to launch from within the application. As such it requires classic confinement.

If sublime-merge were to use xdg-open to spawn an editor for opening files, would classic confinement work? Is it possible to patch this so that classic is not required?

Sublime Merge is proprietary, so I have no way to patch the code to use xdg-open. It also optionally uses the system git library. Which would break when confined.

Being a proprietary application is not typically a reason to justify classic confinement. gedit is an analogous application that is in strict mode and other applications use personal-files for git integration. Have you tried LD_PRELOAD? Have you filed an upstream bug to support xdg-open or snaps in general?

I didn’t use being a proprietary application as a reason to justify classic. I pointed out I can’t change the code because it’s a proprietary application. No, I haven’t contacted upstream because based on past experience of snapping sublime-text, they didn’t have time / inclination to adopt/support the snap. I will contact them and see what they say though.

You mention git integration, which as I understand it is to consume the git config. I am talking about calling out to external binaries outside the snap.

Have I tried LD_PRELOAD to achieve what?

Well, see below, maybe it isn’t needed after all.

Can you provide more information? What kind of external binaries? For git hooks? Is this operating more like an IDE?

Using xdg-open, but again, see above.

Yes, it has options for which git binary to use and which binary for text editor. These clearly fail when strictly confined because it can’t see the binaries outside the editor, which could be anywhere and named anything. The default editor is their other product (also available as a snap) which wouldn’t be accessible either.

I don’t actually understand how I would use LD_PRELOAD, if needed, sorry. Do you have an example?

The requirements are understood as this falls more into the IDE category (configurable text editor and tools). I’ve vetted the publisher. This is now live.

I do not. Basically, unless the program is statically linked, it is likely but not guaranteed to use standard libraries. Investigating its use of libraries, strace, ltrace, etc might reveal it is using an API whose behavior could be altered via LD_PRELOAD. You don’t need to do this for this particular snap since classic has been granted, but the technique is available (though it could be brittle since the snap could stop using the API, use it differently, etc which is why upstream involvement is best).

Ok, thanks for that information.