.\" This file is processed to generate manpages in the
.\" build diretory.
.TH @@PACKAGE@@ 1 "" "" "USER COMMANDS"

.SH NAME
@@PACKAGE@@ \- the web browser from Google

.SH SYNOPSIS
.B @@PACKAGE@@
[\fIOPTION\fR] [\fIPATH\fR|\fIURL\fR]

.SH DESCRIPTION
See the Google Chrome help center for help on using the browser.
.IP
<https://support.google.com/chrome/>
.PP
This manpage only describes invocation, environment, and arguments.

.SH OPTIONS
@@MENUNAME@@ has hundreds of undocumented command-line flags that are added
and removed at the whim of the developers.  Here, we document relatively
stable flags.
.TP
\fB\-\-user\-data\-dir\fR=\fIDIR\fR
Specifies the directory that user data (your "profile") is kept in.
Defaults to
.I $HOME/.config/@@PACKAGE@@ .
Separate instances of @@MENUNAME@@ must use separate user data directories;
repeated invocations of @@PACKAGE@@ will reuse an existing process for
a given user data directory.

.TP
\fB\-\-app\fR=\fIURL\fR
Runs
.I URL
in "app mode": with no browser toolbars.

.TP
\fB\-\-incognito\fR
Open in incognito mode.

.TP
\fB\-\-new-window\fR
If \fIPATH\fR or \fIURL\fR is given, open it in a new window.

.TP
\fB\-\-proxy-server\fR=\fIhost:port\fR
Specify the HTTP/SOCKS4/SOCKS5 proxy server to use for requests.  This
overrides any environment variables or settings picked via the options dialog.
An individual proxy server is specified using the format:

  [<proxy-scheme>://]<proxy-host>[:<proxy-port>]

Where <proxy-scheme> is the protocol of the proxy server, and is one of:

  "http", "socks", "socks4", "socks5".

If the <proxy-scheme> is omitted, it defaults to "http". Also note that
"socks" is equivalent to "socks5".

Examples:

  --proxy-server="foopy:99"
      Use the HTTP proxy "foopy:99" to load all URLs.

  --proxy-server="socks://foobar:1080"
      Use the SOCKS v5 proxy "foobar:1080" to load all URLs.

  --proxy-server="socks4://foobar:1080"
      Use the SOCKS v4 proxy "foobar:1080" to load all URLs.

  --proxy-server="socks5://foobar:66"
      Use the SOCKS v5 proxy "foobar:66" to load all URLs.

It is also possible to specify a separate proxy server for different URL types,
by prefixing the proxy server specifier with a URL specifier:

Example:

  --proxy-server="https=proxy1:80;http=socks4://baz:1080"
      Load https://* URLs using the HTTP proxy "proxy1:80". And load http://*
      URLs using the SOCKS v4 proxy "baz:1080".

.TP
\fB\-\-no-proxy-server\fR
Disables the proxy server.  Overrides any environment variables or
settings picked via the options dialog.

.TP
\fB\-\-proxy-auto-detect\fR
Autodetect proxy configuration.  Overrides any environment variables
or settings picked via the options dialog.

.TP
\fB\-\-proxy-pac-url\fR=\fIURL\fR
Specify proxy autoconfiguration URL.  Overrides any environment variables
or settings picked via the options dialog.

.TP
\fB\-\-password-store\fR=<\fIbasic\fR|\fIgnome\fR|\fIkwallet\fR>
Set the password store to use.  The default is to automatically detect based
on the desktop environment.  \fIbasic\fR selects the built in, unencrypted
password store.  \fIgnome\fR selects Gnome keyring.  \fIkwallet\fR selects
(KDE) KWallet.  (Note that KWallet may not work reliably outside KDE.)

.TP
\fB\-\-version\fR
Show version information.

.PP
As a GTK+ app, @@MENUNAME@@ also obeys GTK+ command-line flags, such
as
.BR \-\-display .
See the GTK documentation for more:
.IP
<http://library.gnome.org/devel/gtk/stable/gtk-running.html>
<http://library.gnome.org/devel/gtk/stable/gtk-x11.html>

.SH ENVIRONMENT
@@MENUNAME@@ obeys the following environment variables:

.TP
.B all_proxy
Shorthand for specifying all of
.B http_proxy, https_proxy, ftp_proxy

.TP
.B http_proxy, https_proxy, ftp_proxy
The proxy servers used for HTTP, HTTPS, and FTP.
.I Note:
because Gnome/KDE proxy settings may propagate into these variables
in some terminals, this variable is ignored (in preference for actual
system proxy settings) when running under Gnome or KDE.  Use the
command-line flags to set these when you want to force their values.

.TP
.B auto_proxy
Specify proxy autoconfiguration.  Defined and empty autodetects; otherwise,
it should be an autoconfig URL.  But see above note about Gnome/KDE.

.TP
.B SOCKS_SERVER
SOCKS proxy server (defaults to SOCKS v4, also set
.B SOCKS_VERSION=5
to use SOCKS v5).

.TP
.B no_proxy
Comma separated list of hosts or patterns to bypass proxying.

.SH FILES
.TP
.I $HOME/.config/@@PACKAGE@@
Default directory for configuration data.

.TP
.I $HOME/.cache/@@PACKAGE@@
Default directory for cache data.  (Why?  See
<http://standards.freedesktop.org/basedir-spec/latest/> .)

.SH BUGS
Bug tracker:
.IP
http://code.google.com/p/chromium/issues/list
.PP
Be sure to do your search within "All Issues" before reporting bugs,
and be sure to pick the "Defect on Linux" template when filing a new one.

.SH AUTHOR
The Chromium team \- <http://www.chromium.org>
