{"id":14008371,"url":"https://github.com/chrisdone-archive/vado","last_synced_at":"2025-07-24T03:32:35.925Z","repository":{"id":66674547,"uuid":"99008935","full_name":"chrisdone-archive/vado","owner":"chrisdone-archive","description":"A demo web browser engine written in Haskell","archived":true,"fork":false,"pushed_at":"2019-04-27T09:40:54.000Z","size":24,"stargazers_count":281,"open_issues_count":0,"forks_count":7,"subscribers_count":17,"default_branch":"master","last_synced_at":"2024-11-29T11:10:46.509Z","etag":null,"topics":["cairo","haskell","sdl","sdl2","web"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chrisdone-archive.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-08-01T14:15:54.000Z","updated_at":"2024-10-08T17:17:57.000Z","dependencies_parsed_at":"2023-03-09T09:30:18.776Z","dependency_job_id":null,"html_url":"https://github.com/chrisdone-archive/vado","commit_stats":null,"previous_names":["chrisdone-archive/vado","chrisdone/vado"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisdone-archive%2Fvado","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisdone-archive%2Fvado/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisdone-archive%2Fvado/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisdone-archive%2Fvado/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chrisdone-archive","download_url":"https://codeload.github.com/chrisdone-archive/vado/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227410613,"owners_count":17774777,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cairo","haskell","sdl","sdl2","web"],"created_at":"2024-08-10T11:01:37.667Z","updated_at":"2024-11-30T19:31:02.216Z","avatar_url":"https://github.com/chrisdone-archive.png","language":"Haskell","funding_links":[],"categories":["Haskell"],"sub_categories":[],"readme":"# vado\n\n**Vado** is Italian for *I go*.\n\nThis is a **demonstration program** that is able to load a web page up\nand render it like in the early 90's. It supports laying out text,\ndifferent font sizes for headings, inline and block elements,\nhyperlinks, bold and italics. It supports mousewheel scrolling, too.\n\nI wrote this in a couple evenings, because it seemed straight-forward\nto do so given the libraries available today. That's a good sign for\nHaskell. Also, there's an inarticulate gut feeling I have that tells\nme maybe it's worth celebrating these days in which the web is still\nviewable in its simplest, earliest form.\n\nThe project was possible thanks to a few established Haskell packages:\n\n* [http-client](https://www.stackage.org/package/http-client) for downloading via HTTP.\n* [http-client-tls](https://www.stackage.org/package/http-client-tls) for TLS support.\n* [html-conduit](https://www.stackage.org/package/html-conduit) for parsing the HTML in \"quirks mode\", i.e. supporting\n  garbage HTML.\n* [xml-conduit](https://www.stackage.org/package/xml-conduit) for dealing with the XML tree.\n* [sdl2](https://www.stackage.org/package/sdl2) for creating a window and rendering context, handling mouse\n  events.\n* [sdl2-cairo](https://hackage.haskell.org/package/sdl2-cairo) and\n  [cairo](https://www.stackage.org/package/cairo) for rendering text\n  onto the SDL surface.\n* [network-uri](https://www.stackage.org/package/network-uri) for parsing URIs and combining them.\n\nThis project is intended to be easy to build and cross-platform. If you succeed in\nbuilding this package on a platform that isn't listed in the\n*Building* section, please open a PR with those instructions. It uses\nthe cross-platform SDL package, and the probably-less-so\ncross-platform Cairo package for rendering text.\n\nThere's some groundwork for rendering boxes, padding, etc. but no\nattempt has been made to implement that. One could use the\n[language-css](http://hackage.haskell.org/package/language-css)\npackage to parse CSS and add styling to elements.\n\n## Demo\n\n![Demo video](https://i.imgur.com/vDhpsMw.gif)\n\n## Building\n\n[Get Stack](https://haskell-lang.org/get-started) for building Haskell\nprojects.\n\nOS X instructions:\n\n    $ brew install pkg-config libffi cairo sdl2 sdl2_image\n    $ export PKG_CONFIG_PATH=/usr/local/opt/libffi/lib/pkgconfig\n    $ stack install --install-ghc gtk2hs-buildtools\n    $ stack install\n\nUbuntu Linux instructions:\n\n    $ sudo apt-get install libcairo2-dev libsdl2-dev libsdl2-image-dev\n    $ stack install --install-ghc gtk2hs-buildtools\n    $ stack install\n\nFreeBSD instructions:\n\n**NOTE**: These instructions have not been updated to include SDL-image. If you use FreeBSD, please contribute changes to these instructions!\n\n    $ pkg install cairo\n    $ pkg install sdl2\n    $ stack install --install-ghc gtk2hs-buildtools\n    $ stack install\n\nWindows instructions\n\n    $ stack exec -- pacman -Sy mingw-w64-x86_64-cairo mingw-w64-x86_64-pkg-config mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_image\n    $ stack install --install-ghc gtk2hs-buildtools\n    $ stack install\n\n## Running\n\nIt accepts an initial home page URL:\n\n    $ vado \u003ccomplete URL including https or http\u003e\n\nIt doesn't support back/forward or other history features.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchrisdone-archive%2Fvado","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchrisdone-archive%2Fvado","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchrisdone-archive%2Fvado/lists"}