Willow web browser suite
I enjoy working in the terminal, but none of the existing pure‐text web
browsers quite provide the full‐featured experience I'm looking for; quite
good for retro computing, not as comfortable as current UI conventions. On the graphical side, meanwhile, there are a
number of extensions which tack keyboard controls onto existing browsers,
but the resulting join is necessarily a bit ugly (there are a few
browsers which have been specifically designed around the keyboard – qutebrowser stands out among
them – but they all still have their own pain points in turn). So, with no
and partially just for the challenge of it, I'm making
my own. There's no
way this will ever be able to compete with the big names, but I hope to
gradually grow, one stable step at a time.
Willow will eventually provide a rich browsing experience across interfaces, protocols, and language; one may render a manuscript marked‐up with TEI tags to a static graphical document (e.g. PDF), open a website it links as part an annotation into an interactive but text‐only interface, and view its source through a Darcs‐style command loop. In addition to local files and the standard HTTP web, it will seamlessly integrate with the Gopher and Gemini protocols (among others yet to be determined) to help nurture the small‐web spaces.
It has not reached those goals yet. At the moment, all that exists is a mostly‐functional HTML parser, and a sketch of the data types comprising the foundation upon which the browser will be built. I have a basic plan of development (tags refer to the speculative goals of the project) roughed out, and a general idea of the architecture I want, but expect it to be a case of perpetual development in the spare time of the single developer, with no concrete timeframe on any particular milestone. Still, I hope that people eventually find Willow to be not just a helpful tool, but an enjoyable experience to use.
Willow is built as a system of modular components:
willow itself provides the datatypes with which the
rendering engines can construct the final view of a document, and
additionally defines some common utilities and shared code to simplify
parsing. The parse engines such as
then use the latter to transform a (already decoded) character stream into
the former skeleton types, which are then passed back to
willow for final polish such as tying together
multiple closely‐linked documents and applying user styles.
The UIs and configuration options will be built first with keyboard‐and‐terminal users in mind (particularly those used to Vim commands, though providing enough options to adapt the controls to something closer to Emacs). However, given the degree of overlap in browsing experiences, all design decisions will additionally consider users of assistive technologies or who otherwise have accessibility concerns; if there is any way in which the interface could be better suited to your particular situation, please do let me know.
All libraries are hosted on the standard package repositories, so the
easiest installation experience would be to simply use the
install command of your preferred tool (Cabal or Stack). Both tools do
also provide means of obtaining the source code, but if you specifically
official tarballs or you want to build Willow without
depending on third‐party interfaces, those are included below as well.
Documentation for the most recent versions are hosted on this website
(links are in the sidebar); documentation for older versions may be found
on both Hackage and Stackage, and anywhere else which pulls information
from either location.
darcs pull https://darcs.eitilt.life/willow/