Lynx is a fully-featured World Wide Web (WWW) client for users running cursor-addressable, character-cell display devices (e.g., vt100 terminals, vt100 emulators running on Windows 95/NT/XP/7/8 or any POSIX platform, or any other “curses-oriented” display). It will display hypertext markup language (HTML) documents containing links to files residing on the local system, as well as files residing on remote systems running Gopher, HTTP, FTP, WAIS, and NNTP servers. Current versions of Lynx run on Unix, VMS, Windows 95/NT/XP/7/8, DOS DJGPP and OS/2.

Lynx can be used to access information on the World Wide Web, or to build information systems intended primarily for local access. For example, Lynx has been used to build several Campus Wide Information Systems (CWIS). In addition, Lynx can be used to build systems isolated within a single LAN.

At start up, Lynx will load any local file or remote URL specified at the command line. For help with URLs, press “?” or “H” while running Lynx. Then follow the link titled, “Help on URLs.”

If more than one local file or remote URL is listed on the command line, Lynx will open only the last interactively. All of the names (local files and remote URLs) are added to the G)oto history.

Lynx uses only long option names. Option names can begin with double dash “--” as well, underscores and dashes can be intermixed in option names (in the reference below, options are shown with one dash “-” before them, and with underscores “_”).

Lynx provides many command-line options. Some options require a value (string, number or keyword). These are noted in the reference below. The other options set boolean values in the program. There are three types of boolean options: set, unset and toggle. If no option value is given, these have the obvious meaning: set (to true), unset (to false), or toggle (between true/false). For any of these, an explicit value can be given in different forms to allow for operating system constraints, e.g.,

Lynx recognizes “1”, “+”, “on” and “true” for true values, and “0”, “-”, “off” and “false” for false values. Other option-values are ignored.

The default boolean, number and string option values that are compiled into Lynx are displayed in the help-message provided by lynx -help. Some of those may differ according to how Lynx was built; see the help message itself for these values. The -help option is processed in the third pass of options-processing, so any option which sets a value, as well as runtime configuration values are reflected in the help-message.

If the argument is only “-”, then Lynx expects to receive the arguments from the standard input. This is to allow for the potentially very long command line that can be associated with the -get_data or -post_data arguments (see below). It can also be used to avoid having sensitive information in the invoking command line (which would be visible to other processes on most systems), especially when the -auth or -pauth options are used.

toggles scanning of news articles for buried references, and converts them to news links. Not recommended because email addresses enclosed in angle brackets will be converted to false news links, and uuencoded messages can be trashed.

read keystroke commands from the specified file. You can use the data written using the -cmd_log option. Lynx will ignore other information which the command-logging may have written to the logfile. Each line of the command script contains either a comment beginning with “#”, or a keyword:

exit

causes the script to stop, and forces Lynx to exit immediately.

key

the character value, in printable form. Cursor and other special keys are given as names, e.g., “Down Arrow”. Printable 7-bit ASCII codes are given as-is, and hexadecimal values represent other 8-bit codes.

set

followed by a “name=value” allows one to override values set in the lynx.cfg or .lynxrc files. Lynx tries the cfg-file setting first.

forces color mode on, if available. Default color control sequences which work for many terminal types are assumed if the terminal capability description does not specify how to handle color. Lynx needs to be compiled with the slang library for this flag, it is equivalent to setting the COLORTERM environment variable. (If color support is instead provided by a color-capable curses library like ncurses, Lynx relies completely on the terminal description to determine whether color mode is possible, and this flag is not needed and thus unavailable.) A saved show_color=always setting found in a .lynxrc file at startup has the same effect. A saved show_color=never found in .lynxrc on startup is overridden by this flag.

toggles the use of curses “pad” feature which supports left/right scrolling of the display. The feature is normally available for curses configurations, but inactive. To activate it, use the “|” character or the LINEWRAP_TOGGLE command. Toggling this option makes the feature altogether unavailable.

dumps the formatted output of the default document or those specified on the command line to standard output. Unlike interactive mode, all documents are processed. This can be used in the following way:

Files specified on the command line are formatted as HTML if their names end with one of the standard web suffixes such as “.htm” or “.html”. Use the -force_html option to format files whose names do not follow this convention.

This flag is not available on all systems, Lynx needs to be compiled with HAVE_SIGACTION defined. If available, this flag may cause Lynx to react more immediately to window changes when run within an xterm.

allows a list of services to be disabled selectively. Dashes and underscores in option names can be intermixed. The following list is printed if no options are specified.

all

restricts all options listed below.

bookmark

disallow changing the location of the bookmark file.

bookmark_exec

disallow execution links via the bookmark file.

change_exec_perms

disallow changing the eXecute permission on files (but still allow it for directories) when local file management is enabled.

default

same as command line option -anonymous. Disables default services for anonymous users. Set to all restricted, except for: inside_telnet, outside_telnet, inside_ftp, outside_ftp, inside_rlogin, outside_rlogin, inside_news, outside_news, telnet_port, jump, mail, print, exec, and goto. The settings for these, as well as additional goto restrictions for specific URL schemes that are also applied, are derived from definitions within userdefs.h.

dired_support

disallow local file management.

disk_save

disallow saving to disk in the download and print menus.

dotfiles

disallow access to, or creation of, hidden (dot) files.

download

disallow some downloaders in the download menu (does not imply disk_save restriction).

editor

disallow external editing.

exec

disable execution scripts.

exec_frozen

disallow the user from changing the local execution option.

externals

disallow some “EXTERNAL” configuration lines if support for passing URLs to external applications (with the EXTERN command) is compiled in.

file_url

disallow using G)oto, served links or bookmarks for file: URLs.

goto

disable the “g” (goto) command.

inside_ftp

disallow ftps for people coming from inside your domain (utmp required for selectivity).

disallow rlogins for people coming from inside your domain (utmp required for selectivity).

inside_telnet

disallow telnets for people coming from inside your domain (utmp required for selectivity).

jump

disable the “j” (jump) command.

multibook

disallow multiple bookmarks.

mail

disallow mail.

news_post

disallow USENET News posting.

options_save

disallow saving options in .lynxrc.

outside_ftp

disallow ftps for people coming from outside your domain (utmp required for selectivity).

outside_news

disallow USENET news reading and posting for people coming from outside your domain (utmp required for selectivity). This restriction applies to “news”, “nntp”, “newspost”, and “newsreply” URLs, but not to “snews”, “snewspost”, or “snewsreply” in case they are supported.

outside_rlogin

disallow rlogins for people coming from outside your domain (utmp required for selectivity).

outside_telnet

disallow telnets for people coming from outside your domain (utmp required for selectivity).

If enabled the cursor will not be hidden in the right hand corner but will instead be positioned at the start of the currently selected link. Show cursor is the default for systems without FANCY_CURSES capabilities. The default configuration can be changed in userdefs.h or lynx.cfg. The command line switch toggles the default.

generates HTML source listing the files in the current directory. Each file is marked by an HREF relative to the parent directory. Add a trailing slash to make the HREF's relative to the current directory:

When dumping a document using -dump or -source, Lynx normally does not display alert (error) messages that you see on the screen in the status line. Use the -stderr option to tell Lynx to write these messages to the standard error.

tell Lynx what terminal type to assume it is talking to. (This may be useful for remote execution, when, for example, Lynx connects to a remote TCP/IP port that starts a script that, in turn, starts another Lynx process.)

turn on mouse support, if available. Clicking the left mouse button on a link traverses it. Clicking the right mouse button pops back. Click on the top line to scroll up. Click on the bottom line to scroll down. The first few positions in the top and bottom line may invoke additional functions. Lynx must be compiled with ncurses or slang to support this feature. If ncurses is used, clicking the middle mouse button pops up a simple menu. Mouse clicks may only work reliably while Lynx is idle waiting for input.

If set, color capability for the terminal is forced on at startup time. The actual value assigned to the variable is ignored. This variable is only meaningful if Lynx was built using the slang screen-handling library.

This variable, if set, will override the default location and name of the global configuration file (normally, lynx.cfg) that was defined by the LYNX_CFG_FILE constant in the userdefs.h file, during installation.

If set, this variable overrides the compiled-in search-list of directories used to find the configuration files, e.g., lynx.cfg and lynx.lss. The list is delimited with ":" (or ";" for Windows) like the PATH environment variable.

This variable, if set, provides the string used in the Organization: header of USENET news postings. It will override the setting of the ORGANIZATION environment variable, if it is also set (and, on UNIX, the contents of an /etc/organization file, if present).

Lynx supports the use of proxy servers that can act as firewall gateways and caching servers. They are preferable to the older gateway servers (see WWW_access_GATEWAY, below).

Each protocol used by Lynx, (http, ftp, gopher, etc), can be mapped separately by setting environment variables of the form PROTOCOL_proxy. Protocols are indicated in a URI by the name before “:”, e.g., “http” in “http://some.server.dom:port/” for HTML.

Depending on your system configuration and supported protocols, the environment variables recognized by lynx may include

Lynx still supports use of gateway servers, with the servers specified via “WWW_access_GATEWAY” variables (where “access” is lower case and can be “http”, “ftp”, “gopher” or “wais”). However most gateway servers have been discontinued. Note that you do not include a terminal “/” for gateways, but do for proxies specified by PROTOCOL_proxy environment variables.

This variable is set by the Lynx p(rint) function, to the Date: string seen in the document's “Information about” page (= cmd), if any. It is created for use by an external program, as defined in a lynx.cfg PRINTER: definition statement. If the field does not exist for the document, the variable is set to a null string under UNIX, or “No Date” under VMS.

This variable is set by the Lynx p(rint) function, to the Last Mod: string seen in the document's “Information about” page (= cmd), if any. It is created for use by an external program, as defined in a lynx.cfg PRINTER: definition statement. If the field does not exist for the document, the variable is set to a null string under UNIX, or “No LastMod” under VMS.

This variable is set by the Lynx p(rint) function, to the Linkname: string seen in the document's “Information about” page (= cmd), if any. It is created for use by an external program, as defined in a lynx.cfg PRINTER: definition statement. If the field does not exist for the document, the variable is set to a null string under UNIX, or “No Title” under VMS.

This variable is set by the Lynx p(rint) function, to the URL: string seen in the document's “Information about” page (= cmd), if any. It is created for use by an external program, as defined in a lynx.cfg PRINTER: definition statement. If the field does not exist for the document, the variable is set to a null string under UNIX, or “No URL” under VMS.

If set, overrides the compiled-in name of the trace file, which is either Lynx.trace or LY-TRACE.LOG (the latter on the DOS/Windows platforms). The trace file is in either case relative to the home directory.

Normally, this variable is used by Lynx to determine the terminal type being used to invoke Lynx. If, however, it is unset at startup time (or has the value “unknown”), or if the -term command-line option is used (see Options section above), Lynx will set or modify its value to the user specified terminal type (for the Lynx execution environment). Note: If set/modified by Lynx, the values of the LINES and/or COLUMNS environment variables may also be changed.

If built with the cgi-links option enabled, Lynx allows access to a cgi script directly without the need for an http daemon.

When executing such “lynxcgi scripts” (if enabled), the following variables may be set for simulating a CGI environment:

CONTENT_LENGTH

CONTENT_TYPE

DOCUMENT_ROOT

HTTP_ACCEPT_CHARSET

HTTP_ACCEPT_LANGUAGE

HTTP_USER_AGENT

PATH_INFO

PATH_TRANSLATED

QUERY_STRING

REMOTE_ADDR

REMOTE_HOST

REQUEST_METHOD

SERVER_SOFTWARE

Other environment variables are not inherited by the script, unless they are provided via a LYNXCGI_ENVIRONMENT statement in the configuration file. See the lynx.cfg file, and the (draft) CGI 1.1 Specification <http://Web.Golux.Com/coar/cgi/draft-coar-cgi-v11-00.txt> for the definition and usage of these variables.

The CGI Specification, and other associated documentation, should be consulted for general information on CGI script programming.

If configured and installed with Native Language Support, Lynx will display status and other messages in your local language. See the file ABOUT_NLS in the source distribution, or at your local GNU site, for more information about internationalization.

The following environment variables may be used to alter default settings:

This is the Lynx v2.8.8 Release; development is in progress for 2.8.9.

If you wish to contribute to the further development of Lynx, subscribe to our mailing list. Send email to <lynx-dev-request@nongnu.org> with “subscribe lynx-dev” as the only line in the body of your message.

Unsubscribe by sending email to <lynx-dev-request@nongnu.org> with “unsubscribe lynx-dev” as the only line in the body of your message. Do not send the unsubscribe message to the lynx-dev list, itself.

Note that man page availability and section numbering is somewhat platform dependent, and may vary from the above references.

A section shown as (GNU), is intended to denote that the topic may be available via an info page, instead of a man page (i.e., try “info subject”, rather than “man subject”).

A section shown as (?) denotes that documentation on the topic exists, but is not part of an established documentation retrieval system (see the distribution files associated with the topic, or contact your System Administrator for further information).

Lynx has incorporated code from a variety of sources along the way. The earliest versions of Lynx included code from Earl Fogel of Computing Services at the University of Saskatchewan, who implemented HYPERREZ in the Unix environment. HYPERREZ was developed by Niel Larson of Think.com and served as the model for the early versions of Lynx. Those versions also incorporated libraries from the Unix Gopher clients developed at the University of Minnesota, and the later versions of Lynx rely on the WWW client library code developed by Tim Berners-Lee and the WWW community. Also a special thanks to Foteos Macrides who ported much of Lynx to VMS and did or organized most of its development since the departures of Lou Montulli and Garrett Blythe from the University of Kansas in the summer of 1994 through the release of v2.7.2, and to everyone on the net who has contributed to Lynx's development either directly (through patches, comments or bug reports) or indirectly (through inspiration and development of other systems).