The uzbl web interface tools

Uzbl follows the UNIX philosophy - "Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface." Uzbl comes in different flavors:

  • uzbl-core: main component meant for integration with other tools and scripts
    • Uses WebkitGtk+ for rendering, network interaction (libsoup). Css, javascript, plugin support etc come for free
    • Provides interfaces to get data in (commands/configuration) and out (events): stdin/stdout/fifo/unix sockets
    • You see a webkit view and (optionally) a statusbar which gets popuplated externally
    • No built-in means for url changing, loading/saving of bookmarks, saving history, keybinds, downloads, ...
    • Extra functionality: many sample scripts come with it, on uzbl wiki or write them yourself
    • Entire configuration/state can be changed at runtime
    • Uzbl keeps it simple, and puts you in charge.
  • uzbl-browser: a complete browser experience based on uzbl-core
    • Uses a set of scripts (mostly python) that will fit most people, so things work out of the box. Yet plenty of room for customisation
    • Brings everything you expect: url changing, history, downloads, form filling, link navigation, cookies, event management etc. However: one page per instance
    • Advanced, customizable keyboard interface with support for modes, modkeys, multichars, variables (keywords) etc. (eg you can tweak the interface to be vim-like, emacs-like or any-other-program-like)
    • Adequate default configuration
    • Focus on plaintext storage for your data and configs in simple, parseable formats and adherence to the xdg basedir spec
    • Visually, similar to uzbl-core except that the statusbar contains useful things. One window per webpage
  • uzbl-tabbed: wraps around uzbl-browser and multiplexes it
    • Spawns one window containing multiple tabs, each tab containing a full embedded uzbl-browser
    • Ideal as a quick and simple solution to manage multiple uzbl-browser instances without getting lost

Uzbl is under heavy development and should be considered alpha. See the Get uzbl page

Latest News

2010.04.03: Working gmails, better formfillers, less bads and more goods

2010-04-03

Scripts:

  • One new formfiller.sh to rule them all. Features: posix sh, multiple
    profiles per site (if needed), correctly talks to uzbl (doesn't do any http)
  • download.sh: use content-disposition header (so you get more sensible
    filenames) and tell wget to use `$XDG_DATA_HOME/uzbl/cookies.txt`
  • bookmark script: strip tags from pagetitles when saving new bookmarks to avoid bogus
    separations
  • Removed inferior/duplicate/broken scripts: cookies.sh, follower.js, hint.js,
    formfiller.pl, linkfollow.js, scroll-percentage.js, extedit.js.
    In the future we will probably use formfiller.sh or something as extedit.js and
    scroll-percentage can maybe be reimplemented without using Uzbl.run()



Uzbl-tabbed:

  • Gtk notebook tab reordering
  • Handle SIGCHLD to correctly reap children
  • Simpler (and working) plaintext session saving/loading. no more json



Uzbl-core

  • Support both http and (new) javascript cookies. This should fix
    problems with gmail and probably other sites
  • javascript_windows parameter to control whether JS can open new windows by itself
  • replaced old new_window handler with NEW_WINDOW event. You can use this
    event to open links (normal links or js links) in the same/new window, but also to open the link in a
    new tab in uzbl-tabbed. (see config)
  • some fixes in cleanup()
  • Allow period character in variable names (update your user agent, see config)
  • Don't try to steal focus if in plug mode
  • simplify uri command. now just wraps around `set uri`
  • remove deprecated download_handler. we already use the DOWNLOAD_REQUEST event



Config:

  • you can use both tabs and spaces in the config now
  • '<Shift-Insert>` binding to dump xclip contents into keycmd
  • `<Ctrl>]` binding to escape
  • Reload only reloads set commands. This avoids things such as adding
    entries to your menu twice when reloading (but does not restore binds
    anymore)
  • fix `<Home>` bind



Makefile:

  • stopped duplicate compiling
  • use DOCDIR
  • set correct permissions on all installed files



Goodies:

  • Vim syntax file for uzbl config



Dropped dependencies:

  • perl
  • python-json



From now on, we encourage users to write their scripts in either posix sh or
in python, to minimize dependencies when the scripts end up in the main
tree.

Syntax hilighting in vim:

syntax highlighting




This release is brought to you by Alex Alexander, Cedric Staub, Dmytro
Milinevskyy, Jake Probst, James Campos, Pawel Tomak, Paweł Zuzelski, Israel
Levin and of course Mason Larobina, Rob Manea and myself.

Dieter

2010.03.14: mouse pointer events, http auth handler, uzbl-tabbed improvements, ...

2010-03-14

  • resource-request-starting event. An event for every resource requested (incl. images, stylesheets, etc) (Andrea Marchesini)
  • mouse pointer events. (No plugins yet to handle them) (Igor Bogomazov)
  • http basic authentication handler (Paweł Zuzelski)
  • Plugins can now share non-function objects through the export mechanism (Mason Larobina)
  • New uzbl-tabbed events: NEW_BG_TAB, NEW_TAB_NEXT, NEW_BG_TAB_NEXT to
    support opening tab next to current and background tabs (Dmytro Milinevskyy)
  • eval_js: print file where the error occured (Simon Lipp)
  • reset the keycmd on load start, not commit (fixes irritating keycmd reset when you were typing while a page was loading)
  • urlencode '@' characters when getting in urls from external sources (i.e. xclip) to prevent variable expansion
    (Mason Larobina). this is not a permanent fix. we should not alter the url,
    better escaping system will come some day.
  • fix typo's in zoom binds (Israel Levin)
  • uzbl-tabbed, cookie daemon and EM: don't flush stdout/stderr when not on tty (Israel Levin)
  • check webkit version at runtime, not compiletime (Paweł Zuzelski)
  • fixes in keybinding and related EM plugins (Mason)
  • various (Paweł Zuzelski, Mason, Rob, Dmytro Milinevskyy, me)