A couple of weeks ago, I switched my default browser from Conkeror to uzbl. It wasn’t that I was dissatisfied with Conkeror per se; more that as I was almost exclusively using vim-like applications, it seemed almost perverse to be browsing with an application that used Emacs-style keybindings. Over time, the simplest operations seemed—in comparison to Vim— to demand ridiculously complex key strokes.
So, I installed uzbl.
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 homepage
Consequently, the default uzbl version is designed to do little more
than browse web pages. It doesn’t handle cookies, manage downloads,
block ads, save bookmarks, or do any of the things that you would expect
of its WebKit kin,
Firefox Safari and Chrome.
This isn’t to say that it can’t do any of these things; like any well-designed UNIX program, it is extensible and interoperable with programs through a range of scripts. The difference is that you get to choose which functionality matters to you, and implement it on an as-needs basis. This makes uzbl very light, very fast, and very powerful.
The version I installed, uzbl-tabbed, ships with a number of default scripts that perform most of the functions that you will need. There is also a scripts page on the wiki that has a growing number of scripts contributed by users.
I installed a couple of Pat Brisbin’s scripts; an ingenious bash script for bookmarking that creates an HTML page of your bookmarks that you can serve locally or remotely (I keep mine on Dropbox so I can access it from my phone as well), and a tidy little download manager.
Like Vim, uzbl is modal; you switch between command and insert mode. By configuring uzbl to use Vim key bindings, you can seamless integrate it into your desktop environment. Here you can see the status bar showing uzbl in command mode, on the Arch forums home page, which has completely loaded (the other figure is the X root window number).
As an Arch Linux user, I’m keen to support a project that has been developed by the Arch community (if you want to see the history of the project, there is a long thread on the Arch boards); but ultimately this software appeals because it is so configurable: you can customize it to your heart’s content (see my config file on my mercurial repo).
There are packages for most of the major distros: give it a go.