4 ms·
I avoid electron apps because it is almost anti web. I would use apps built more like electron if they simply removed the electron part and replaced the app wi
by mbrumlow 7y ago
I avoid electron apps because it is almost anti web.
I would use apps built more like electron if they simply removed the electron part and replaced the app with a name for a namespace and simply shipped tht js/html/images along with a api service.
Installing would be binding tht app to tht name space and using the browser of choose and navigating to namespace.localhost. In this case rsync.localhost.
The system would be a bit more complex for handling auth and a few things but let's not get bogged down in solvable details.
Then I could access my apps from my phone. Another system (if I chose to expose them publicly).
- pjmlp 7y agoSame here, just give me a PWA, or if one so insists in using the Web stack for the UI, then deliver the application as a daemon/service that uses whatever is the standard browser.
- mattnewton 7y agoThis is more or less how Jupyter notebooks work, and I agree this experience is pretty great. Make it a local web server and the browser becomes your UI.
- mbrumlow 7y agoLike maybe we can build this out. A common daemon for registering with. The concept would be very simple to build. I might start a github project. - Global daemon to register apps with. Apps could be installed system wide or per use. Think plopping a zip/tar/ or directory structure in something like /usr/local/webap.d/(namespace) -- might be abetter directory. Then a manifest file that describes some things about the service, such as how to start the API service, and the default entry point (index.html). - The global service is responsible for bringing apps on line by way of instance activation on say visiting a name space, or just keep them running. - Services once launched pick random port from range to bind to and system service acts as a reverse proxy and common auth for validating the local user. Maybe even ensure each of the API services are run per user and jailed to the home directory IDK, just thinking off the top of my head, I have written bits and pieces of this for various work projects, but never glued the idea into one single system.
- spirodonfl 7y agoIt's not that hard, actually, I've done this with Node. Since you can install Node anywhere, include a binary, or whatever, you can have Node run as a server and it can run with elevated privileges, if needed. You have it scan a directory structure and auto generate a path that you can use in a browser, any browser, to view your newly install app. You can do this with APIs too so you can have internal tools with APIs via a Node server that do all kinds of things. Some simple port forwarding rules (ymmv) make this available to your LAN or to the WWW. Add a DNS layer on top and you have something really cool. I do this for all kinds of stuff, mostly PWAs, but it lets me have my own notes, todo, systems management and more.
- johannes1234321 7y agoIt is easy, till you get into the trouble of local Firewalls, Double use of port numbers and all those details, where the daemon runs unexpectedly or stops without good information to the user etc
- spirodonfl 7y agoThose can be solved
- mbrumlow 7y agoIn my minds eye we would give one dedicated port to the main service. The apps would pick a random unused port, and report back to the main service to which would then become a reverse proxy from the main services port to the bound port. So if the rsync app bound to 5392, it would report back to the main service so. And it would ensure all (or some subset of request) to rsync.localhost were reverse proxied back to localhost:5392. For the most part when I say some request I mean most if not all, but it might be nice to have a system level rsync.localhost/.info uri that would give system level information about the app.
- yjftsjthsd-h 7y agoIf we're on the local system anyways, why not just use an actual socket in the file system?
- johannes1234321 7y agoAnd how zoom on Mac works! (See today's news about the major flaw)
- pandalicious 7y agowhat about local filesystem access, os integration, and all the other things that you expect a desktop app to be able to do (like in this case executing a separate binary) which violate the security models of browsers?
- arithma 7y agoApp becomes a local backend server that has privileged access to the machine (with control over what it accesses, maybe give it a specific user), and a web UI to access the app. Someone in the tree of replies for your parent explained and was contemplating actually going through with it.
- tracker1 7y agoYou can already use node + Carlo if you want something without the browser piece. Of course, then you need to worry about multiple versions of node and the browser, and distribution becomes more of an issue.
- bavell 7y agoYou can't break out of the sandbox to run shell commands et al from a browser. That's where electron & friends come in.