aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 56bedd2b90a72a32d2b12e5ae3b17ef409e8353f (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
# 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%" />
</p>

LR-87 can be launched with an initial address, or it will default to
[gemini://gemini.circumlunar.space/](gemini://gemini.circumlunar.space/).  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.

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

## 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 one implementation, "dumb_renderer," that assumes the 
user is at a dumb terminal.  It assumes a fixed 80x24 terminal without any escape
sequences.

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