💾 Archived View for gemini.marmaladefoo.com › blog › 26-May-2021_Romulus_Gemini_client.gmi captured on 2022-04-29 at 12:21:13. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2021-11-30)

-=-=-=-=-=-=-

Romulus Gemini client

Some building blocks for a Gemini client and a new Gemini console app, Romulus.

When one Gemini client is never enough...

Gemini clients are several orders of magnitude easier to build compared to clients for that other famous public hypertext system, whose name we shall not mention here.

I created a C# Gemini client library a while ago - SmolNetSharp, which I use to do the heavy network lifting for my main GUI client GemiNaut.

SmolNetSharp - a cross-platform C# client library for Gemini

GemiNaut - an idiomatic Gemini GUI client for Windows

There is a demonstration console application for SmolNetSharp that retrieves a Gemini page and shows the raw content - basic functionality but not very interactive.

And so having an abstracted back end library, I wondered what other user intefaces for Gemini could be built, perhaps having a quite different UI style and feel to existing ones....

The itch of curiosity inevitably struck, and so to go forth dogfooding again, I decided to have a crack at it myself, creating a console based Gemini Client using a TUI style user interface. To effectively build a quite different user interface atop the same back end.

Building your own Gemini client user interface

Essential UI components for a Gemini client

Whatever is your preferred technology, to build a Gemini client you'll need some sort of UI toolkit, to allow the user to interact with the Gemtext content. As far as I can see, the minimum UI building blocks that you'll need will include user interaction mechanisms for:

These can be implemented on top of various technologies, including GUI component libraries (Gtk, Qt, Windows, HTML) or console libraries (ncurses etc).

Terminal.Gui

For this client I wanted to build a console application, so rather than build the UI elements completely from scratch, I found the well-designed Terminal.Gui which is a cross platform TUI library for building interactive console apps in .NET/C#, by the veritable innovator Miguel De Icaza:

Miguel de Icaza

Terminal.Gui - Cross Platform Terminal GUI toolkit for .NET

Terminal.Gui provides a rich pallete of familiar UI components, re-envisioned for the console, including menus, buttons, windows, listviews, tables, editable text panes etc. Just the ticket!

Romulus Gemini Client

Bringing together the UI layer and Gemini client back end is most of the work of building a client. All that remains is to build the user interface and see where it goes.

Romulus (named from half of a famous pair of twins - Romulus and Remus) is the fruit of that investigation - a Gemini console application that takes a particular philosophy for its user interface - building on the Terminal.Gui framework:

The main idea with this client is to see how interactive a console client for Gemini could be, whilst at the same time building a very quiet and attractive UI without colour or unecessary Gemtext glyphs (such as the line prefix markers for headings etc).

My approach was to use whitespace primarily to communicate the page structure, and a direct interaction style for links, which allows us to avoid the visual noise of numbering all the links on a page that some other console clients use.

Screenshot of Romulus, meta-circularly viewing its own announcement

Screenshot of the Gemini home page

Screenshot showing a drop down menu of the page structure

So far it works quite nicely and I've been using it as my main driver for a while to iron out any remaining quirks and corner cases.

Further details and download

Romulus Gemini page

Romulus source repo

Right now, there is a binary build for Windows, but it should be possible to build Romulus for other platforms that support C#/.NET for folks on those platforms (Linux, Mac). I'd be interested to hear from you if manage to compile it on one of those platforms.

Romulus binary build for Windows.

Feedback

I'd be pleased to hear your feedback if you manage to try it out: luke@marmaladefoo.com

______________________ ______________________ ______________________

Gemlog

Home