aboutsummaryrefslogtreecommitdiff

LR-87: A Gemini Client

LR-87 is a simple implementation of a client for launching into the world of the Gemini protocol, a fun place somewhere between Gopher and the World Wide Web. The client is implemented entirely in Fortran.

LR-87 on Linux LR-87 on Windows LR-87 with the Windows GUI

LR-87 can be launched with an initial address, or it will default to gemini://gemini.circumlunar.space/.

Binaries

If you want to try out LR-87, you have a few choices:

Windows

Builds for Windows are available at https://bin.rainbow-100.com as a simple Zipfile. These builds are not signed, so modern Windows will likely bitch about that.

GNU/Linux

LR-87 is available as a Snap. Because packaging for GNU/Linux is such a nightmare, this is the only way it will be made available by me.

Dumb Terminal Mode

The default interface assumes you are at a dumb terminal, so you'll be presented with a nice Fortran-esque input prompt after the first page of a site is displayed. The prompt supports paging, entering link numbers, going back, or quitting, and it is somewhat self-explanatory. The user should be aware that the command, such as "B" for back must be followed by the ENTER/RETURN key.

Links are displayed in LR-87's default renderer as:

[ 1][ Gemini documentation]

The link is numbered, and it can be followed by entering the link number at the input prompt. Note that the link numbering will change when page up or page down is performed. If you page down, for example, the new link number 1 is the new first visible link, not the link labeled number 1 prior to page down. This insane behavior is merely the product of the default renderer, not the underlying code itself.

GUI Mode

LR-87 can be built for Windows using the dumb terminal mode described above or using a GUI through the AppGraphics library, included with Simply Fortran. The GUI mode behaves much as one would expect.

What's Not Supported

LR-87 works, but it does not remember certificates, store history or bookmarks, or support sending user certificates.

Compiling

LR-87 requires a substantial number of Fortran 2003/2008 features. The software compiles fine with relatively modern versions of GNU Fortran (tested with versions 8 and 9). Simply Fortran projects are included for both Windows and UNIX-y operating systems.

On Windows, users will need an OpenSSL implementation for linking. I suggest, but do not endorse, this distribution, which seems to work fine.

Extending

All drawing, status reporting, and user interaction is handled by derived types extended from the abstract "renderer" type, which handles parsing links and wrapping regular text internally. A new renderer would be relatively easy to generate if it implemented the abstract interfaces in the "renderer" type.

The code currently contains two implementations, "dumbrenderer," that assumes the user is at a dumb terminal, and "agrenderer," that provides a GUI using the AppGraphics library from Simply Fortran.

License

LR-87 is Copyright (c) 2020 Jeffrey Armstrong jeff@rainbow-100.com, and the software is licensed under the JSON license. See LICENSE.txt for more details.