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 populated 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

2016.02.28: uzbl 0.9

Uzbl version 0.9.0 is relased.

With a lot of big refactoring and smaller patches piling up over the past years this release is, needless to say, way overdue.

So what's with the version number? Why not 1.0? We wanted to make a 1.0 the version with fully supported WebKit2, but this is not that. In fact WebKit2 support is completely removed from 0.9 to let us focus on getting something stable.

With 179 files changed, 20242 insertions(+), 10994 deletions(-) the full list of changes would be much to long include here, instead here's a small overview.

  • A big refactor and clean-up of core
  • An almost rewrite of the python event-manager
  • Restructured and renamed commands for better consistency
  • Support for composing characters using dead keys
  • And various assorted bug fixes

The new release is available on github. Also make sure to read the upgrading instructions if upgrading from earlier versions.

Looking ahead WebKit2 is the next big challenge and the plan is to start building uzbl 1.0 in the next branch that will only support WebKit2 but still with the same API towards scripts etc. as this release.


2012.05.14: World Naked Gardening Day


This release is mostly fixes for bugs.

  • copy and paste behaves less strangely
  • fancy textareas perform better
  • by default Uzbl passes multiple clicks through to Webkit; there's a handle_multi_click variable that can be set so that you can do your own handling
  • cookies.txt is now created chmod o-r so that other users on your system cannot access it. (Existing cookie files will have their permissions changed.)
  • the back and forward commands can now take a numeric argument to go back or forward multiple steps

In the development version we've rewritten the event manager in Python 3 and exposed more Webkit functionality.