# 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.
alt="LR-87 on Linux"
alt="LR-87 on Windows"
alt="LR-87 with the Windows GUI"
LR-87 can be launched with an initial address, or it will default to
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
## What's Not Supported
LR-87 works, but it does _not_ remember certificates, store history or bookmarks,
or support sending user certificates. It will also complain if you attempt to
download a non-text file or try to access a non-Gemini address. These features
might be added in the future, but don't hold your breath.
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](https://simplyfortran.com) 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](https://bintray.com/vszakats/generic/openssl),
which seems to work fine.
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 one implementation, "dumb_renderer," that assumes the
user is at a dumb terminal. It assumes a fixed 80x24 terminal without any escape
LR-87 is Copyright (c) 2020 Jeffrey Armstrong <firstname.lastname@example.org>, and the software
is licensed under the JSON license. See LICENSE.txt for more details.