better support for CPP/LDFLAGS environment variables in build
[uzbl-mobile] / README
diff --git a/README b/README
index a43e0cd..68a3b33 100644 (file)
--- a/README
+++ b/README
@@ -53,8 +53,10 @@ Time to change that!
 
 
 ### CONFIGURATION / CONTROL:
-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. (TODO: some default settings)
-For examples, please see the sample config(s).
+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 default configuration.  Please see config.h to see what it contains.
+By default, there are *no* keybinds defined at all.  (Default keybinds would work counterproductive when you try to customize)
+For examples of the possibilities what you can do, please see the sample config(s).
 There are several interfaces to interact with uzbl:
 
 * uzbl --config <filename>: <filename> will be read line by line, and the commands in it will be executed.  useful to configure uzbl at startup.
@@ -77,8 +79,105 @@ There are several interfaces to interact with uzbl:
   an utitly we include with uzbl made especially for writing commnands to the socket (and at some point, it will be able to tell you the response
   too):  `uzblctrl -s <socketfile> -c <command>`
 
+When uzbl forks a new instance (eg "open in new window") it will use the same commandline arguments (eg the same --config <file>), except --uri and--name.
+If you made changes to the configuration at runtime, these are not pased on to the child.
+
 ### COMMAND SYNTAX
-TODO
+Commands are used for:
+
+* creating keybindings
+* altering variables
+* getting the values of variables
+* running actions
+* setting the input buffer
+
+Uzbl will read commands via standard input, named fifo pipe (if `fifo_dir` is set) and IPC socket (when `socket_dir` is set).
+For convenience, uzbl can also be instructed to read commands from a file on startup by using the `-c` option.  Indeed, the config file is nothing more than a list of commands.
+
+Each command starts with the name of the command, which must be the first thing on a line; preceding whitespace is not allowed.
+A command is terminated by a newline.  Empty lines and lines that start with the hash sign are ignored by the parser.  Command names are not case sensitive.
+
+The following commands are recognized:
+
+    SET <key> = <value>
+Set is used for changing variables.  Every variable can be changed on the fly and for some variables, some additional logic is performed.
+For example, setting the variable `uri` will make uzbl start loading it, and changing the format of the statusbar/windowtitle/user agent/.. will be effective immediately.
+If you want to unset a string, use SET with one space after the equals sign.
+
+    GET <key>
+Use this to print the value of a key. (and TODO, get the value through the socket)
+
+    BIND <string> = <action>
+Makes the character sequence `<string>` invoke `<action>` when typed interactively in uzbl.
+There are a few tricks you can do:
+
+* `<string>` ends with an underscore: the action will only be invoked after pressing return/enter. If the user enters text where `<string>` has the underscore, `%s` in the `<action>` string will be replaced by this text. (optional)
+* `<string>` ends with an asterisk: similar behavior as with an underscore, but also makes the binding incremental (i.e. the action will be invoked on every keystroke).
+* `<string>` ends on a different character: you need to type the full string, which will trigger the action immediately, without pressing enter/return.
+
+Examples:
+
+    # uzbl will load the url when you type: 'o <url><enter>'
+    bind o _ = uri %s
+    # a search action which is called on every character typed after the slash, letting you see the search narrow down while typing.
+    #  Hitting return, enter or esc will terminate the search.
+    bind /*  = search %s
+    # when you type `ZZ` and nothing else, the exit action will be triggered immediately.
+    bind ZZ  = exit
+
+    ACT <action>
+This tells uzbl to execute an action immediately.  The simplest example of this would be `act exit`; you know what that'll do.
+
+(See sample config)
+
+### ACTIONS
+Actions are invoked via bindings and by the ACT command.  Most actions are self-explanatory, though a few need to be clarified.  A list of
+actions follows:
+
+* `back`
+* `forward`
+* `scroll_vert <amount>`
+* `scroll_horz <amount>`
+   - amount is given in pixels(?) or as a percentage of the size of the view
+   - set amount to 100% to scroll a whole page
+* `scroll_begin`
+* `scroll_end`
+* `reload`
+* `reload_ign_cache`
+* `stop`
+* `zoom_in`
+* `zoom_out`
+* `uri <address>`
+* `js <body>`
+   - execute the javascript in `<body>`
+   - remember that the commands, and thus actions, must not contain line breaks
+* `script <file>`
+   - execute the javascript in `<file>`
+* `toggle_status`
+* `spawn <executable> <additonal args>`
+   - runs a command; see EXTERNAL SCRIPTS for details
+   - PATH is searched so giving the full path to commands is not neccessary
+   - note that the arguments as specified in "EXTERNAL SCRIPTS" are appended at the end, so the argument numbers will be higher.
+* `sh <command>`
+   - runs a shell command by expanding `%s` in the `shell_cmd` variable with the specified command; primarily useful as a shortcut for `spawn sh -c <body>`
+   - note that the arguments as specified in "EXTERNAL SCRIPTS" are appended at the end, so the argument numbers will be higher.
+* `exit`
+* `search <string>`
+* `search_reverse <string>`
+   - search with no string will search for the next/previous occurrence of the string previously searched for
+* `toggle_insert_mode <optional state>`
+   - if the optional state is 0, disable insert mode. If 1, enable insert mode.
+* `runcmd`
+   - can be used for running a command such as SET or BIND
+* `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 <action> <action> ..`
+   - use for chaining multiple actions
+   - remember to quote the actions; one action must come as one parameter
+
 
 ### VARIABLE REPLACEMENT
 Some of the variables are interpreted:
@@ -102,7 +201,7 @@ You can use external scripts with uzbl the following ways:
 
 Have a look at the sample configs and scripts!
 
-Scripts that are called by uzbl are passed the following arguments:
+Handler scripts that are called by uzbl are passed the following arguments:
 
     $1 uzbl-config-file
     $2 uzbl-pid
@@ -135,6 +234,8 @@ The script specific arguments are this:
     $11 cookie (only with PUT requests)
 
 
+Custom, userdefined scripts (`spawn foo bar`) get first the arguments as specified in the config and then the above 7 are added at the end.
+
 ### COMMAND LINE ARGUMENTS
 
     -u, --uri=URI            Uri to load (equivalent to 'set uri = URI')