Meet Uzbl — a Web Browser With the Unix Philosophy
DigDuality writes "Dieter@be over at Arch Linux forums, a release engineer for Arch Linux, got inspired by this post. The idea? To create a browser based on the Unix philosophy: 'Write programs that do one thing and do it well, programs that work well together, programs to handle text streams because that is a universal interface,' among other points. The result? A fast, low-resource browser named Uzbl, based on WebKit, which passes the Acid3 Test with a perfect score. The browser is controlled (by default) by vim-like keybindings, not too dissimilar to vimperator for Firefox. Things like URL changing, loading/saving of bookmarks, saving history, and downloads are handled through external scripts that you write (though the Uzbl software does come with some nice scripts for you to use). It fits great in a tiling window manager and plays extremely well with dmenu. The learning curve is a bit steep, but once you get used to it, it's smooth sailing. Not bad for alpha software. Though built for Arch, it has been reported to work on Ubuntu."
I'm still using my computer!
Unpretentious Sydney reviews by unqualified Sydney reviewers
This is a really fun web browser to tinker with. However, I'd recommend people should use a backup browser until they get it up and functioning to their specific needs. I'm still trying to work around with the cookies scripts, myself.
http://sourcemage.org/ - Have fun
Worse is better!
I suggest NUZBL.
Tubby or not tubby. Fat is the question
So it's not a web browser, but rather a HTML rendering widget you can use to write a web browser, or use in other programs? I think .NET has one of those based on the I.E engine...
Come as you are, do what you must, be who you will.
It can load up over a thousand web site simultaneously without a slowdown, but if you want to play a full screen Flash video, you're out of luck.
Novel ideas usually don't live on by themselves unless they become useful. The worst thing the developers did (besides the name) was create a "steep learning curve" for the common web browser. The best thing the developers could do is work with an existing product that already has market share and works great like Chrome (also based on Webkit) and make their additions to it in support of better key bindings.
They really really need a new name. There's no way that thing is going to be marketed successfully. Not even if the software itself was able to power web4.0 apps, skipping web3.0 alltogether.
.sig: No such file or directory
I'm very tempted to try it, but it has those nauseating, voodoo-like vi keybindings. What's wrong with using the sweet and pure emacs keybindings? Well, I'm going to go take a look now and see if that's configurable.
MODERATOR HINT: I'm guilty of attempted humor, not flamebait.
Caveat Utilitor
it should be called WHARRGARBL
http://1.bp.blogspot.com/_Qyqu3EmtMgM/SLNFEcR6nZI/AAAAAAAAAE0/ezZhK5pfyKY/s400/dog.jpg
The Unix philosophy is to name things as if you were throwing up? *UZBL* *wipes mouth*
About damn time, I say. For the past few years I have browsed the web with hundreds of tabs at a time. Firefox tends to crash after 50 tabs. Opera tends to crash at about 450 tabs. Some of this varies with RAM, but we're all familiar with the firefox single-thread issues, which really puts a downer on things. Let the window manager do its job: tabbing is for losers. Also what's with the insistence on keeping all tabs in RAM anyway?
.. in particular, I hate the web, surfraw is great, if it only worked. Web scraping utilities don't always work because webmasters insist on changing layouts, templates, HTML, and don't understand how to make long-term APIs for their content. So, my plan is to make something like xpather (from firefox) that allows a user to select elements on a page and figure out the xpath to retrieve the data. This can be dumped into a standard scraper definition file format or something, and then uzbl only has to pop up whenever some idiot changes a web page. Until then, these scrapers harvest data for me.
I've been working on some scripts to use with uzbl
Then all of us web-haters can send these xpath scraper template files around and live in harmony, or something.
Does it run on Windows?
Populus vult decipi, ergo decipiatur...
"Force shits upon Reason's back." - Poor Richard's Almanac
To anyone who wants to try it out on Ubuntu. I'm sure it will work for other platforms too :)
http://kagashe.blogspot.com/2009/06/uzbl-new-usable-browser-on-ubuntu-904.html
The learning curve is a bit steep...
Yup, say no more - that's the Unix philosophy in spades.
#DeleteChrome
I like the idea, and I'd love to play with it a bit, but there are a few stupid design decisions:
Why don't you just use a reasonable config by default?
There really is no excuse for this. I mean, yes, I can understand where not everyone would want that "reasonable default", but that's why it's a default.
We don't want to store anything "automagically" in the users home. Some people prefer different file/directory layouts
Uhm... ~/.uzbl? How difficult is that? And if you don't like it, rm -rf ~/.uzbl!
Or just create an example script that sets up the default config, and put it in your FAQ.
We considered the option of having a global '/etc/uzbl' which user specific ones could override but that would overcomplicate things.
I'm sorry, but even mplayer is officially friendlier than uzbl. How the fuck is it "complicated" to read one config file, then another?
Uzbl itself doesn't use much gtk stuff (only the statusbar) so we could do without gtk. But Webkit needs a widget toolkit to create widgets (think javascript popups, html forms etc). Officially, it also supports QT and wxwigdets.
So, why doesn't uzbl also support these options? I'm using KDE, so Qt makes sense.
Uzbl.run( )
command is any uzbl command as defined above
return value: a string, either empty or containing the output of the command. Very few commands return their output currently, including js, script, and print.
They obviously realize that JS runs in a single thread. So the obvious implementation here would be to use a callback, not a return value, so you don't block the entire page while you run that script.
I mean, I want to like it, but that's a number of facepalms right off the bat, so I think I'll stick with Chrome until I have time to fix them.
Don't thank God, thank a doctor!
http://en.wikipedia.org/wiki/Lynx_(web_browser)
http://lynx.isc.org/ ---home_page
Politics is Treachery, Religion is Brainwashing
It's a toy.
As noted in the summary, there's a firefox extension for vim-like keybindings. Arora already provides a lightweight QTWebKit based browser and we already have lynx, links and w3m. WebKit is C++ and not exactly what I'd call lightweight. NetSurf OTH is lightweight, written in C and modular. Dillo switched to fltk, but I assume their backend code is still in C? These codebases would lend themselves better to creating a unix-like browser; one using separate processes interconnected via IPC. Why anybody would want to do such a thing is an exercise left to the reader.
I struggle to see how uzbl is unix-like when a single monolithic program (WebKit) handles the parsing, layout and rendering for the whole thing. Of course, the "unix like" paradigm never applied to desktop applications (there's a reason so few people run Plan9).
What are you doing that requires 450 or even 50 tabs for that matter? You sound like an RMS nutjob.
Only the State obtains its revenue by coercion. - Murray Rothbard
http://slashdot.org/article.pl?sid=98/02/24/114700
11 year old dupe article.
Hmmm... as an aside... wonder why no posts there.
Cwm, fjord-bank glyphs vext quiz
It seems to me that this uzbl thing is basically a page-rendering widget, based on webkit, that is made to allow interested hackers to quickly develop their own, totally customized user interface. They give you the "browser", but you are pretty much left to design and create your own systems for cookie management, bookmarks, history, navigation, etc.
Sounds like I might have fun doing that if I ever had that much spare time. More likely, I would find myself using it as a convenient way to embed Webkit rendering into some app I was developing.
Censorship is the opposite of education. If neo-darwinism were defensible, people would not need to try and censor ID.
This browser is simply a wrapper around Webkit - so things like passing Acid3 with a 100/100 score is something that it inherits by default. It's not like the developers of this project did anything in particular, other than chose to use Webkit, to make it pass Acid3 or be standards compliant in other areas...
As mentioned above, Webkit isn't the most unix-like unix software being a big, monolithic program written in C++ .
All this project does is wrap a purposely obtuse front-end around a popular, open source browser engine.
Specialist Mac support for creative pros, Melbourne
A single executable that forms part of a UNIX application doesn't take nearly as much physical space as a dedicated device. It takes more pockets to carry a dedicated phone, a Nintendo DS, an MP3 player, etc.
Let the window manager do its job: tabbing is for losers.
Firefox became popular back when Windows 98 was still supported. In Windows 98, there was a concept of "System Resources", involving two 65,536-byte heaps called "user" and "gdi". A new window took a lot more out of each heap than a new tab.
If it does more than wget, doesn't that mean it already has too many features?
Notepad is, and was designed to be, an extremely basic text editor. It doesn't have lots of features not because those would necessarily make it hard to use, but because they'd take resources to develop. It is just a simple program to display a text file, little more.
Now compare Vim to something like UltraEdit. Here you have a tons of features. Maybe even more than Vim has. However it is still simple to use the basics. You can fire it up and open up a file and edit it with no more effort than notepad. It is easy to do the simple stuff.
The real mark of well designed complex software is where the learning curve is variable, meaning it is only as steep as it needs to be for a given thing. Simple lings are easy to learn, more complex things are harder. You don't have to bash your head against a wall learning all sorts of complicated things to accomplish the basics. The complex capability is there, but it doesn't interfere with simple stuff.
That's why something like Vi fails to impress me. When I got my current job, I had to learn about it, since it is the only text editor that comes with Solaris by default. I was annoyed with it as it is the first and only text editor I've ever encountered that I couldn't edit text in without a manual. I tried to use it, and couldn't make it work. Our Solaris guy had to show me how it worked. He, like you, seemed to assume I'd love it once I learned about it because of its power. I challenged him to show me something it could do that UltraEdit couldn't. He wasn't able to come up with anything.
The real challenge to good software is to make things as easy as possible, and make it so the complicated doesn't interfere with the simple.
Most people really don't want "a steep learning curve". We have enough to do already, this thing will fly like a lead balloon! ;-( Bobby B
I wouldn't be surprised to find that a tab required almost as much system resources as creating a new window
I seem to remember that with rsrcmtr open to show the percentages, opening five new tabs in Firefox 2 took noticeably less resources than opening five new windows in Firefox 2. I can't give you exact numbers anymore since I converted my old Win98se laptop to Puppy Linux and my old WinME box to XP.
I spent a few days playing around with uzbl ( the git repo is still on my computer ). It's nice and I can't wait for it to mature more but right now Vimperator + Gecko is what I'll be sticking with. uzbl is kind of slow and the the ui was not very pretty but it might have been the way I wrote the status_format, not sure. I also was having problems using it in tiling mode with Awesome WM. Also, they need better docs. I'm sure after uzbl and webkit matures more I might even replace vimperator with it.
It is surprisingly useful and fits well within just about any minimalist desktop setup. As it is it has a little ways to go before it's really a good substitute as the main browser, but I'll make sure to always have it installed now.
Little programs connected by pipes, right. Back in 1978, that was kind of cool. Anyone remember when you got multiple columns from ls by writing ls | mc ? "ls" originally just produced a one entry per line list; if you wanted multiple columns, you used the "mc" filter to create them. Now, the feature list of "ls" is huge.
Actually, UNIX and Linux are way behind in inter-program communication. Using pipes for message passing is like hammering a screw. Windows at least has a standard way for programs to talk to each other in a coherent way. UNIX has about five such ways, none of them very good. OpenOffice and GNOME both have reasonable message passing systems, but they're different and don't talk to each other. Attempts to get out of this mess have produced things like AJAX and JSON, which are widely used and ugly, and more elegant schemes like Google's message marshaling system, used by few outside Google.
It works on almost all distributions what just has needed depencies. Do not market Ubuntu again as somekind special distribution (it has less users than Fedora, wonder why... http://feedproxy.google.com/~r/SourceGuru/~3/4YJnJ4snkn0/ )
As in example, you can find the uzbl from Mandriva (cooker) repository as well, if you want to try it.
I'd probably be too lazy to actually make use of it, though.
On a more serious note:
Why is it, that all the GUI desktops abandoned Unix's philosophies completely and instead went the Windows way (which of course actually is the MacOS/Xerox/$otherProductItGotTakenFrom way)?
I mean, imagine how great it would be, if we had all the tools of Gimp, Openoffice, Firefox Add-ons, etc, as separate entities, only bound to a document / data trough its mime type. You could mash up and reconnect everything at will. Pipe stuff trough that wizard, and then trough that.
Or connect a OOo tool and a Gimp tool trough pipes, and then draw with them, etc.
Imagine it like this:
- A global toolbox with all the
- tools (something you "draw" with),
- wizards (something that you apply to the selection/document) and
- views (a view and controller for the model [file]).
- A window for every view of a file.
- A location bar, showing the current position/selection as an XPath.
- A properties box, showing all the properties of the current element/selection.
- The things in the toolbox would itself be normal files -- scripts or libraries implemented in every language with an API for it to be exact -- that you could show in views, edit with the properties box, apply wizards and tools to, etc.
(Yes I got to this ideas a long time ago. I just got no time or money to implement it. If you do, please tell me. )
You could build your own tools like with shell scripts. And because that would make it much easier to create new apps by slowly growing them, we would get much more innovation. :)
Also it would pose no problem for those noobs who dislike the shell for no reason.
Any sufficiently advanced intelligence is indistinguishable from stupidity.
But it doesn't pass acid2.
At least, not when I try it.
No? Then it's not a browser at all. Today it's impossible to browse the net without eazylist & co. It makes NO sense to change your browser if you switch and immediately get hit with shitloads of ads. That's exactly why I did not switch from Firefox to Opera, no matter how fast Opera is (and was). I don't want to maintain my own list of adblocks, other people did it well. I just want to be subscribed to the best up-to-date set of rules and only Firefox does this seamlessly.
% man uzbl
No manual entry for uzbl
They call it unix way? WTF? I want to know how to use it, I type man uzbl and what? No man page?
Pathetic.
You missed the part about the Unix philosophy, which is "Do one thing, and do it well". It browses the web, apparently very very well. But storing cookies for later use isn't really browsing, now, is it?
Many places in which you need to log in require cookies. It might not be the best approach (though I don't know how well Uzbl handles sessions) but it certainly is widely used. If I can't login to my favorite websites, I can't really browse the internet. At least, not well.
X-axis = learning
Y-axis = time
Therefore, something that has a steep learning curve is *easy* to learn.
It would be nice to have the option to mark the post as "flame-bait" but not subtract rating points.
Indeed. Sometimes, modding "+1 flame-fu" would be appropriate, if it were possible.
Those who can make you believe absurdities can make you commit atrocities. - Voltaire
It sounds like it has a less steep learning curve than Firefox. And what you have to learn is 99.9% useful outside the browser.
Lets face it: writing extensions for Firefox is hell. The API is stupid and you usually have to read the Firefox source code because you need something that is not documented (and never will be). And the API is very unstable. Nowadays there is a lot of other applications that mimics the Firefox UI, so you learn something that is useful outside the browser, but it is usually a bad interface decision for that application.
Without extensions, Firefox sucks. Really, really sucks. It's slow, it's unresponsive, it has an inconsistent and complicated UI with a steep learning curve (that nobody thinks about because it is "standard" and everybody already know how to use it, except those who learn it for the first time but they don't understand that it is unecessery hard to use/learn), keyboard focus is always at the wrong place, it's crash prone, it's resource hungry, ...
With extensions, it depends. If you have to write them yourself, use Opera (you're good at/want to learn C/Javascript) or perhaps Uzbl (you're good at/want to learn UNIX scripting) or HV3 (you're good at/want to learn TCL+TK), or some other browser that is easier to extend. If the functionality already exist AND if the functionality you need is not allready implement in a better browser (it usually is in Opera), then Firefox can be actually useful.
Usually, the only "good" reason to use Firefox is that a lot of web pages are coded so that they only work in Firefox or IE. You can let your browser masquerade as Firefox, and it lessens the pain considerably, but it is impossible for other browsers to mimic all the bugs, quirks and taken for granted platform dependent behaviour in Firefox. Most web pages written for Firefox is not standards compliant, not complaint to proposed standards or even complaint to documented extensions for Firefox.
I don't know where everyone has gotten this "bad_UI == unix" idea from, except maybe from wishful thinking due to denial that Unices need a UI update.
The only "philosophy" unix has about software design is that tools should be orthogonal, as simple as REASONABLE for a task, and interoperable with tools for other tasks, and that some sort of UI should let you easily combine their power.
How does that fit into the modern GUI? As scriptable components, like COM on windows or DCOM/DBUS in KDE. In other words, not single-channel text streams and pipes like this so-called browser promotes or old-style command-line tools promote, but modern objects with clear object-oriented interfaces. However, even after unix gets that, it needs some easy way to link the things together. Where's the thing to link them together? The closest thing I've seen would be Automator, and that's for OS X, not standard unix.
I like unix as much as anyone, but really... Unix people really need to stop shouting about the unix philosophy until they start being the best at it again.
Web browsers essentially do four things: ask for pages (possibly when you click on a link), render pages, embed plugins, and run scripts.
HTTP, on the other hand, does eight things: OPTIONS, HEAD, GET, POST, PUT, DELETE, TRACE and CONNECT.
A complex modern browser could easily be split into separate http and renderer components (Konqueror may work this way), and possibly many simpler components than that.
Didn't you ever want to automate something on the web without starting from scratch?
So what if it is not finished.
It might be good enough.