Sketchbook: Using Ubiquity with a mouse

January 15, 2009 ⋅ 1 Comment »

Lately, I’ve been finding Ubiquity to be pretty handy. But honestly, I only use a few of the commands on a regular basis: tinyurl, map, and define. I use Ubiquity in these cases because it’s significantly faster and easier than what I’d normally have to do. On the other hand, I don’t really find it easier to use Ubiquity to do a Google search than to just open up a new tab and hit Ctrl-K.

What I find cool about Ubuity is not that it’s “a command line for the web”, but that it provides a much simpler way to extend Firefox. To reach its full potential, I think it needs to move beyond the command line — which is why I was glad to see Aza Raskin (one of Ubiquity’s creators) blogging about making Ubiquity more mouse-oriented (see here and here).

The Concept

In Aza’s proposal, the main way Ubiquity would be accessed by the mouse is through a “badge” that appears beside the selected text, as in the photo below:

Ubiquity badge beside selected text

When the badge is clicked on, the page slides to the left to reveal the Ubiquity pane. Take a look at Aza’s video to see what I mean:


Mouse-Based Ubiquity from Aza Raskin on Vimeo.

Thoughts

The badge-with-selected-text behaviour can be incredibly annoying (e.g. Snap previews), but it can also be done well (e.g., nytimes.com). As implemented in Aza’s prototype, it’s very subtle, so I think it could work.

But there also needs to be a way to bring up Ubiquity without selecting some text. And whatever that is — a toolbar button, a context menu item, etc. — it’s going to be something completely different from this badge. It’s already a problem that Ubiquity doesn’t integrate into your regular workflow, and having two separate ways of accessing Ubiquity would only make things worse, in my opinion.

As for the slide-over effect, I’m not sure I understand the advantage over a translucent overlay like Ubiquity currently uses. And I think that if Ubiquity is invoked with the mouse, it should look as similar as possible to when it’s invoked with the keyboard, providing a smooth transition from mouse-based use to keyboard-based use.

Alternative Ideas

One possibility is for Ubiquity to have a dedicated toolbar button, like many extensions do. When the user clicks the button, the Ubiquity pane pops up or slides out. If we want to call attention to Ubiquity when text is selected, the button could change it’s icon in a subtle way, getting more colourful, or even glowing or pulsing.

There are other ways Ubiquity could be hooked into the Firefox UI. A Ubiquity bar could replace the search bar (since Ubiquity can do search anyways). Or maybe Ubiquity deserves its own pseudo-tab? See the sketches below:

IMG_1522.JPG

Panel Layout

The real hard part about a mouse-based Ubiquity is figuring out how commands would be accessed using the mouse. Since Ubiquity is essentially a command-line interface, it can easily scale to handle dozens or hundreds of commands. It’s harder to imagine how that can be done with a mouse-based interface.

To complicate things, there’s no obvious way of grouping Ubiquity commands. Do you group them by verb? e.g. search, post, convert, translate? Or do you group them by site? Or…? And how do new commands fit into that picture? Overall, I think trying to fit commands into a static hierarchy is a losing proposition.

A Ubiquity user needs to be able to access all of their commands, but it doesn’t need to be especially quick to access any arbitrary command. Most people probably have 5 - 10 commands that they use most frequently (it would be nice to have some real numbers on this — Test Pilot anyone?). Those commands should be quick to access. For other commands, I think it’s okay if it’s not as quick.

I don’t have a complete design in mind, but I’ve sketched up a few ideas:

Ubiquity Mouse Ideas

Any thoughts?


1 Comments:

  1. Pat - January 15, 2009:

    Hey I'm working on this thing called unstik.com It might be a good way to put all those commands into more of a 2D space. I can imagine that sliding side being a container for your data and not only a language based interface.

    What if it maintained a vocabulary of things as well as commands. Verbs(commands) as well as nouns(urls)