aboutsummaryrefslogtreecommitdiff

Hydrilla&Haketilo

Haketilo is a tool to modify pages being opened in a web browser. It can block pages' scripts and optionally inject user-specified ones.

Haketilo started as a browser extension (a WebExtension) with a dedicated user scripts repository server, Hydrilla. It has since been rewritten as an HTTP proxy. This repository contains the Python code of Hydrilla and Haketilo.

Installation and running

Head on to the relevant wiki article for usage instructions for casual users.

Hacking

At the moment the recommended method of hacking Haketilo and Hydrilla's codebase is through the GNU Guix package manager.

A Guix version of at least 1.1.0 is expected. Most development tasks have been automated through Makefile. Rules use the guix time-machine command under the hood to pull and run a fixed Guix version that is known to work with the code. The most important make rules are described below.

make wheel

Builds the project and put a source tarbal and a Python wheel under dist/.

make dist

Generates a source tarbal under dist/.

make release

Produces a standalone, relocatable, binary release tarball that should work on most GNU/Linux systems. The tarball is written as ./haketilo-and-hydrilla-bin-<VERSION>-<ARCHITECTURE>.tar.gz.

make shell

Spawns a development shell with project's all dependencies and dev dependencies available.

make shell-with-haketilo

Spawns a shell with Haketilo and Hydrilla built and available by means of a Guix profile.

make catalogs

Rebuilds GNU gettext message catalogs used for localization.

make refresh-catalogs

Extracts messages form source files, refreshes the GNU gettext message catalog source files and rebuilds the catalogs.

make test

Runs the automated test suite.

make run-haketilo

Runs haketilo program from sources.

mypy-lint

Runs mypy static type checker over source files of the project.

mypy-lint-server, mypy-lint-builder, mypy-lint-haketilo

Runs mypy static type checker over source files used in the relevant part of the project.

make clean

Removes generated files.

Contributing, asking for help, giving feedback, reporting bugs

Development occurs on our issue tracker. You can also write directly to Wojtek if you prefer.

Copying

Hydrilla is Copyright (C) 2021-2022 Wojtek Kosior and contributors, entirely available under the GNU Affero General Public License version 3 or later. Some files might also give you broader permissions, see comments inside them.

I, Wojtek Kosior, thereby promise not to sue for violation of this project's license. Although I request that you do not make use of this code in a proprietary program, I am not going to enforce this in court.