git ssb

1+

mixmix / scuttle-shell



Tree:
📄.gitignore
📄README.md
📄app.bat
📄host-app.js
📄icon.ico
📄icon.png
📄package-lock.json
📄package.json
📁scripts
📄scuttleshell.json
📄server.js
README.md

Native companion app

This repository also contains a native companion app that is able to supply features for Firefox WebExtensions posting to the scuttlebutt platform.

This is useful because there are no WebExtension APIs for TCP and UDP so we can't implement the correct protocols for scuttlebutt. Instead we have a way to use the Native Messaging API to establish communication between a native application (this app) and an authorized WebExtension. We can think of it much like we do with back-end and front-end web programming, this app is the back-end providing features and all the authorized add-ons are front-end interfacing with Firefox users.

Be aware that the companion app is not a requirement, Patchfox can use WebSockets to communicate with a running sbot. So you can run Patchfox in parallel with other clients that start their own sbot or even start it from the command-line with sbot serve. Still, this companion app makes it effortless to use Patchfox.

Dependencies

This native application is NodeJS based and you need to have a recent version of it installed.

How to setup the native app

You need to install the dependencies first:

$ npm install

After that the procedure changes depending on which OS you're running as the configuration of native apps differs by operating system with Windows being a quite convoluted process. To setup the application, meaning place the correct app manifest json in the correct place and fix the paths, run:

$ npm run setup-win

or

$ npm run setup

Depending if you're running Windows 10 or other operating system. Also, if you are running under a unix-like system, you will need to double check the shebang invocation on top of the index.js file to make sure that it points to your NodeJS location. I tried using env there but it didn't work when started from inside Firefox, so it is hardcoded to the default location of NodeJS installation.

Be aware that the setup procedure will place hardcoded paths in files critical for running this app. If you move this application to a different folder or rename any folder in its path, you'll need to run this setup again.

Verifying your configuration

Run the verification script as:

$ npm run check-win

or

$ npm run check

Depending if you're running Windows 10 or other operating system.

How to install the add-on

On Firefox Nightly (or Firefox Dev Edition) go to about:debugging and use the load temporary add-on button to browse your files. Select the manifest.json file included with this repository in the webextension/build folder.

To learn more about WebExtension development and debugging, go to MDN Web Docs - WebExtensions.

Commentary, getting help

Actually, I kinda think the whole process for native app communication is quite bad from a developer ergonomics perspective and I have no idea why Google implemented it like that in the first place but it set a precedent and now Firefox is doing it similarly. I am trying to supply some configuration verification scripts but in case everything fails, read the documentation about WebExtensions and native messaging to get back on track:

Built with git-ssb-web