+* `dump_config`
+ - dumps your current config (which may have been changed at runtime) to stdout, in a format you can use to pipe into uzbl again (or use as config file)
+* `keycmd <string>`
+* `keycmd_nl <string>`
+ - keycmd sets the interactive command buffer to `<string>`. If the given string is a valid binding, it will execute. `Keycmd_nl` is like `keycmd`, but it also emulates a press of return, causing bindings with a parameter to execute. For example, `keycmd_nl o google.com` would load the said url if you have a binding like `bind o _ = uri %s`.
+* `keycmd_bs`
+ - erase (backspace) one character from the command buffer
+* `chain <command> <command> ..`
+ - use for chaining multiple commands
+ - remember to quote the commands; one command must come as one parameter
+ - if you use `chain` with a handler script which must return some output (such as a cookie handler -- uzbl will wait for and use its output), use sync_spawn or sync_sh instead of spawn or sh in the command that should give the output
+* `update_gui`
+ - update the contents of the status and title bars
+
+### VARIABLES AND CONSTANTS
+Uzbl has a lot of internal variables and constants. You can get the values (using the `print` command, see above), and for variables you can also change the value at
+runtime. Some of the values can be passed at start up through commandline arguments, others need to be set by using commands (eg in config file).
+Some of them have default values (see config.h)
+Some variables have callback functions which will get called after setting the variable to perform some additional logic (see below)
+
+Besides the builtin variables you can also define your own ones and use them in the exact same way as the buitin ones.
+
+* Variables:
+ - uri (callback: load the uri)
+ - verbose: affects output on stdout
+ - inject_html
+ - keycmd: holds the input buffer (callback: update input buffer)
+ - status_message (callback: update title)
+ - show_status: show statusbar or not
+ - status_top: statusbar on top?
+ - status_format: marked up, to be expanded string for statusbar (callback: update statusbar)
+ - status_pbar_done: character to denote done % of pageload
+ - status_pbar_pending: character to denote pending % of pageload
+ - status_pbar_width: width of progressbar
+ - status_background: color which can be used to override Gtk theme.
+ - insert_indicator: string to denote insert mode
+ - command_indicator: string to denote command mode
+ - title_format_long: titlebar string when no statusbar shown (will be expanded
+ - title_format_short: titlebar string when statusbar shown (will be expanded)
+ - icon: path to icon for Gtk
+ - insert_mode: whether insert mode is active
+ - always_insert_mode: set this to true if you don't like modal (vim-like) interfaces
+ - reset_command_mode: automatically revert to command mode on pageload (unless always_insert_mode is set)
+ - modkey: modkey which can be pressed to activate keybind from inside insert mode
+ - load_finish_handler
+ - load_start_handler
+ - load_commit_handler
+ - download_handler
+ - cookie_handler
+ - new_window: handler to execute to invoke new uzbl window (TODO better name)
+ - scheme_handler: handler to execute for each URI navigated to - the navigation request will be ignored if handler prints "USED\n"
+ - fifo_dir: location to store fifo's
+ - socket_dir: location to store sockets
+ - http_debug: http debug mode (value 0-3)
+ - shell_cmd: alias which will be expanded to use shell commands (eg sh -c)
+ - proxy_url: http traffic socks proxy (eg: http://<host>:<port>)
+ - max_conns
+ - max_conns_host
+ - useragent: to be expanded strin
+ - zoom_level
+ - font_size
+ - monospace_size
+ - minimum_font_size
+ - disable_plugins (TODO rename to enable)
+ - disable_scripts (TODO rename to enable)
+ - autoload_images
+ - autoshrink_images: shrink images to window size (default 0)
+ - enable_spellcheck
+ - enable_private
+ - print_backgrounds: print background images? (default 0)
+ - stylesheet_uri: use this to override the pagelayout with a custom stylesheet
+ - resizable_text_areas
+ - default_encoding: iso-8859-1 by default
+ - enforce_96_dpi: 1 by default
+ - caret_browsing
+ - default_font_family = sans-serif
+ - monospace_font_family = monospace (example "Aerial Mono" )
+ - cursive_font_family = sans
+ - fantasy_font_family = "Pterra"
+ - serif_font_family = serif (example "DejaVu Serif")
+ - sans_serif_font_family = sans (example "DejaVu Sans")
+
+
+* Constants (not dumpable or writeable):
+ - WEBKIT_MAJOR: set at compile time
+ - WEBKIT_MINOR: set at compile time
+ - WEBKIT_MICRO: set at compile time
+ - ARCH_UZBL: set at compile time
+ - COMMIT: set at compile time
+ - LOAD_PROGRESS
+ - LOAD_PROGRESSBAR
+ - TITLE
+ - SELECTED_URI
+ - MODE
+ - NAME: name of the uzbl instance (Xorg window id, unless set by cmdline arg) (TODO: can't we make this a variable?)
+
+
+### VARIABLE EXPANSION AND COMMAND/JAVA SCRIPT SUBSTITUTION
+
+Variable expansion works pretty much as known from shell interpreters (sh, bash, etc.). This means you can
+construct strings with uzbl variables in them and have uzbl replace the variable name with its contents.
+
+In order to let uzbl know what to expand you'll need to prepend @ to the variable name:
+
+ print The variable \@show_status contains @show_status
+
+The above example demonstrates two things:
+
+ * '\' is treated as escape character and will use the character immediatelly following it literallily
+ this means '\@show_status' will not expand to the variable content but be rather printed as
+ '@show_status'
+
+ * prepending the variable with '@' will expand to its contents
+
+ * like in the shell you can use @{uzbl_var} to denote the beginning/end of the variable name in
+ cases where it is not obvious what belongs to the name and what not.
+ E.g.: print @{show_status}foobar
+
+
+Command substitution will launch any commands and substitute the call with the return value of the command.
+
+Uzbl will substitute any commands enclosed within @( )@:
+
+ print Command substitution: @(uname -a)@
+
+You can access any uzbl variable from within a command substitution:
+
+ print @(echo -n 'Accessing the show_status var from an external script, value: @show_status')@
+
+
+Java script substitution works in the exact same way as command substitution but you will need to enclose
+the java script in @< >@.
+
+ print The currently viewed document contains @<document.links.length>@ links
+
+Variable expansion also works within a java script substitution.
+
+
+When a piece of text needs to be XML escaped after it is expanded (for example,
+in the status bar format), you can use @[ ]@ substitution:
+
+ print This text is XML escaped: @[<&>]@
+
+ # prints: This text is XML escaped: <&>
+
+
+NOTE: If you need to use literal @ or \ characters you will need to escape them:
+
+ print At sign: \@ and backslash: \\