| :mod:`webbrowser` --- Convenient Web-browser controller | 
 | ======================================================= | 
 |  | 
 | .. module:: webbrowser | 
 |    :synopsis: Easy-to-use controller for Web browsers. | 
 | .. moduleauthor:: Fred L. Drake, Jr. <fdrake@acm.org> | 
 | .. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org> | 
 |  | 
 | **Source code:** :source:`Lib/webbrowser.py` | 
 |  | 
 | -------------- | 
 |  | 
 | The :mod:`webbrowser` module provides a high-level interface to allow displaying | 
 | Web-based documents to users. Under most circumstances, simply calling the | 
 | :func:`.open` function from this module will do the right thing. | 
 |  | 
 | Under Unix, graphical browsers are preferred under X11, but text-mode browsers | 
 | will be used if graphical browsers are not available or an X11 display isn't | 
 | available.  If text-mode browsers are used, the calling process will block until | 
 | the user exits the browser. | 
 |  | 
 | If the environment variable :envvar:`BROWSER` exists, it is interpreted to | 
 | override the platform default list of browsers, as a :data:`os.pathsep`-separated | 
 | list of browsers to try in order.  When the value of a list part contains the | 
 | string ``%s``, then it is  interpreted as a literal browser command line to be | 
 | used with the argument URL substituted for ``%s``; if the part does not contain | 
 | ``%s``, it is simply interpreted as the name of the browser to launch. [1]_ | 
 |  | 
 | For non-Unix platforms, or when a remote browser is available on Unix, the | 
 | controlling process will not wait for the user to finish with the browser, but | 
 | allow the remote browser to maintain its own windows on the display.  If remote | 
 | browsers are not available on Unix, the controlling process will launch a new | 
 | browser and wait. | 
 |  | 
 | The script :program:`webbrowser` can be used as a command-line interface for the | 
 | module. It accepts an URL as the argument. It accepts the following optional | 
 | parameters: ``-n`` opens the URL in a new browser window, if possible; | 
 | ``-t`` opens the URL in a new browser page ("tab"). The options are, | 
 | naturally, mutually exclusive. | 
 |  | 
 | The following exception is defined: | 
 |  | 
 |  | 
 | .. exception:: Error | 
 |  | 
 |    Exception raised when a browser control error occurs. | 
 |  | 
 | The following functions are defined: | 
 |  | 
 |  | 
 | .. function:: open(url, new=0, autoraise=True) | 
 |  | 
 |    Display *url* using the default browser. If *new* is 0, the *url* is opened | 
 |    in the same browser window if possible.  If *new* is 1, a new browser window | 
 |    is opened if possible.  If *new* is 2, a new browser page ("tab") is opened | 
 |    if possible.  If *autoraise* is ``True``, the window is raised if possible | 
 |    (note that under many window managers this will occur regardless of the | 
 |    setting of this variable). | 
 |  | 
 |    Note that on some platforms, trying to open a filename using this function, | 
 |    may work and start the operating system's associated program.  However, this | 
 |    is neither supported nor portable. | 
 |  | 
 |  | 
 | .. function:: open_new(url) | 
 |  | 
 |    Open *url* in a new window of the default browser, if possible, otherwise, open | 
 |    *url* in the only browser window. | 
 |  | 
 | .. function:: open_new_tab(url) | 
 |  | 
 |    Open *url* in a new page ("tab") of the default browser, if possible, otherwise | 
 |    equivalent to :func:`open_new`. | 
 |  | 
 |  | 
 | .. function:: get(using=None) | 
 |  | 
 |    Return a controller object for the browser type *using*.  If *using* is | 
 |    ``None``, return a controller for a default browser appropriate to the | 
 |    caller's environment. | 
 |  | 
 |  | 
 | .. function:: register(name, constructor, instance=None) | 
 |  | 
 |    Register the browser type *name*.  Once a browser type is registered, the | 
 |    :func:`get` function can return a controller for that browser type.  If | 
 |    *instance* is not provided, or is ``None``, *constructor* will be called without | 
 |    parameters to create an instance when needed.  If *instance* is provided, | 
 |    *constructor* will never be called, and may be ``None``. | 
 |  | 
 |    This entry point is only useful if you plan to either set the :envvar:`BROWSER` | 
 |    variable or call :func:`get` with a nonempty argument matching the name of a | 
 |    handler you declare. | 
 |  | 
 | A number of browser types are predefined.  This table gives the type names that | 
 | may be passed to the :func:`get` function and the corresponding instantiations | 
 | for the controller classes, all defined in this module. | 
 |  | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | Type Name             | Class Name                              | Notes | | 
 | +=======================+=========================================+=======+ | 
 | | ``'mozilla'``         | :class:`Mozilla('mozilla')`             |       | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | ``'firefox'``         | :class:`Mozilla('mozilla')`             |       | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | ``'netscape'``        | :class:`Mozilla('netscape')`            |       | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | ``'galeon'``          | :class:`Galeon('galeon')`               |       | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | ``'epiphany'``        | :class:`Galeon('epiphany')`             |       | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | ``'skipstone'``       | :class:`BackgroundBrowser('skipstone')` |       | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | ``'kfmclient'``       | :class:`Konqueror()`                    | \(1)  | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | ``'konqueror'``       | :class:`Konqueror()`                    | \(1)  | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | ``'kfm'``             | :class:`Konqueror()`                    | \(1)  | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | ``'mosaic'``          | :class:`BackgroundBrowser('mosaic')`    |       | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | ``'opera'``           | :class:`Opera()`                        |       | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | ``'grail'``           | :class:`Grail()`                        |       | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | ``'links'``           | :class:`GenericBrowser('links')`        |       | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | ``'elinks'``          | :class:`Elinks('elinks')`               |       | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | ``'lynx'``            | :class:`GenericBrowser('lynx')`         |       | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | ``'w3m'``             | :class:`GenericBrowser('w3m')`          |       | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | ``'windows-default'`` | :class:`WindowsDefault`                 | \(2)  | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | ``'internet-config'`` | :class:`InternetConfig`                 | \(3)  | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 | | ``'macosx'``          | :class:`MacOSX('default')`              | \(4)  | | 
 | +-----------------------+-----------------------------------------+-------+ | 
 |  | 
 | Notes: | 
 |  | 
 | (1) | 
 |    "Konqueror" is the file manager for the KDE desktop environment for Unix, and | 
 |    only makes sense to use if KDE is running.  Some way of reliably detecting KDE | 
 |    would be nice; the :envvar:`KDEDIR` variable is not sufficient.  Note also that | 
 |    the name "kfm" is used even when using the :program:`konqueror` command with KDE | 
 |    2 --- the implementation selects the best strategy for running Konqueror. | 
 |  | 
 | (2) | 
 |    Only on Windows platforms. | 
 |  | 
 | (3) | 
 |    Only on Mac OS platforms; requires the standard MacPython :mod:`ic` module. | 
 |  | 
 | (4) | 
 |    Only on Mac OS X platform. | 
 |  | 
 | Here are some simple examples:: | 
 |  | 
 |    url = 'http://www.python.org/' | 
 |  | 
 |    # Open URL in a new tab, if a browser window is already open. | 
 |    webbrowser.open_new_tab(url + 'doc/') | 
 |  | 
 |    # Open URL in new window, raising the window if possible. | 
 |    webbrowser.open_new(url) | 
 |  | 
 |  | 
 | .. _browser-controllers: | 
 |  | 
 | Browser Controller Objects | 
 | -------------------------- | 
 |  | 
 | Browser controllers provide these methods which parallel three of the | 
 | module-level convenience functions: | 
 |  | 
 |  | 
 | .. method:: controller.open(url, new=0, autoraise=True) | 
 |  | 
 |    Display *url* using the browser handled by this controller. If *new* is 1, a new | 
 |    browser window is opened if possible. If *new* is 2, a new browser page ("tab") | 
 |    is opened if possible. | 
 |  | 
 |  | 
 | .. method:: controller.open_new(url) | 
 |  | 
 |    Open *url* in a new window of the browser handled by this controller, if | 
 |    possible, otherwise, open *url* in the only browser window.  Alias | 
 |    :func:`open_new`. | 
 |  | 
 |  | 
 | .. method:: controller.open_new_tab(url) | 
 |  | 
 |    Open *url* in a new page ("tab") of the browser handled by this controller, if | 
 |    possible, otherwise equivalent to :func:`open_new`. | 
 |  | 
 |  | 
 | .. rubric:: Footnotes | 
 |  | 
 | .. [1] Executables named here without a full path will be searched in the | 
 |        directories given in the :envvar:`PATH` environment variable. |