browse-url

Homepage: https://www.gnu.org/software/emacs

Author: Denis Howe

Summary

Pass a URL to a web browser

Commentary

This package provides functions which read a URL from the
minibuffer, defaulting to the URL around point, and ask a web
browser to load it.  It can also load the URL at point, or one
associated with the current buffer.  The main functions are:

  `browse-url'             Open URL
  `browse-url-at-point'    Open URL at point
  `browse-url-of-buffer'   Use web browser to display buffer
  `browse-url-of-file'     Use web browser to display file

Different browsers use different methods of remote control so there
is one function for each supported browser.  If the chosen browser
is not running, it is started.  Currently there is support for the
following browsers, as well as some other obsolete ones:

Function                           Browser     Earliest version
browse-url-firefox                 Firefox     Don't know (tried with 1.0.1)
browse-url-chrome                  Chrome      47.0.2526.111
browse-url-chromium                Chromium    3.0
browse-url-epiphany                GNOME Web (Epiphany)    Don't know
browse-url-webpositive             WebPositive 1.2-alpha (Haiku R1/beta3)
browse-url-text-*                  Any text browser     0
browse-url-generic                 arbitrary
browse-url-default-windows-browser MS-Windows browser
browse-url-default-macosx-browser  macOS browser
browse-url-xdg-open                freedesktop.org xdg-open
browse-url-kde                     KDE konqueror (kfm)
browse-url-elinks                  Elinks      Don't know (tried with 0.12.GIT)
browse-url-default-android-browser Android     2.3.3 (should work on 2.2 too)
eww-browse-url                     Emacs Web Wowser

Browsers can cache web pages so it may be necessary to tell them to
reload the current page if it has changed (e.g., if you have edited
it).  There is currently no perfect automatic solution to this.

See also the ffap.el package.  The huge hyperbole package also
contains similar functions.


Usage

To display the URL at or before point:
M-x browse-url-at-point RET
or, similarly but with the opportunity to edit the URL extracted from
the buffer, use:
M-x browse-url

To display a URL by shift-clicking on it, put this in your init file:
     (global-set-key [S-mouse-2] 'browse-url-at-mouse)
(Note that using Shift-mouse-1 is not desirable because
that event has a standard meaning in Emacs.)

To display the current buffer in a web browser:
M-x browse-url-of-buffer RET

To display the current region in a web browser:
M-x browse-url-of-region RET

In Dired, to display the file named on the current line:
M-x browse-url-of-dired-file RET


Customization (Init File)

To see what variables are available for customization, type
`M-x set-variable browse-url TAB'.  Better, use
`M-x customize-group browse-url'.

Bind the browse-url commands to keys with the `C-c C-z' prefix:

	(keymap-global-set "C-c C-z ." 'browse-url-at-point)
	(keymap-global-set "C-c C-z b" 'browse-url-of-buffer)
	(keymap-global-set "C-c C-z r" 'browse-url-of-region)
	(keymap-global-set "C-c C-z u" 'browse-url)
	(keymap-global-set "C-c C-z v" 'browse-url-of-file)
	(add-hook 'dired-mode-hook
		  (lambda ()
	             (keymap-local-set "C-c C-z f" 'browse-url-of-dired-file)))

Browse URLs in mail messages under RMAIL by clicking mouse-2:
	(add-hook 'rmail-mode-hook (lambda () ; rmail-mode startup
	  (keymap-set rmail-mode-map [mouse-2] 'browse-url-at-mouse)))
Alternatively, add `goto-address' to `rmail-show-message-hook'.

Gnus provides a standard feature to activate URLs in article
buffers for invocation of browse-url.

Use the Emacs Web Wowser (EWW) when not running under X11:
	(or (eq window-system 'x)
	    (setopt browse-url-browser-function #'eww-browse-url))

To always save modified buffers before displaying the file in a browser:
	(setopt browse-url-save-file t)

To invoke different browsers/tools for different URLs, customize
`browse-url-handlers'.  In earlier versions of Emacs, the same
could be done by setting `browse-url-browser-function' to an alist
but this usage is deprecated now.

All browser functions provided by here have a
`browse-url-browser-kind' symbol property set to either `internal'
or `external' which determines if they browse the given URL inside
Emacs or spawn an external application with it.  Some parts of
Emacs make use of that, e.g., when an URL is dragged into Emacs, it
is not sensible to invoke an external browser with it, so here only
internal browsers are considered.  Therefore, it is advised to put
that property also on custom browser functions.
      (function-put 'my-browse-url-in-emacs 'browse-url-browser-kind
                    'internal)
      (function-put 'my-browse-url-externally 'browse-url-browser-kind
                    'external)

Dependencies

Reverse dependencies