this is a proposal for a new extension API to would allow invoking
extensions by entering text in the Omnibar. In brief:
[☆| gtalk dilbert ] // user enters "gtalk dilbert"
in the omni-bar and hits Enter
// behind the scenes, ExtensionsService is queried for one that has
registered "gtalk" as its trigger keyword.
// The extension is then sent the contents of Omnibox, which it uses
to do its thing, for example:
+---------------+ // extension opens Gmail, pops ups a chat with
Dilbert
|Gmail | // and focuses the textarea.
| .......... |
| .......... |
| +-------+
| |Dilbert|
| | |
| | |
| |[# ]|
+-------+-------+
This would allow extensions to register interest in processing user
input from the Omnibox. The basic premise is simple enough; I for one
love the Omnibar and off the top of my head I can think of half a
dozen different ways to put it to even heavier use through extensions
(see [1] for a couple more use cases), but I suspect it would be a
fairly major feature to consider adding. I'm willing to dig down into
the code base and start implementing it but I'd really appreciate a
few pointers first. Should this idea be pursued? Does it have a
future in Chromium?
---
[1] http://groups.google.com/a/chromium.org/group/chromium-discuss/browse_thread/thread/267ca3820b450807
More thoughts on this and a few use cases written in a case of a
severe sleep deprivation; caveat emptor.
We've definitely thought along these lines before, and I personally
think something like this would be a really great addition to the
extension system.
A few thoughts I've had on this idea:
* It would be neat if the keyword ("gtalk" in your example) were
derived automatically from the extension name, and if the omnibox were
clever about matching. So if you have an extension named "Google
Talk", typing "gt" or "gtalk" or "googletalk" would all match. This
also elegantly handles the issue of conflicts.
* It would be cool if the extension could interact with the omnibox
session, rather than just accepting all the input. The way I imagine
this working is that if you type "gtalk", you get all the usual
suggestions, from your history, bookmarks, etc, along with an
additional suggestion for the "Google Talk" extension you have
installed which declares it interacts with the omnibox:
[☆| gt ]
-----------------------------------------------------
[ icon | http://www.google.com/talk ]
[ icon | gtalk ]
[ icon | Google Talk ]
...
If you select the "Google Talk" entry and press "Tab", you enter a new
mode where you've accepted that you're only dealing with the
extension. At this point, the extension could expose additional
information to help the user enter the query. For example, it could
expose how many arguments it wants, or help with autocompleting, or
whatever. So, for the gtalk extension, maybe it takes one argument
which is the person to talk to. The omnibox might change to:
[ icon | Google Talk: <contact name> ]
-----------------------------------------------------
[ icon | Google Talk: b...@gmail.com ]
[ icon | Google Talk: na...@gmail.com ]
[ icon | Google Talk: s...@gmail.com ]
...
And of course as you type, the system could keep sending the current
query to the extension, which could refine the suggestions.
===
As for how to get started, the best thing to do is to fix some smaller
bugs first to get the hang of working on Chromium. You'll have to work
up to bigger features over time. If you're interested, there's more
information on how to get started here:
http://dev.chromium.org/developers
- a
> --
> Chromium Developers mailing list: chromi...@chromium.org
> View archives, change email options, or unsubscribe:
> http://groups.google.com/a/chromium.org/group/chromium-dev
>
--
May be make the users type extension:galk ... (or something similar) to trigger extension from an omnibox? Of course that makes the user type more, but avoids problems Peter mentions.
What if you use <tab> to disambiguate entering extension mode from
doing a search. gtalk<tab>foo would search send "foo" to the gtalk
extension, gtalk<space>foo uses the normal omnibox providers. I think
this also eliminates the need for the "extension:" prefix.
- a
Peter—
what if the extensions don't register as AutocompleteProviders
themselves, but are offered through an internal provider which knows
about extensions' keywords (or names)? That'd keep the ranking system
flexible.
Z
doing a search. gtalk<tab>foo would search send "foo" to the gtalkWhat if you use <tab> to disambiguate entering extension mode from
extension, gtalk<space>foo uses the normal omnibox providers. I think
this also eliminates the need for the "extension:" prefix.
what if the extensions don't register as AutocompleteProviders
themselves, but are offered through an internal provider which knows
about extensions' keywords (or names)? That'd keep the ranking system
flexible.
Sheesh, don't be such a downer :).
I've sketched out some of my thoughts in more detail (thanks Zoran for
inspiring me to think about this again), here:
http://docs.google.com/Doc?docid=0AYUOdFfLVYFRZGZqNnQ2N2RfODFnMzg2a2NmZA&hl=en
I think the idea of entering a mode that exclusively interacts with
the extension solves some of the issues, but maybe I'm just not seeing
them.
Peter, Zoran, I've given you edit access explicitly so that you can
comment. Anyone else, just request access and I'll approve it.
Thanks,
- a