I have recently uploaded the following snap, https://snapcraft.io/shell-assistant/listing, which currently has private visibility. Please advise if there’s anything you need in order to review it.
Shell Assistant is an application of the Terminal Emulator/SSH Client/IDE/File Manager class.
While sandboxed, it can be used successfully for remote host connections over SSH, but for shells on the local host, it runs into the following difficulties:
The local shell inherits the permissions of the sandbox, which limits the user’s capability for terminal operations and file management. The user would at least need to be aware of this limitation, and a method of elevating privilege to that of the logged in user would need to be available for things to be successful.
There are other peculiarities, running e.g. bash in a sandboxed environment, that are complicated to describe.
For file management, the user would at least need some way to access the same files that they have permissions to access as a user.
While I love the sandboxing model (it’s something that desktop apps have needed for a long time), this application by it’s nature, might not be such a good fit.
Possible work-arounds are:
Remove local shell & file management, but it would be a sad Linux terminal emulator that didn’t offer the opportunity to run a local terminal on Linux. I think this was the approach used by Termius, but they got roasted in their reviews for doing this.
Provide (via the snap framework) a dialog, so that the user can select Classic Confinement, or pre-connect any plugged interfaces, prior to launch. This might not be a bad solution, and it would also simplify the process of connecting interfaces via GUI. However, as far as I am aware, no such interface exists yet.
I see that there are other terminal apps on the snap store:
- terminalpp - Uses classic confinement.
- termius-app - Uses sandboxed model, but users did not like that the terminal emulator could not run effectively on the local machine.
I also see that the following application types are supported for classic confinement, so it seems that this is not unique (Process for reviewing classic confinement snaps):
- Terminal emulators, multiplexers and shells
Of course, if you have any suggestions as to how Shell Assistant could be made to work in a sandboxed environment, I would eager to consider them.
Please let me know if you’ve any questions or if I can help you in any other way.