Mozilla Labs Ubiquity : mashup while you browse


Recommended Posts

http://labs.mozilla.com/2008/08/introducing-ubiquity/

Ubiquity is a Firefox extension with a similar feel to Launchy or Executor - the "type and find" desktop applications, but it runs within the browser and is more of social networking enhancement than a simple launcher.

You can highlight a locality you have typed in an email, type "map" and you will have a map to paste in your message.

You can translate on-page; search amazon, google, wikipedia, yahoo, youtube, etc.; digg and twitter; lookup and insert yelp review; get the weather; syntax highlight any code you find; and a lot more.

Concept seems to be very useful but i really doubt users will find it easy to use, or else it will became one more geeky stuff :)

That was my worry as well to begin with, but using it I realized that it was extremely intuitive so I'm not gonna write it off as something for "geeks only" just yet.

This is brilliant. The basic functions should be easy enough for even non-geeky users "email to contact", looking up word definitions, weather info etc. work very nicely. As a Gmail addict I have been in love with the "email to" command since the beginning.

Edited by macel
what a geek may think is intuitive may well not be simply because of learned behaviour.

The thing is, there's only so much you can before you have to start breaking certain user interface traditions in order to innovate. It doesn't seem to hard though, and will indeed feel more intuitive to do once they do it a few times (well, as in, once they get used to it, they'll just do it naturally instead of making it seem like a chore).

This is the code for my gmail ubiquity command. To install it just ubiquity "command-editor" then copy and paste the code into the text box on the page that appears and it should just work!

Just typing "gmail" will show you the 5 newest unread emails in your inbox.

If you then type a number up to 20 after gmail it will show you the 5 unread emails after that e.g. 6 will show you emails 6-11.

You can also look at emails with different labels e.g. "label work" or filter results by a contact or email e.g. "email [email protected]".

Clicking on the subject line of the email previews will take you that email.

pressing enter will take you to your inbox or whatever label you are currently looking at.

Note: You have to be logged into gmail for this to work, but you don't need to be on the gmail website.

noun_email_type = new CmdUtils.NounType("type",
  ["unread", "inbox", "starred", "chats", "sent", "drafts", "all", "spam", "trash"]);

CmdUtils.CreateCommand({
  name: "gmail",
  contributors: "Ross Brown",
  description: "Lets you look at your gmail",
  help: "Lets you look at new emails in your gmail account using the gmail atom feed.",
  takes: {StartNumber: noun_arb_text},
  modifiers: {label: noun_arb_text ,type: noun_email_type ,contact: noun_type_contact ,email: noun_arb_text},

  preview: function(pblock, mn, mods) {
    pblock.innerHTML = "Fetching mail";
    if(mods.label.text!=null && mods.label.text!=undefined) {
      var url = "http://mail.google.com/mail/feed/atom/" + mods.label.text;
    } else if(mods.type.text!=null && mods.type.text!=undefined) {
      var url = "http://mail.google.com/mail/feed/atom/" + mods.type.text;
    } else {
      var url = "http://mail.google.com/mail/feed/atom/";
    }

    var EmailSearch = false;
    if(mods.contact.text!=null && mods.contact.text!=undefined) {
      var SearchEmail = mods.contact.text;
      EmailSearch = true;
    } else if(mods.email.text!=null && mods.email.text!=undefined) {
      var SearchEmail = mods.email.text;
      EmailSearch = true;
    }

    jQuery.ajax({
      url: url,
      type: "GET",
      dataType: "xml",
      timeout: 1000,
      error: function(){
         pblock.innerHTML = "Error: Could not get mail";
      },
      success: function(xml){
          var emailNo = 1;
          var intMn = parseInt(mn.text);
          if (isNaN(intMn)) {
            var emailMin = 1;
          } else {
            var emailMin = intMn;
          }
          var emailMax = emailMin + 5;

          pblock.innerHTML = "<style> .title {font-size: 90%;} .subject {font-size: 75%;} .summary {font-size: 60%; font-style: italic;} .info {font-size: 60%;}</style>";

          var searchTitle = jQuery(xml).find('tagline').text();
          if(EmailSearch) {searchTitle += " From: " + SearchEmail;}

          pblock.innerHTML += "<div class='title'>" + searchTitle + " (Showing " + emailMin + "-" + (emailMax-1) + " of " + jQuery(xml).find('fullcount').text() + " messages)</div>";

          jQuery(xml).find('entry').each(function(){
            email = jQuery(this).find('email').text();
            if(EmailSearch!=true || email.indexOf(SearchEmail)!=-1) {
              if(emailMin <= emailNo && emailNo < emailMax) {
                subject = jQuery(this).find('title').text();
                link = jQuery(this).find('link').attr('href');
                name = jQuery(this).find('name').text();
                summary = jQuery(this).find('summary').text();
                modified = jQuery(this).find('modified').text();
                modified = modified.replace("T", " ");
                modified = modified.replace("Z", "");
                modified = modified.replace(/-/g, "/");

                pblock.innerHTML += "<p><a href='" + link + "'><div class='subject'>" + subject + "</div>";
                //For some reason the </a> tag acts like <p> here//ail
                pblock.innerHTML += "<div class='info'>From: " + name + " (<a href='mailto:" + email + "'>" + email + ") - " + modified + "</div>";
                pblock.innerHTML += "<div class='summary'>" + summary + "</div>";
                pblock.innerHTML += "</p>";
              }
              emailNo++;
            }
          });
      }
    });
  },
  execute: function(mn, mods) {
    if(mods.label.text!=null && mods.label.text!=undefined && mods.label.text!="") {
      Utils.openUrlInBrowser("http://mail.google.com/mail/#label/" + mods.label.text);
    } else if(mods.type.text!=null && mods.type.text!=undefined) {
      Utils.openUrlInBrowser("http://mail.google.com/mail/#" + mods.type.text);
    } else {
      Utils.openUrlInBrowser("http://mail.google.com/mail/");
    }
  }
});

Maybe a toolbar button / drop down menu with a list of common tasks would make it more user friendly?

If you ubiquity "command-list" or navigate to "chrome://ubiquity/content/cmdlist.html" there is a list of all the available commands you have for ubiquity.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Apple CEO Tim Cook confirms looming price hikes due to memory shortages by Hamid Ganji Image via Apple Memory and chip shortages have led to significant price increases for electronics over the past year, and it seems that more hikes are on the way for upcoming smartphones and computers. Apple CEO Tim Cook has confirmed that the company is planning to increase the prices of some of its products due to the ongoing memory and storage shortages. In an interview with The Wall Street Journal, Cook confirmed the looming price hikes for Apple’s future products, adding that “Unfortunately, price increases are unavoidable.” He also said the company is doing its best to “mitigate the huge increases that are being passed to us, and we’ve been trying to shield our customers from the increases, but the situation has become unsustainable.” The Apple CEO also noted that the allocation of a large portion of memory chips to AI companies has contributed to shortages in the market, resulting in lower supply at a time when demand for devices remains high. “We definitely need memory pricing and supply to return to reasonable levels for consumer products. That’s the bottom line,” Cook said. Cook also added that Apple is ready to use its vast cash reserves to help boost supply in the market because additional production capacity is needed. While he declined to specify how Apple plans to do that, he said the company will not build its own memory and storage factories despite its financial resources and silicon expertise. Cook did not provide further details on the scale of the price increases or which Apple products would be affected, though iPads and Macs could see higher prices sooner than other products. Apple’s next product launch event is scheduled for September, when the company is expected to unveil the iPhone 18 Pro, iPhone 18 Pro Max, and its first foldable iPhone. It remains unclear whether the upcoming iPhones will be affected by the price increases, but given the current memory shortage, higher prices seem increasingly likely. There is currently no clear timeline for the end of the memory shortage. Samsung, one of the world’s three largest memory chip manufacturers, recently said the shortage could persist for several more years.
    • Downloads does not equal actual usage, even less when the app is pre-installed in some Galaxy phones.
    • +1000 to this, don't understand why they added that margin around the top bar, even the close button is a PITA to click without aiming. Ofc, this is just preview and hopefully they will revert such odd UX decision before hitting final version.
    • so the people who bought this will get a refund?
  • Recent Achievements

    • One Month Later
      eurospharma62 earned a badge
      One Month Later
    • Week One Done
      With What earned a badge
      Week One Done
    • Week One Done
      Harris Gilbert earned a badge
      Week One Done
    • One Month Later
      Vincian earned a badge
      One Month Later
    • First Post
      Jocimo earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      542
    2. 2
      +Edouard
      167
    3. 3
      PsYcHoKiLLa
      86
    4. 4
      Steven P.
      64
    5. 5
      ATLien_0
      64
  • Tell a friend

    Love Neowin? Tell a friend!