X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=elpher.git;a=blobdiff_plain;f=elpher.texi;h=a78b750fcdec059db83f403196a48f78d04dc6cf;hp=882a453f092be10e9ec787c9c34384e64865d825;hb=4d710f13c449a0312cdcf9329c736a3c5bf41f3e;hpb=ee2adb8d07ff410da8d43ae4aebee1f70460c3b9 diff --git a/elpher.texi b/elpher.texi index 882a453..a78b750 100644 --- a/elpher.texi +++ b/elpher.texi @@ -1,15 +1,15 @@ \input texinfo @c -*-texinfo-*- @setfilename elpher.info -@settitle Elpher Manual v2.0.0 +@settitle Elpher Manual v2.7.0 @dircategory Emacs @direntry -* Elpher: (elpher). A gopher client for Emacs. +* Elpher: (elpher). A gopher and gemini client for Emacs. @end direntry @copying -This manual documents Elpher, a gopher client for Emacs. +This manual documents Elpher, a gopher and gemini client for Emacs. Copyright @copyright{} 2019 Tim Vaughan @@ -27,7 +27,7 @@ the file COPYING in the same directory as this file for more details. @end copying @titlepage -@title Elpher Gopher Client Manual +@title Elpher Gopher and Gemini Client Manual @author Tim Vaughan @page @@ -55,9 +55,10 @@ the file COPYING in the same directory as this file for more details. * Quick Start:: Get up and running quickly * Navigation:: Fundamentals of Elpher navigation * Bookmarks:: How to record and visit bookmarks -* Character encodings:: How Elpher handles different character encodings -* Encrypted connections:: How and when TLS is enabled +* Gopher character encodings:: How Elpher selects encodings for gopher pages +* Encrypted gopher connections:: How and when TLS is enabled for gopher * Gemini support:: Support for the Gemini protocol +* Finger support:: Support for the Finger protocol * Customization:: How to customize various aspects of Elpher * Command Index:: @@ -76,11 +77,11 @@ Navigation @node Introduction, Installation, Top, Top @chapter Introduction -Elpher aims to be a capable and practical gopher client for Emacs. Its -focus is on easy keyboard-driven navigation based on sensible default -bindings (with out-of-the-box support for Evil). It is intended to be -robust and behave in non-surprising ways at all times. Additionally, -Elpher provides the following bells and whistles: +Elpher aims to be a capable and practical gopher and gemini client for +Emacs. Its focus is on easy keyboard-driven navigation based on +sensible default bindings (with out-of-the-box support for Evil). It is +intended to be robust and behave in non-surprising ways at all times. +Additionally, Elpher provides the following bells and whistles: @itemize @item @@ -101,7 +102,10 @@ disk), a bookmark management system, @item -basic support for the new ``heavier than gopher, lighter than the web'' Gemini protocol. +basic support for the new ``heavier than gopher, lighter than the web'' Gemini protocol, + +@item +support for the Finger protocol. @end itemize @@ -167,12 +171,12 @@ effect.) To return to the page you just followed the link from, press @key{u}. Elpher caches (for the duration of an Emacs session) both page contents -and the position of point on each of the pages (gopher menus, query -results, or text pages) you visit, restoring these when you next visit -the same page. Thus, pressing @key{u} displays the previous page in -exactly the same state as when you left, meaning that you can quickly -and visually explore the different documents in a menu without having to -wait for anything to reload. +and the position of point on each of the pages (gopher menus, gemini +pages, query results, or text pages) you visit, restoring these when you +next visit the same page. Thus, pressing @key{u} displays the previous +page in exactly the same state as when you left, meaning that you can +quickly and visually explore the different documents in a menu without +having to wait for anything to reload. Of course, sometimes you'll @emph{want} to reload the current page rather than stick with the cached version. To do this use @key{R}. @@ -187,9 +191,8 @@ navigation experience as intuitive and responsive as possible. @node Navigation, Bookmarks, Quick Start, Top @chapter Navigation -by Throughout this manual, we use the word ``page'' to refer to any -visualization of a response from a gopher server, be it a +visualization of a response from a gopher or gemini server, be it a menu/directory, query result, text file or image. We use Elpher's navigation interface is inspired by the Emacs Info mode. @@ -294,7 +297,7 @@ causes Elpher to prompt for a filename in which to save the content. @item Following links of type `h' with a selector having the `URL:' prefix, or -non-gopher URLs in text files, will result in Elpher using an external +unsuported URLs in text files, will result in Elpher using an external programme to open the URL. This will be either the default system browser or, if the @code{elpher-open-urls-with-eww} customization variable is non-nil, Emacs' own EWW browser. (See @pxref{Customization}.) @@ -306,17 +309,17 @@ cached for the duration of the Emacs session. @keycmd{@key{g}, elpher-go} Open a particular page by specifying either its full URL or just entering -a gopher host name. +a gopher host name. (The protocol defaults to gopher, so gemini links must include the @code{gemini://} prefix. -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. +If a unsupported protocol is used in the URL the result will be the same +as following a URL link of the same type from a link in a page. @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. -Remember however, that the Gopher RFC 1436 provides no guarantees about the +Remember however, that the Gopher RFC 1436 provides @emph{no} guarantees about the structure of selectors. @keycmd{@key{O}, elpher-root-dir} @@ -350,11 +353,11 @@ the original page is set as the ``parent'' of the new page. @end enumerate The only way to return to pages in this history is by using @key{u}, -which returns to the previous of the current page. -@footnote{The addition of the new page to the history happens even if -the new page is one that has been seen before. This is mostly the -desired behaviour. However, opening an explicit ``back'' link provided -by a gopher menu will also add a new entry to the history. Unless you +which returns to the previous of the current page. @footnote{The +addition of the new page to the history happens even if the new page is +one that has been seen before. This is mostly the desired behaviour. +However, opening an explicit ``back'' link provided by a gopher menu or +gemini page will also add a new entry to the history. Unless you haven't yet visited that menu, it's therefore better to use @key{u} to go back in this case.} @@ -365,7 +368,7 @@ from a given page. This means that, at least for links followed from menus and text files, the inverse of @key{u} is actually just @key{RET}. -@node Bookmarks, Character encodings, Navigation, Top +@node Bookmarks, Gopher character encodings, Navigation, Top @chapter Bookmarks Elpher has a very simple link bookmarking system involving the @@ -401,8 +404,8 @@ in the user emacs directory (usually @file{~/.emacs.d/}). Any command which modifies the list of bookmarks immediately updates this file. -@node Character encodings, Encrypted connections, Bookmarks, Top -@chapter Character encodings +@node Gopher character encodings, Encrypted gopher connections, Bookmarks, Top +@chapter Gopher character encodings Responses Elpher retrieves from servers are initially read as pure binary data. When the data is intended to be interpreted as textual (as @@ -429,7 +432,7 @@ using the following command: @table @asis @keycmd{@key{S},elpher-set-coding-system} Causes a elpher to prompt for a coding system to use for decoding -future text. The @key{TAB} key can be used at this prompt to display a +future gopher text. The @key{TAB} key can be used at this prompt to display a list of alternatives (which is extensive) and to auto-complete. An empty response will cause Elpher to return to its default auto-detection behaviour. @@ -441,8 +444,8 @@ will need to select the correct coding and then reload the text using @key{R}. -@node Encrypted connections, Gemini support, Character encodings, Top -@chapter Encrypted connections +@node Encrypted gopher connections, Gemini support, Gopher character encodings, Top +@chapter Encrypted gopher connections While RFC 1436 does not broach the topic of encryption at all, several modern gopher servers can serve content over encrypted connections, @@ -465,10 +468,10 @@ 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, Customization, Encrypted connections, Top +@node Gemini support, Finger support, Encrypted gopher connections, Top @chapter Gemini support -@uref{gopher://zaibatsu.circumlunar.space/1/~solderpunk/gemini, Gemini} +@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. @@ -485,12 +488,76 @@ 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 not yet supported. +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, Gemini support, Top +@node Customization, Command Index, Finger support, Top @chapter Customization Various parts of Elpher can be customized via the @@ -506,10 +573,9 @@ 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), the timeout to impose on -network connections, and whether to prompt for confirmation when -switching away from TLS. +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.