1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# 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.
<p style="text-align:center;">
<img src="https://gallery.rainbow-100.com/cgi-bin/gk.cgi?id=dcd23eba-f9d2-48ab-b446-992bc2367217&gallery=662ce9f6-fb2e-45f2-be0d-d6f6eaacf5c5"
alt="LR-87 on Linux"
style="width:40%" />
<img src="https://gallery.rainbow-100.com/cgi-bin/gk.cgi?id=00fdc8bb-615a-482d-8c7f-f2be01bf0390&gallery=662ce9f6-fb2e-45f2-be0d-d6f6eaacf5c5"
alt="LR-87 on Windows"
style="width:40%" />
<img src="https://gallery.rainbow-100.com/cgi-bin/gk.cgi?id=89caf184-6b86-48bf-ab67-6bacf6b9bae4&gallery=662ce9f6-fb2e-45f2-be0d-d6f6eaacf5c5"
alt="LR-87 with the Windows GUI"
style="width:40%" />
</p>
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 <jeff@rainbow-100.com>, and the software
is licensed under the JSON license. See LICENSE.txt for more details.
|