Published on 2022-09-10


Introducing Vimini: a desktop browser for Gemini

I've been working for a few months on Vimini, a desktop browser for Gemini (and Gopher, in the future) based on what's been my favorite web browser for a few years: qutebrowser. It's written in Rust and has been tested in Linux and Windows. A very modest 0.1.0 version, which barely opens Gemini capsules, can be downloaded from its repository at sourcehut and run with "cargo run":

All the required instructions to start browsing are available in the home page. The only dependency which may cause trouble at the time of building the executable is Iced, the library that provides the GUI. Possible solutions here:

What is Gemini

I discovered Gemini around June 2021 by the hand of an article titled "Gemini is useless", and from one useless thing to another, I felt captivated. A limited, simplistic protocol, with no commercial appeal and even a bit nostalgic; I had to get in. Gemini can be thought of an equivalent of HTTPS+HTML with focus on simplicity and privacy. Its native hypertext format, text/gemini (or gemtext, among friends), contains no more than links, headers, quotes, lists, and preformatted text.

What first had me interested is how easy it should be for someone to write a client from scratch. "It should be possible for somebody who had no part in designing the protocol to accurately hold the entire protocol spec in their head after reading a well-written description of it once or twice" claims one of its initial goals, and another one adds that "a basic but usable client should fit comfortably within 50 or so lines of code in a modern high-level language". Debatable, yes, but if I look at the code than handles requests and responses in Vimini today, it's no longer than 75 lines. The function that parses gemtext documents is 90 lines long. I would say we are close.

If you are reading this blog in its HTML version, I invite you to visit the gemini version to get a glimpse of what it's like.