Python programmers can customize the behavior of ELinks by creating a Python hooks module. The embedded Python interpreter provides an internal module called elinks that can be used by the hooks module to create keystroke bindings for Python code, obtain information about the document being viewed, display simple dialog boxes and menus, load documents into the ELinks cache, or display documents to the user. These two modules are described below. ------------------------------------------------------------------------------ MODULE hooks - Python hooks for ELinks. DESCRIPTION If ELinks is compiled with an embedded Python interpreter, it will try to import a Python module called hooks when the browser starts up. To use Python code from within ELinks, create a file called hooks.py in the ~/.config/elinks directory, or in the system-wide configuration directory (defined when ELinks was compiled), or in the standard Python search path. An example hooks.py file can be found in the contrib/python directory of the ELinks source distribution. The hooks module may implement any of several functions that will be called automatically by ELinks in appropriate circumstances; it may also bind ELinks keystrokes to callable Python objects so that arbitrary Python code can be invoked at the whim of the user. Functions that will be automatically called by ELinks (if they're defined): follow_url_hook() -- Rewrite a URL for a link that's about to be followed. goto_url_hook() -- Rewrite a URL received from a "Go to URL" dialog box. pre_format_html_hook() -- Rewrite a document's body before it's formatted. proxy_for_hook() -- Determine what proxy server to use for a given URL. quit_hook() -- Clean up before ELinks exits. FUNCTIONS follow_url_hook(url) Rewrite a URL for a link that's about to be followed. This function should return a string containing a URL for ELinks to follow, or an empty string if no URL should be followed, or None if ELinks should follow the original URL. Arguments: url -- The URL of the link. goto_url_hook(url) Rewrite a URL that was entered in a "Go to URL" dialog box. This function should return a string containing a URL for ELinks to follow, or an empty string if no URL should be followed, or None if ELinks should follow the original URL. Arguments: url -- The URL provided by the user. pre_format_html_hook(url, html) Rewrite the body of a document before it's formatted. This function should return a string for ELinks to format, or None if ELinks should format the original document body. It can be used to repair bad HTML, alter the layout or colors of a document, etc. Arguments: url -- The URL of the document. html -- The body of the document. proxy_for_hook(url) Determine what proxy server to use for a given URL. This function should return a string of the form "hostname:portnumber" identifying a proxy server to use, or an empty string if the request shouldn't use any proxy server, or None if ELinks should use its default proxy server. Arguments: url -- The URL that is about to be followed. quit_hook() Clean up before ELinks exits. This function should handle any clean-up tasks that need to be performed before ELinks exits. Its return value is ignored. ------------------------------------------------------------------------------ MODULE elinks - Interface to the ELinks web browser. DESCRIPTION Functions: bind_key() -- Bind a keystroke to a callable object. current_document() -- Return the body of the document being viewed. current_header() -- Return the header of the document being viewed. current_link_url() -- Return the URL of the currently selected link. current_title() -- Return the title of the document being viewed. current_url() -- Return the URL of the document being viewed. info_box() -- Display information to the user. input_box() -- Prompt for user input. load() -- Load a document into the ELinks cache. menu() -- Display a menu. open() -- View a document. Exception classes: error -- Errors internal to ELinks. Other public objects: home -- A string containing the pathname of the ~/.config/elinks directory, or None if ELinks has no configuration directory. FUNCTIONS bind_key(...) bind_key(keystroke, callback[, keymap]) -> None Bind a keystroke to a callable object. Arguments: keystroke -- A string containing a keystroke. The syntax for keystrokes is described in the elinkskeys(5) man page. callback -- A callable object to be called when the keystroke is typed. It will be called without any arguments. Optional arguments: keymap -- A string containing the name of a keymap. Valid keymap names can be found in the elinkskeys(5) man page. By default the "main" keymap is used. current_document(...) current_document() -> string or None If a document is being viewed, return its body; otherwise return None. current_header(...) current_header() -> string or None If a document is being viewed and it has a header, return the header; otherwise return None. current_link_url(...) current_link_url() -> string or None If a link is selected, return its URL; otherwise return None. current_title(...) current_title() -> string or None If a document is being viewed, return its title; otherwise return None. current_url(...) current_url() -> string or None If a document is being viewed, return its URL; otherwise return None. info_box(...) info_box(text[, title]) -> None Display information to the user in a dialog box. Arguments: text -- The text to be displayed in the dialog box. This argument can be a string or any object that has a string representation as returned by str(object). Optional arguments: title -- A string containing a title for the dialog box. By default the string "Info" is used. input_box(...) input_box(prompt, callback, title="User dialog", initial="") -> None Display a dialog box to prompt for user input. Arguments: prompt -- A string containing a prompt for the dialog box. callback -- A callable object to be called after the dialog is finished. It will be called with a single argument, which will be either a string provided by the user or else None if the user canceled the dialog. Optional keyword arguments: title -- A string containing a title for the dialog box. By default the string "User dialog" is used. initial -- A string containing an initial value for the text entry field. By default the entry field is initially empty. load(...) load(url, callback) -> None Load a document into the ELinks cache and pass its contents to a callable object. Arguments: url -- A string containing the URL to load. callback -- A callable object to be called after the document has been loaded. It will be called with two arguments: the first will be a string representing the document's header, or None if it has no header; the second will be a string representing the document's body, or None if it has no body. menu(...) menu(items[, type]) -> None Display a menu. Arguments: items -- A sequence of tuples. Each tuple must have two elements: a string containing the name of a menu item, and a callable object that will be called without any arguments if the user selects that menu item. Optional arguments: type -- A constant specifying the type of menu to display. By default the menu is displayed at the top of the screen, but if this argument's value is the constant elinks.MENU_TAB then the menu is displayed in the same location as the ELinks tab menu. If its value is the constant elinks.MENU_LINK then the menu is displayed in the same location as the ELinks link menu and is not displayed unless a link is currently selected. open(...) open(url, new_tab=False, background=False) -> None View a document in either the current tab or a new tab. Arguments: url -- A string containing the URL to view. Optional keyword arguments: new_tab -- By default the URL is opened in the current tab. If this argument's value is the boolean True then the URL is instead opened in a new tab. background -- By default a new tab is opened in the foreground. If this argument's value is the boolean True then a new tab is instead opened in the background. This argument is ignored unless new_tab's value is True.