THIS FILE IS SORT OF OUTDATED

what if fifo/socket doesn't exist, or exists but nothing working behind it (anymore)?
-> useful for both cookie handler and event manager
-> implementing in uzbl-core needs refactoring of handler args, or some edge-case workarounds 
   (mason-l's proposal was not too bad: basically make cookie stuff more cookie specific.
   we don't need a generic talk_to_socket. 3 vars: cookie_handler, cookie_handler_socket and 
   cookie_handler_launcher. act depending on which vars are set)
-> for now, assume that we don't need to check for crashes, just make sure there is the initial socket/fifo -> can be done in uzbl-browser script


== event-messages specific ==
* document the event handling mechanism, all events, how to get started with sample event handler
* VARIABLE_SET for all types (but probably not useful for custom vars)
* remove chain command
* scalability -> 1 event manager per n uzbl-browser instances -> mkfifo and redirect uzbl-core stdout to fifo in uzbl-browser
* event manager -> everything based on per instance basis (associative array with uzbl instance name as key)
* migrate all *_handler to EM plugins
* cookies over EM (but we can delay that. it works okay for now)


= keybinding features =
* bring somehow the old 'modkey' possibility back. (have all bindings available in insert mode by holding an extra modkey).. enum plugin?

= key handling (example event_handler.py) examples to implement =
* demonstrate separate key_press and key_release (eg press 'z' to zoom in, on release reset zoom to what it was before. use "locking boolean" as discussed on irc)

More or less in order of importance/urgency

* a variable that holds the page state: loading, pending, seen. this can be shown in titlebar/statusbar and used for multiple instances management
* allow to tag , to group instances together
* store uri/tag/name/state in xorg window properties
* scripts that we use in uzbl-browser -> move from examples dir to $PREFIX/share/uzbl/ (update scripts_dir in sampleconfig accordingly)
* shortcuts to focus other instances (see docs/multiple-instances-management)
* cookie daemon (and maybe other daemons) are not scoped to the testing session when running some test-*-browser targets
* recognize -h with GOption?
* scrolling: make page up and page down configurable.
* conditionals in format strings: eg if(SELECTED_URI) { "-> SELECTED_URI" } or another smart way to achieve the same.
* on uzbl.org commits overview: add date+time and repository
* how to handle different content types? (text-plain, image/png, application/pdf,... maybe a map of content-type to uzbl/command
  xdg already has a spec for this i think
  different "opening" modes (open as configured vs ask before opening)
  integration with download and new window thingies?
* blinking cursor when not in insert mode is confusing.  i suggest dimming it's color if possible
* tab key to jump between input fields should probably work in both insert and command mode
* optional logging of http requests&responses with ip/hostname and port. -> how to implement? handler? stdout? (through a socket so you know what corresponds to what?)
* bench/optimize fifo vs socket performance. measure delays.  minimize forks. does glib use a shell? how does it detect the shebang line?
* "remember account settings" support. but how? configure post data per site? regex match eg '^bbs.archlinux.org' ?
* http_proxy env var not recognized. libproxy (used by libsoup) should handle this http://mail.gnome.org/archives/libsoup-list/2009-February/msg00018.html
* support ssl. do ssl certificate & exception management similar to how we do cookies
* improve DCOMMIT macro.  what if WC is dirty?
* DARCH is not correct (should be at runtime)
* keybinds to open "next" or "previous" by looking for next/prev links and/or looking for numbers in the uri we can inc/decrement
* settings iterating "state generator" so we can "open in new window" again.
* handler for (broken) ssl certs.
* proxy_url is not a good var name. it's not a url.
* regex style page searching? so you can do 'or' and 'and' things. flags like case sensitive etc.
* check for real command name, not just the first letter.
* let users attach handlers to the most common events/signals in uzbl.
  great use case: automatically calling formfiller for certain sites, doing stuff at uzbl startup, etc
* document:
  stylesheet overridding
  formfiller
  full duplex socket
  ^X and such binds
  link following
  scrolling in %
  webkit inspector usage
  scroll commands can take %s, eg scroll 100% for pages
  chaining of actions, print (and other actions that aren't documented yet)
  overriding variables (such as -u)
  variable expansion (@var, @{var}, where do they get expanded? can users have their own vars?, should we merge this with the replacement we do for useragent/window title etc?)
  how %s works for the js command


SOMEDAY:
figure out caching with webkit and in general how we can speed up everything
figure out how webkit intercepts key input
make "disable insert mode" (esc key) configurable
keywords don't work for external commands. is this a problem?
* pass a bit less arguments by default, use the socket to query for them instead, or export the stuff through environment variables, or export them as xorg window properties
