X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=elpher.git;a=blobdiff_plain;f=elpher.texi;h=34c3a6133e7fe006331e4aea1666475944f46c4a;hp=dabf74518754a1a7afb029b1446f4420e0ad9c64;hb=b4f69e8bbbde380f1799e3b5190ccde1312a36e7;hpb=b1b78898e053973887d2bad4768ece92cd9d9bb2 diff --git a/elpher.texi b/elpher.texi index dabf745..34c3a61 100644 --- a/elpher.texi +++ b/elpher.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename elpher.info -@settitle Elpher Manual v1.0.0 +@settitle Elpher Manual v2.0.0 @dircategory Emacs @direntry @@ -57,8 +57,21 @@ the file COPYING in the same directory as this file for more details. * Bookmarks:: How to record and visit bookmarks * Character encodings:: How Elpher handles different character encodings * Encrypted connections:: How and when TLS is enabled +* Gemini support:: Support for the Gemini protocol +* Finger support:: Support for the Finger protocol * Customization:: How to customize various aspects of Elpher * Command Index:: + +@detailmenu + --- The Detailed Node Listing --- + +Navigation + +* Within-page navigation:: Moving about within a page +* Between-page navigation:: Commands for moving between pages +* History and Caching:: Explanation of how Elpher represents history + +@end detailmenu @end menu @node Introduction, Installation, Top, Top @@ -83,10 +96,17 @@ auto-completing menu item navigation, @item direct visualization of image files where supported (no writing to -disk), and +disk), @item -a simple bookmark management system. +a bookmark management system, + +@item +basic support for the new ``heavier than gopher, lighter than the web'' Gemini protocol, + +@item +support for the Finger protocol. + @end itemize Elpher is still under active development. Although we try very hard to @@ -116,7 +136,7 @@ to follow the instructions at @url{https://melpa.org/#/getting-started}. While not recommended, it is also possible to install Elpher directly by downloading the file @file{elpher.el} from -@url{https://github.com/tgvaughan/elpher}, adding it to a directory in +@url{gopher://thelambdalab.xyz/1/projects/elpher/}, adding it to a directory in your @code{load-path}, and then adding @example @@ -240,7 +260,7 @@ the display string (if available) associated with the link. This is similar to @code{elpher-download}, but instead applies to the current page rather than a link. -@keycmd{@key{w}, elpher-view-raw} +@keycmd{@key{.}, elpher-view-raw} This displays the raw server response for the current page. While not useful for general browsing, it is useful for debugging incorrect rendering or out-of-spec server responses. @@ -289,16 +309,24 @@ Once a text, menu or query response page has been displayed, its contents are cached for the duration of the Emacs session. @keycmd{@key{g}, elpher-go} -Open a particular page by specifying either its URL or directly entering -a host, port and selector. +Open a particular page by specifying either its full URL or just entering +a gopher host name. + +If a non-gopher protocol is used in the URL the result will be the same +as following a URL link of the same type from a gopher menu. + +@keycmd{@key{o}, elpher-go-current} +Prompts for a URL similar to @code{elpher-go}, but initialized to the URL +of the current page. This allows you to easily try other selectors for the +same server. -Note that if a non-gopher protocol is used in the URL the result will be -the same as following a URL link of the same type from a gopher menu. +Remember however, that the Gopher RFC 1436 provides no guarantees about the +structure of selectors. @keycmd{@key{O}, elpher-root-dir} Open the root page (empty selector) on the current host. -@keycmd{@key{u}, elpher-back} +@keycmd{@key{u}\, @kbd{mouse-3}, elpher-back} Return to the previous page, where ``previous'' means the page where the page which was displayed immediately before the current page. @end table @@ -417,7 +445,7 @@ will need to select the correct coding and then reload the text using @key{R}. -@node Encrypted connections, Customization, Character encodings, Top +@node Encrypted connections, Gemini support, Character encodings, Top @chapter Encrypted connections While RFC 1436 does not broach the topic of encryption at all, several @@ -441,8 +469,96 @@ It can also be automatically switched off when a TLS connection fails. In this case Elpher will prompt for your confirmation to ensure that you can't accidentally make a non-TLS connection. +@node Gemini support, Finger support, Encrypted connections, Top +@chapter Gemini support + +@uref{gopher://gemini.circumlunar.space, Gemini} +is a new protocol being devloped by several members of +gopherspace. It aims to solve some of the long-standing technical +issues associated with gopher as a protocol, while keeping the major benifits. +For instance, it _requires_ encrypted connections, it does away with +the selector type, and allows servers to explicitly specify the +character coding scheme used for text documents. + +The latest versions of Elpher aim to provide seemless navigation between +gemini and gopher documents. Basically you should be able to open, +bookmark, download and otherwise interact with gemini pages in exactly +the same way as you do with other non-gemini pages. The only major +difference from your perspective as a user is that you should no longer +have to worry about manually toggling TLS on or off (for gemini it's +always on), and you should never have to manually set a character coding +scheme. + +The gemini protocol specification recommends a Trust on First Use (TOFU) +behaviour when validating gemini server TLS certificates. This is +because many gemini servers rely on self-signed certificates rather +than certificates signed by a CA. Sadly however, this TOFU behaviour is +far from straight-forward to configure using Emacs' existing Network +Security Manager. For this reason, elpher defaults to performing no +certificate verification by default. This behaviour can be easily +customized by setting the @code{elpher-gemini-TLS-cert-checks} +customization variable to non-nil. + +Like gopher, the gemini specification concerns both the protocol + a simple text document format (mimetype text/gemini) which is +like a mixture between gophermap files and markdown-formatted files but +simpler than both. Elpher renders gemini responses which are provided +in this format in line with the rules in the spec. This includes +wrapping long lines at word boundaries. The specific column at which +this text is wrapped is defined by the customization variable +@code{elpher-gemini-max-fill-width}, which is set to 80 columns by +default. (This is slightly wider than Emacs' default fill width of 70 +columns due to the fact that there are a significant amount of older +gemini which, against the advice of the current spec, hard wraps at <80 +columns. The larger default allows this to still look okay, while +still keeping content without hard wraps looking pleasant.) + +The text/gemini format also posesses a section header syntax similar to +markdown. Elpher allows different header levels to be drawn with +different, customizable, faces. By default, on graphically-capable +emacs systems, these faces are given different heights to distinguish +amongst levels. On terminal systems, the level is indicated by the +number of preceeding # symbols. + +I should emphasize however that, while it is definitely functional, +Elpher's gemini support is still experimental, and various aspects will +change as the protocol develops further. Additionally, the use of +client TLS certicificates is still not yet supported. + +@node Finger support, Customization, Gemini support, Top +@chapter Finger support + +Incidentally, Elpher has native support for querying finger servers. +Of course, one could argue that this functionality is more easily +provided by one's local telnet client. However finger URLs do appear +on occasion in gopherspace, and it's nice to be able to open them +in place. + +Elpher interprets @code{finger://} URLs as follows: + +@itemize + +@item +The host is determined by the host name portion of the URL. + +@item +In the case that the @emph{file name} portion of the URL is non-empty (besides +the leading slash), this is interpreted as the user to finger. + +@item +Otherwise, the @emph{user} portion of the URL is interpreted as the user to finger. + +@item +If no user is provided, the root directory of the finger server is requested. + +@end itemize + +Thus @code{finger://user@@hostname} and @code{finger://hostname/user} are both equivalent. + +(The precedence of the /user notation over the user@ notation reflects a +preference of the community.) -@node Customization, Command Index, Encrypted connections, Top +@node Customization, Command Index, Finger support, Top @chapter Customization Various parts of Elpher can be customized via the @@ -457,10 +573,10 @@ using the appearance of Elpher, including one face per menu item type. The group also contains variables for customizing the behaviour of -Elpher. This includes how to open arbitrary (non-gopher) URLs, -whether to display buffer headers, whether to look for naked URLs in -gopher menus (as opposed to just plain text files), and whether -to prompt for confirmation when switching away from TLS. +Elpher. This includes how to open arbitrary (non-gopher) URLs, whether +to display buffer headers, how to deal with ANSI escape sequences in +text, the timeout to impose on network connections, and whether to +prompt for confirmation when switching away from TLS. See the customization group itself for details.