Introduction to the World of ELinks ----------------------------------- The goal of this introduction is to explain the basic concepts in ELinks, give an overview of how to get started and serve as an entry point to many of the (undocumented) features of ELinks. It won't tell you all the details, but should hopefully give you an idea of how things work and make it possible for you to even figure out how to go further. Although ELinks is text-based, the user interface has many of interaction methods normally found in graphical environments. There are menus, dialogs with buttons and hierarchic list boxes with folders. Care has been taken to make the interaction between various dialogs consistent, so the controls will quickly become familiar to new users. The user interface can be controlled using both mouse and keyboard, but currently it is only possible to configure keybindings. Looking back, the key-controls have been more advanced than the mouse support, but during the 0.10 prereleases the mouse support has been much improved. You will now find find stuff like contextual menus when right-clicking in different document zones. Overview of the User Interface ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The main user interface of ELinks consists of the document view and dialog bars displaying the information such as the title of the currently viewed document, all opened tabs and the browsing status. The 3 bars are elaborated further below. The most important dialogs that you will meet include the Main, Link and Tab menus and the different managers. The menus serve as entry points to the actions available from different contexts, while the managers let you check the state and control the various subsystems, such as loaded cookies and the global history. The utility menus and the manager tools are investigated further below. The document viewer in ELinks provides a feature-rich set of ways to browse documents. That is, multiple options exist for navigating, searching and displaying documents and you will hopefully figure in time what works best for you. The basic browsing possibilities are presented below. ELinks is highly configurable, so if there is something that you would like to change, it is most likely possible. The best overview of the many options are given in the `elinks.conf(5)` man page. Keybindings are discussed in the `elinkskeys(5)` man page. It is not always up-to-date, so you should also check the keybinding manager and the overview of all the configured keybindings given in the Help -> Keys dialog. The Keys dialogs serves as a good introduction to the most common keybindings. The Title, Tab and Status bar ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The title bars main purpose is to display the title of the current document. Documents bigger than can be displayed with the current screen size are divided into subpages. In this case the current document position is indicated in the far right of the title bar as a suffix to the actual document title. The syntax is: ( current-subpage / total-subpages ), an example is `(4/9)` that indicates the 4th subpage of 9 subpages. The tab bar by default is only visible when 2 or more tabs are open. It is divided into slots containing the trimmed title of the tabs' loaded document. Between each tab is a separator. The current tab is highlighted and all tabs that has not been viewed after being loaded are highlighted as fresh. Tabs are explained in details in the tabs.txt file. The status bar has multiple purposes. Most of the time it will contain the URI (and title) of the currently selected link. If a link is followed, connection information is shown in the status bar. When using cursor routing, the status bar will show the coordinates of the cursor when a link is not followed. The Main, Link and Tab Menus ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The Main Menu gives you access to many of the features of ELinks via submenus and serves as a good entry point for performing actions on the different objects of interest, such as links, documents and tabs. The Link menu and Tab menus are more specialized and targeted to a specific context, such as link handling or managing the tab bar. Actually, the Link Menu is accessible from the Main Menu as a submenu. Once you have familiarized yourself with the menus, you will have a good chance at gradually learning the most common keybinding, since all the configured keybindings are shown as right aligned text. Menu entries can also be quickly accessed using hotkeys. Hotkeys appear highlighted in the menu entry text. For example the key-combo "Alt-v i" will open the document info dialog accessible from the View sub menu in the Main menu. The Managers ~~~~~~~~~~~~ The managers let you control the state of subsystems, such as cookies and the global history. They are accessible from the Tools or Setup submenu in the Main Menu. The managers consists of an area showing a hierarchic listbox and buttons at the bottom. Below, a view of the cookie manager is shown. +------------------------- Cookie manager -------------------------+ | | | [-]- bugzilla.elinks.cz | | | |-- BUGLIST | | | `-- LASTORDER | | [+]- kerneltrap.org | | [+]-*dictionary.reference.com | | [+]-*bjork.com | | [-]- www.google.com | | `-- PREF | | | | | | | | | | [ Info ] [ Add ] [ Edit ] [ Delete ] [ Save ] [ Close ] | +------------------------------------------------------------------+ Each item is either a folder or a leaf. A folder is displayed with a `[-]` or `[+]` before the name telling whether the folder is currently open or closed. Nested items are displayed indented compared to the folder they are nested in. In the cookie manager example above "bjork.com" is a folder and "PREF" is a leaf. Items can be "marked", which makes it possible to select a group of items and perform an action on them, such as deleting all marked items. If any item has been marked the currently selected item is ignored when performing the action. Marked items are displayed with an asterisk ('*') prefixing the name. The buttons make it possible to perform actions either on selected or marked items or on all items in the manager. Buttons named 'Clear' and 'Save' are performed on all items; 'Clear' will delete all items and 'Save' will update the runtime state file associated with the manager in the `~/.elinks/` directory. Most buttons presses will query you before completing the action. At any time, both the currently selected item and button are highlighted. The same goes for marked items. Most manager dialogs also maintains the state, so that when you reopen the manager later it will have the same items selected and the same folders opened or closed. The basic default controls for managers are the following: `--------------`-------------------------------------------------------------- Keys Action ------------------------------------------------------------------------------ Up/Down Select the item above/below. '*' Toggle marking of a item. Space Open and close folders. Left/Right Select the button to the left/right. Home/End Select the first/last item. Enter Press the currently selected button. Esc Close the manager dialog. ------------------------------------------------------------------------------ Some managers also supports searching, either by pressing the 'Search' button or by pressing '/'. By searching the empty string, all hidden items from the previous search will be shown again. LED status indicators ~~~~~~~~~~~~~~~~~~~~~ As an optional feature it is possible to have tiny LED-like status indicators shown at the bottom-right of the screen. They are used for displaying an overview of the current browsing state, ie. whether you are currently talking through a SSL-secured connection, what is the current input mode (normal or insert), JavaScript errors etc. An example display may look like: `[SIJP--]`. Each position in the LED display is associated with the following state: `--------------`-------------------------------------------------------------- Symbol Description ------------------------------------------------------------------------------ 'S' Whether an SSL connection was used. 'i'/'I' The state of insert mode for text-input form-fields: 'i' \ means modeless, 'I' means insert mode is on. 'J' A JavaScript error has occurred. 'P' A JavaScript pop-up window was blocked. - Unused. - Unused. ------------------------------------------------------------------------------ `-` generally indicates that the LED is off. The above information is also available in the LED dialog available by either clicking on the LED display or via the Help menu. Navigation ~~~~~~~~~~ ELinks provides various ways to navigate documents. Depending on how documents are structured, it can be a great help to change navigation style. The navigation styles can roughly be divided into page-oriented, link-oriented and screen-oriented. They overlap in many ways, so this separation is mostly used as a mean to present them. Page-Oriented Navigation ^^^^^^^^^^^^^^^^^^^^^^^^ This involves scrolling documents horizontally and vertically. Documents can be scrolled page-wise, where the next or previous subpage will be displayed. It is also possible to scroll documents in steps, either line-wise (vertically) or column-wise (horizontally). The step size can be configured and by default is 2 lines and 8 columns. Alternatively, whole documents can be scrolled to the start or the end. The basic default controls: `--------------`-------------------------------------------------------------- Keys Action ------------------------------------------------------------------------------ Insert/Delete Scroll up/down line-wise. (vertically) PageUp/PageDown Scroll up/down page-wise. '['/']' Scroll left/right column-wise. (horizontally) Home/End Scroll to the start/end of the document. ------------------------------------------------------------------------------ Link-Oriented Navigation ^^^^^^^^^^^^^^^^^^^^^^^^ For hypertext documents, access to the links makes it more practical to navigate by jumping between links in the document. There are two ways to do this; either you can move between links relationally or by number. Using relational link navigation it is possible to focus the next/previous link or move in a directional manner to the link in a certain direction such as left/right/up/down. In order to navigate using link numbers, you have to first toggle link numbering on; this will prefix all links with a number using the notation [number]. `[23]` indicates link number 23. When link numbering is enabled, pressing any number key will pop up a "Go to link"-dialog where the complete link number can be entered. By pressing Enter the entered link number will be focused, but only if it is a valid link number. Note: it is also possible to jump to links by searching the link text; check the documentation on searching. The basic default controls: `--------------`-------------------------------------------------------------- Keys Action ------------------------------------------------------------------------------ Up/Down Move to the previous/next link. '.' Toggle link numbering. Enter/Right Follow the current focused link. ------------------------------------------------------------------------------ No keys are by default configured for directional link navigation. Position-Oriented Navigation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Positional navigation (sorry, bad word) uses the either the position of the cursor or the mouse click to navigate the document. If you are familiar with the w3m text-browser you will be familiar with cursor routing. Basically, you move the cursor around -- kind of like a mouse -- in the document area of the user interface. When the cursor is over a link, the link is highlighted, and when the cursor moves outside the current document view, it will cause the document view to scroll. The possibilities when using the mouse to navigate the document depend on what terminal you are using. In some terminals, it is possible to scroll by using the mouse wheel. Scrolling is however also possible by clicking in the edge areas of the document view. Highlighting links can be done by clicking on a link but waiting to release the mouse button until the link is no longer under the mouse pointer. No keys are by default configured for cursor routing. Forms ^^^^^ The status bar will indicate the type and name of the field. Input text/Password fields:: These will be displayed as `________`. Note that passwords will be obscured using `*` characters. Status bar will display something like "Text field, name q", or "Password field, name password" for password fields. Textarea boxes:: These will be displayed as multiple lines consisting of `_`. Status bar will display something like "Text area, name comment" Buttons:: These will be displayed as `[ Go ]`. Status bar will display something like "Submit form to ...", "Post form to ..." for submit buttons. Checkboxes:: These will be displayed as `[ ]` or `[X]`. Status bar will display something like "Checkbox, name c, value 1". To set one just press ENTER on it. Radio buttons:: These will be displayed as `( )` or `(X)`. Status bar will display something like "Radio button, name radio1". To set one, you may use ENTER. Select lists:: These will be displayed as `[first item____]`. Note that if multiple attribute is used, these are displayed as a group of checkboxes instead. Status bar will display something like "Select field, name list" To select one entry, press ENTER, then navigate using UP/DOWN, then press ENTER again. Searching ~~~~~~~~~ Searching is by default available by pressing '/'. This will open a search dialog with a input text field for entering the search terms and checkboxes to control how searching is performed. You can indicate whether matching should be case sensitive and whether regular expressions or normal searching should be used. It is also possible to make an incremental search, also called type-ahead searching. You can search either the whole document text or only link text. The latter can be useful if you see a link deep inside a page and want to get to it quickly. Matches of the search term will be high-lighted. After having performed document text search all matches will be high-lighted. To get rid of this high-lighting you have to ``search for the empty string'', that is open a search dialog and just press Enter in the input field. Previous search words are saved in the search history, so they can easily be found and used later. Browsing the history will replace the current entered search terms. The basic default controls for searching are the following: `--------------`-------------------------------------------------------------- Keys Action ------------------------------------------------------------------------------ '/' Open search dialog '?' Open search dialog for backwards searching '#' Start incremental link text search '#/' Start incremental document search 'n'/'N' Show next/previous match Tab Show next match (only for incremental searching) Up/Down Insert previous/next search word from history (only when the \ input field is selected) ------------------------------------------------------------------------------ Hints and Odd Features ~~~~~~~~~~~~~~~~~~~~~~ Note: This is still a work in progress and from here on an below everything is marked TODO! - Numerical action prefixes. Example: 3 jumps down three links. - How to move forward in the document history ('u'). - Toggling color modes, plain/html and image link rendering. - Link numbering. - Insert mode in text-input form-fields. - Menu searching.