Thoughtful, detailed coverage of the Mac, iPhone, and iPad, plus the TidBITS Content Network for Apple consultants.

Consider Me Konfabulated

Some programs defy categorization. Bill Atkinson described HyperCard as a "software erector set," which was actually quite accurate, even if Apple's marketing department kept trying to sell it as a presentation program, a personal information manager, and a combination floor wax/dessert topping.

If I were handing out Software Erector Set awards today, Konfabulator would top my list. Written by Arlo Rose and Perry Clarke and first released a year ago, Konfabulator resists being pigeonholed in exactly the same way HyperCard did because it's both an application runtime engine and a host to highly focused programs written by others. Whereas HyperCard introduced the easy, English-like HyperTalk programming language and the concept of "stacks," Konfabulator relies on JavaScript and calls its programs "Widgets." The comparison isn't perfect, of course, since HyperCard offered basic database capabilities that enabled it to act as a repository for data, whereas Konfabulator is pretty much only a shell in which its Widgets can run (though I think adding a database for Widgets to access could be quite interesting). In short, though, Konfabulator is, as its tagline says, whatever you want it to be.


Building a Better Widget -- Comparisons with HyperCard abound. Konfabulator ships with a set of Widgets that are actually useful, such as a picture frame (because who can see their Desktop picture when they're working, anyway?), a stock ticker, a weather report, a Desktop Trash can, a simple to do list, a floating search bar, and more. But Konfabulator wouldn't be interesting if you were limited to its included Widgets. Arlo and Perry run a Widget Gallery that lists over 500 user-contributed Widgets, and scrolling through the list is utterly reminiscent of poring through lists of HyperCard stacks. Most are silly, of course, such as countdown timers for upcoming movies, but just as with HyperCard stacks, there are a few gems, such as a Widget to create symlinks, a word counter, a process monitor that displays load averages and uptime, a SETI@home statistics reporter, and a lyric scraper that tries to display the lyrics of the current iTunes track. The Widget Gallery lets users rate Widgets and leave comments, and from what I've seen, because that extra data comes from an involved user community, it's quite helpful and to the point.


Few Widgets offer truly unique capabilities that you couldn't find elsewhere, but that's not the point. The point is that individuals can use a common scripting language, sometimes tying in to command-line programs, to create tiny programs that do something useful, interesting, or just plain fun (there are a bunch of small game Widgets). Plus, since Widgets are actually packages (Control-click one and choose Show Package Contents), you can see and modify them to your heart's content. It's exactly like the days of HyperCard, when you could take apart a neat stack to see how it was done.

Many people don't realize that Widgets are modifiable, and probably even more don't realize that Widgets aren't limited to JavaScript. Through a pair of commands - applescript() and runcommand() - Widgets can incorporate AppleScript code (handy for controlling Macintosh applications) and Perl, Ruby, Python or any other command-line scripting engine. So if JavaScript isn't your cup of tea, you can likely still make cool Widgets with another scripting language.

Because Arlo Rose is the guy who introduced themable interfaces to the world with his work at Apple on the Appearance Manager, and later on the utility Kaleidoscope, Konfabulator Widgets take full advantage of Quartz rendering in Mac OS X. That means Widgets aren't restricted to rectangular windows, and you can control their opacity on a per-Widget level. Opacity is actually quite important, since you can choose whether any given Widget will float above all other windows, be the topmost window at any time, act like a normal window, hide beneath all other windows at all times, or graft itself to your Desktop. In Konfabulator 1.5.6, just released, using Expose to reveal the Desktop also reveals Desktop-level Widgets, making it possible for a single click or keystroke to show a host of Konfabulator Widgets that you want out of sight most of the time.

Being able to float a Widget above all other windows or incorporate one onto your Desktop reminds me of palette-based automation utilities. Although creating a Widget is undoubtedly more difficult than constructing a macro in QuicKeys X or iKey, its capabilities are equivalently more powerful. The possibilities abound.

Clicking Widgets -- Widgets provide their own interfaces, which are in most cases limited to visible controls and a Widget Preferences window that's accessible either by Control-clicking the Widget or choosing it from the hierarchical Widget Preferences menu in the Konfabulator "gear" menu in the menubar. Closing a Widget is merely a matter of Control-clicking the Widget and choosing Close Widget (for those Widgets that don't provide a persistent interface, like the iChat Bezel Widget that pops up to tell you when your iChat buddies change state, you can press Control and choose the hidden Widget from Konfabulator's gear menu). You can also use the Konfabulator gear menu to look for new Widgets, open Widgets, set preferences for current Widgets, and quit Konfabulator entirely. Perhaps my main criticism of Konfabulator is that hiding so much of the interface behind contextual menus and modifier keys means that it can be a bit befuddling to use until you internalize the basics of opening, closing, and customizing Widgets.

Each Widget actually runs as a separate instance of the Konfabulator runtime engine, which means that a given Widget is just a normal Mac OS X application, and won't have any more impact on the overall system than any other application. Konfabulator remembers the open Widgets from the last time it was open, so if you put Konfabulator in your Login Items/Startup Items list, it will bring up your last set of Widgets automatically when you login.

In an ideal world I'd learn JavaScript and write some Widgets to monitor my Internet servers and perform other tasks, but that's not going to happen, so I'll leave it to others to write the cool Widgets I can load into Konfabulator. Whether you're capable of writing your own Widgets or just want to enjoy the fruits of the labor of others, Konfabulator is one piece of useful eye candy you'll want to check out.

Konfabulator requires Mac OS X 10.2 or later, with 10.2.3 or later recommended. It costs $25 through Kagi, though you can use it for a while before registering (choose Register from the Konfabulator gear menu).


READERS LIKE YOU! Support TidBITS by becoming a member today!
Check out the perks at <>
Special thanks to David Kondo, James Allen, Vincent Hevern, and David
J Brugger for their generous support!