# 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 can be launched with an initial address, or it will default to [gemini://gemini.circumlunar.space/](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](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](https://snapcraft.io/lr87). 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](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. ## 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, "dumb_renderer," that assumes the user is at a dumb terminal, and "ag_renderer," that provides a GUI using the AppGraphics library from Simply Fortran. ## License LR-87 is Copyright (c) 2020 Jeffrey Armstrong