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

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.


2011.11.28: 28 de Noviembre


We've added a toggle command that cycles a variable through a list of values:

# you can give the command a list of values to toggle between
# this keybinding will enable/disable a proxy
@cbind -pr = toggle proxy_url 'http://localhost:8123/' ''

# if you have several proxies you could cycle between them by passing more
# urls to the command.

# numeric variables default to toggling between 0 and 1.
# this keybinding will turn the status bar on/off.
#   (the toggle_status command still exists, but is deprecated)
@cbind  t   = toggle show_status

Uzbl can now do very basic SSL verification. Two new variables have been added: ssl_verify tells uzbl whether to check SSL certificates, and ssl_ca_file tells uzbl which certificate authority (CA) certificates to verify against.

Note: ssl_ca_file needs to be correctly set for any verification to be performed!

The UI for an SSL verification failure is really awful, it just pops up a rather confusing error message. I wanted to do much more with this, but at this point it's just better to have anything.

A new mode has been added to the scroll command, you can scroll to an absolute location.

# scrolls to 50 pixels from the top of the page
scroll vertical 50!

The default home page has some advice on what to do once you've got uzbl installed, and I've added a keybinding cheat sheet to the website.

We have big plans in the works for the next few months. A major refactor of the event manager has been completed (it would have been in this release but I need to put more thought into the installation process). And the massive task that I've been dreading - a complete rewrite of the command language - is well underway.