A web browser engine written in Haskell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



Vado is Italian for I go.

This is a demonstration program that is able to load a web page up and render it like in the early 90's. It supports laying out text, different font sizes for headings, inline and block elements, hyperlinks, bold and italics. It supports mousewheel scrolling, too.

I wrote this in a couple evenings, because it seemed straight-forward to do so given the libraries available today. That's a good sign for Haskell. Also, there's an inarticulate gut feeling I have that tells me maybe it's worth celebrating these days in which the web is still viewable in its simplest, earliest form.

The project was possible thanks to a few established Haskell packages:

This project is intended to be easy to build and cross-platform. If you succeed in building this package on a platform that isn't listed in the Building section, please open a PR with those instructions. It uses the cross-platform SDL package, and the probably-less-so cross-platform Cairo package for rendering text.

There's some groundwork for rendering boxes, padding, etc. but no attempt has been made to implement that. One could use the language-css package to parse CSS and add styling to elements.


Demo video


Get Stack for building Haskell projects.

OS X instructions:

$ brew install sdl2 cairo
$ stack install --install-ghc gtk2hs-buildtools
$ stack install

Ubuntu Linux instructions:

$ sudo apt-get install libsdl2-dev libcairo2-dev
$ stack install --install-ghc gtk2hs-buildtools
$ stack install

FreeBSD instructions:

$ pkg install cairo
$ pkg install sdl2
$ stack install --install-ghc gtk2hs-buildtools
$ stack install

Windows instructions

$ stack exec -- pacman -Sy mingw-w64-x86_64-cairo mingw-w64-x86_64-pkg-config mingw-w64-x86_64-SDL2
$ stack install --install-ghc gtk2hs-buildtools
$ stack install


It accepts an initial home page URL:

$ vado <complete URL including https or http>

It doesn't support back/forward or other history features.