# 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](https://hydrillabugs.koszko.org/projects/haketilo/wiki/User_manual) 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](https://guix.gnu.org/) 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--.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](https://hydrillabugs.koszko.org/projects/haketilo). You can also write directly to [Wojtek](mailto:koszko@koszko.org) 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.*