aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: d8ec339849abacfb64415ac6de02a53b92a096f3 (plain)
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
95
96
97
# 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

LR-87 is available in the [Windows Store](https://www.microsoft.com/en-us/p/lr-87-a-gemini-browser/9njrwpxrwhj2)
for Windows 10.

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.  I also don't update these regularly because of the link above.

### 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.