Hello everyone and Merry Christmas!
I just started my adventure in the world of snap development and I’m trying to convert one of the few apps that I use and are missing from the Snap Store. After reading through the starter documentation and the Docs section in general, I have a few things that aren’t quite clear.
First off, I should explain what Enpass is. It’s my password manager of choice, it’s closed source so it comes in precompiled DEB and RPM packages by default. You can find the installation info here.
So far, my snapcraft.yaml looks like this:
name: enpass base: core18 version: '22.214.171.1243' summary: Unofficial Snap for the Enpass Password Manager description: Offline Password Manager and Secure Vault. Saves and fill in all your passwords, cards and other details. Free for Mac, Windows and Linux. grade: devel # must be 'stable' to release into candidate/stable channels confinement: classic # use 'strict' once you have the right plugs and slots apps: enpass: command: opt/enpass/Enpass parts: enpass-deb: plugin: dump source: "https://apt.enpass.io/pool/main/e/enpass/enpass_$SNAPCRAFT_PROJECT_VERSION_amd64.deb" source-type: deb stage-packages: - libxss1 - libcups2 - libfreetype6 - libpng16-16 - libgl1-mesa-glx - libice6 - libsm6 - libx11-xcb1 - libxrender1 - libfontconfig1 - libgtk-3-0 - libpango-1.0-0 - libpulse0 - libxcb-glx0 - libxkbcommon-x11-0 - libxkbcommon0
However I do have a couple of problems that I am quite confused about:
Should I be starting off with the deb package, rpm package or anything else? The documentation on the plugins was a little unclear as I couldn’t originally figure out originally that I should be using
dump, even though I had a deb file. Also, I’m thinking about automating this in the future, so I would like to know what’s the best way to track updates to the official repositories.
If there’s an example from another Snapcrafter’s project that’s also precompiled, that would be really helpful. The only one that I found was Discord but they have direct downloads on their website and I couldn’t figure out where the script was that tracked the changes.
What are the differences between
devmode? I think I understand the differences outlined here but by that logic
classicconfinement should be more confined than
devmode, correct? I’m asking since this is how my app looks in
Where as in
classicmode, the text is properly rendered.
There are other differences as well, such as the fact that
classicmode launches any links in its own Firefox profile whereas
devmodeuses the already existing one.
Is it correct that I am including so many stage packages? I followed the automatic dependency resolution that I got after running
snapcraftwhere it reported there were number of missing
sofiles, so I tracked each dependency down. Should I be using
There’s still lots more to do and I’m learning as I go so, please, if you have any feedback, I would love to hear it! I’m still a complete noob when it comes to packaging applications, so I might be missing something extremely obvious.
Thanks for reading through all my text! Any and all feedback would be appreciated.