A web browser that adheres to the unix philosophy.
Any program can only be really useful if it complies with the Unix philosophy. Web browsers (and other tools that work with HTML, such as feed readers) are frequent violators of this principle:
The Uzbl project was started as an attempt to resolve this.
"Uzbl" is an umbrella project consisting of different flavors. In the future more things may come, but for now:
Main component meant for integration with other tools and scripts.
A minimal browser which encompasses a default configuration file, event manager and a selection of scripts which gives a comparable browsing experience to the more common browsers.
uzbl-core except that the status bar contains useful
information.A flavor of uzbl built on top of uzbl-browser which adds tabbed browsing.
uzbl-browser.uzbl-browser
instances without getting lost.Throughout the documentation, when referring to uzbl we mean uzbl-core,
unless otherwise specified.
The general idea is that Uzbl by default is very bare bones. You can send it commands to update settings and perform actions, through various interfaces. There is a limited, built-in default configuration. It sets a basic status bar, title format, and network connection settings. By default, there are no keybindings defined at all (default keybindings would be counterproductive when you try to customize). For examples of the possibilities what you can do, please see the sample configurations, and wiki page.
There are several interfaces to interact with Uzbl:
uzbl --config : `` will be read line by line, and the
commands in it will be executed. Useful to configure Uzbl at startup. If you
have a file in $XDG_CONFIG_HOME/uzbl/config (this expands to
~/.config/uzbl/config on most systems), it will be automatically recognized.
stdin: to write commands into stdin, use --config - (or -c -).
Interactive: you can enter commands (and bind them to shortcuts, even at runtime). By default, the behaviour is modal (vi-like):
There is also support for "chained" commands (multiple characters long), and keyworded commands. Also you can trigger incremental matching on commands and variables after pressing return. See the sample configuration file for more information.
By default, copy and paste works when typing commands:
insert (paste X cliboard)shift insert (paste primary selection buffer)FIFO & socket files: If enabled by setting their paths through one of the
above means, you can have socket and FIFO files available which are very
useful to control uzbl using external programs.
The advantage of the FIFO is you can write directly to it, but it's half
duplex only (uzbl cannot send a response to you).
The socket is full duplex but a socket-compatible wrapper such as socat
is needed to work with it. For example:
echo | socat - unix-connect:
When uzbl forks a new instance (e.g., "open in new window") it will use the
same command line arguments (e.g., the same --config ), except for
--named. If you made changes to the configuration at runtime, these are not
passed on to the child.
WebKit2 changes many things compared to WebKit1, some of which impact uzbl
greatly. This version of uzbl only supports WebKit1 while older version tried
to support both at the same time.
For a uzbl built on WebKit2 check out the
next branch
Uzbl will read commands via standard input, named FIFO pipe (once fifo_dir
is set) and Unix socket (once socket_dir is set). For convenience, uzbl can
also be instructed to read commands from a file on startup by using the
--config option. Indeed, the config file is nothing more than a list of
commands with support for comments (using the # character).
Each command starts with the name of a command or a uzbl variable that expands
to it. A command is terminated by a newline. Empty lines and lines that start
with the hash sign (ignoring leading whitespace) are ignored by the parser.
Command names are always written in lowercase.
A list of commands supported by uzbl is given here. Optional arguments are
given in square brackets ([]) with literal strings options in lowercase
separated by a pipe (|) character. N indicates an integer value and other
uppercase values are placeholders describing what the value should be. Required
options are given in angle brackets (<>). Arguments on which argument
splitting is not performed are given in curly braces ({}). Variable arguments
are indicated with ellipses (...). As an example:
`example1 [URI...]`means that the command example requires its first argument which must either
be a literal a or b, a second argument which is an integer, and any
remaining arguments are treated as URIs. Another example:
`example2 {VALUE}`means that the first argument is split off used as a key and the remaining
string is used verbatim. The command example2 key many args would have key
as KEY and many args as VALUE.
back [N]forward [N]reload [cached|full]cached is given (the default), the cache is
used. If full is given, the cache is ignored.stopuri {URI}uzbl to navigate to the given URI.download [DESTINATION]load html text error_html frame [NAME]_current
frame is used. Supported subcommands include:list (Unimplemented)focus (Unimplemented)reloadstopsave (Unimplemented)load (Unimplemented)get (Unimplemented)set (Unimplemented)cookie uzbl. The subcommands work as follows:add delete clear allclear domain [DOMAIN...]scroll beginend[-]N[-]N%N!N%!zoom [VALUE]zoom_step is used.hardcopy [REGION]page (the default)frame [NAME]geometry uzbl window. This is subject to window manager
policy. If the size is maximized, the uzbl window will try to maximize
itself. Otherwise, the size is parsed using the
WIDTHxHEIGHT±XOFFSET±YOFFSET pattern.snapshot [FLAG...] (WebKit1 >= 1.9.6)png. Acceptable regions include:visibleplugin refreshtoggle [NAME...]remove_all_dbspell (WebKit1 >= 1.5.1)ignore [WORD...]learn [WORD...]autocorrect guesses favicon clearuri save (Unimplemented)css add No open issues yet, or sync has not completed.