git-web--browse(1)
==================

NAME
----
git-web--browse - git helper script to launch a web browser

SYNOPSIS
--------
'git-web--browse' [OPTIONS] URL/FILE ...

DESCRIPTION
-----------

This script tries, as much as possible, to display the URLs and FILEs
that are passed as arguments, as HTML pages in new tabs on an already
opened web browser.

The following browsers (or commands) are currently supported:

* firefox (this is the default under X Window when not using KDE)
* iceweasel
* konqueror (this is the default under KDE, see 'Note about konqueror' below)
* w3m (this is the default outside graphical environments)
* links
* lynx
* dillo
* open (this is the default under Mac OS X GUI)

Custom commands may also be specified.

OPTIONS
-------
-b BROWSER::
--browser=BROWSER::
	Use the specified BROWSER. It must be in the list of supported
	browsers.

-t BROWSER::
--tool=BROWSER::
	Same as above.

-c CONF.VAR::
--config=CONF.VAR::
	CONF.VAR is looked up in the git config files. If it's set,
	then its value specify the browser that should be used.

CONFIGURATION VARIABLES
-----------------------

CONF.VAR (from -c option) and web.browser
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The web browser can be specified using a configuration variable passed
with the -c (or --config) command line option, or the 'web.browser'
configuration variable if the former is not used.

browser.<tool>.path
~~~~~~~~~~~~~~~~~~~

You can explicitly provide a full path to your preferred browser by
setting the configuration variable 'browser.<tool>.path'. For example,
you can configure the absolute path to firefox by setting
'browser.firefox.path'. Otherwise, 'git-web--browse' assumes the tool
is available in PATH.

browser.<tool>.cmd
~~~~~~~~~~~~~~~~~~

When the browser, specified by options or configuration variables, is
not among the supported ones, then the corresponding
'browser.<tool>.cmd' configuration variable will be looked up. If this
variable exists then "git web--browse" will treat the specified tool
as a custom command and will use a shell eval to run the command with
the URLs passed as arguments.

Note about konqueror
--------------------

When 'konqueror' is specified by the a command line option or a
configuration variable, we launch 'kfmclient' to try to open the HTML
man page on an already opened konqueror in a new tab if possible.

For consistency, we also try such a trick if 'browser.konqueror.path' is
set to something like 'A_PATH_TO/konqueror'. That means we will try to
launch 'A_PATH_TO/kfmclient' instead.

If you really want to use 'konqueror', then you can use something like
the following:

------------------------------------------------
	[web]
		browser = konq

	[browser "konq"]
		cmd = A_PATH_TO/konqueror
------------------------------------------------

Note about git config --global
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Note that these configuration variables should probably be set using
the '--global' flag, for example like this:

------------------------------------------------
$ git config --global web.browser firefox
------------------------------------------------

as they are probably more user specific than repository specific.
See linkgit:git-config[1] for more information about this.

Author
------
Written by Christian Couder <chriscool@tuxfamily.org> and the git-list
<git@vger.kernel.org>, based on git-mergetool by Theodore Y. Ts'o.

Documentation
-------------
Documentation by Christian Couder <chriscool@tuxfamily.org> and the
git-list <git@vger.kernel.org>.

GIT
---
Part of the linkgit:git[1] suite
