This browser extension automatically reloads tabs using the file URI scheme
when their content changes, by using file watch primitives. The Rust crate
notify is used, thus supporting the following backends:
- Linux: inotify
- macOS: FSEvent/kqueue
- *BSD: kqueue
- Windows: ReadDirectoryChanges
To build the extension, you will need npm, make, rsvg-convert, unzip
and a nightly Rust toolchain. After having installed the dependencies, run
the following command to build the extension, using web-ext.
make buildTo build and install the native component, run:
./scripts/gen-installer.sh --current-target-only
./scripts/output/installers/install-$(rustc -vV | sed -n "s/host: //p").shCheck out the help text and header for each script to find out about additional dependencies that may be required, as well as configuration options that may be provided.
You can also run
make runand optionally specify an ARGS variable to run a Firefox/Chromium
session with the extension enabled for debugging.
The extension can be installed from addons.mozilla.org or Chrome Web Store. However, a native component is needed for the extension to work. Install scripts can be found in the releases page.
Note
On Windows, you may need to install the Microsoft Visual C++ Redistributable v14 before being able to use the extension.
First, you will need to install all the dependencies outlined in
scripts/gen-installer.sh and scripts/run-vm-tests.sh.
./scripts/gen-installer.sh will generate a install script for the
native component of the extension, for each supported target, using
POSIX sh on *nix targets andPowershell 5.1 on Windows targets.
You may run ./scripts/run-vm-tests.sh --download to download VM images
and follow the instructions to set up the virtual machines for testing
the extension.
Note
You can also run the tests natively:
cd tests
npm install
npx puppeteer browsers install firefox
BROWSER=firefox EXT_PATH=../web-ext-artifacts node main.ts
BROWSER=chrome EXT_PATH=../web-ext-artifacts node main.tsIf you are in possession of a signing key, you may sign the extension by running
chromium --pack-extension=web-ext-artifacts/extension --pack-extension-key=key.pemTip
By having the extension's public key (which can be found in the manifest's key
field), it is possible to derive the Chrome extension ID:
jq --raw-output '"-----BEGIN PUBLIC KEY-----\n\(.key)\n-----END PUBLIC KEY-----"' src/manifest.json | \
openssl pkey -in /dev/stdin -pubin -outform DER | shasum -a 256 | head -c32 | tr 0-9a-f a-p