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

    • Glad these prices are starting to come down, but that is still crazy. I bought the 2TB 9100 Pro (slightly more expensive version with PCIe 5.0) last year for $240.
    • The 2TB Samsung 990 PRO NVMe SSD hits lowest price in over three months by Sayan Sen Yesterday, we covered a really good deal wherein you can get a 4TB TeamGroup T-FORCE G50 NVMe PCIe Gen4 SSD for a low price of just $400 with a special discount coupon. That's just $100 per TB, making it a very good offer during these hard times. The deal is still live, so you can check it out in its dedicated article here if you do not want to miss out. Meanwhile, if you don't have that kind of budget but still wish to buy an SSD for a good price, the 2TB variant of the TeamGroup SSD at $280 its lowest price in over three months. Meanwhile, those seeking 2TB but faster performance can check out Samsung's 990 PRO, which has hit the lowest price also in the last quarter or so, as it's on sale for $370 (purchase links under the specs table down below). Thus, you want a faster drive, get the 990 Pro, or you want more capacity, grab the TeamGroup 4TB linked in the first para. The 990 PRO is a PCIe Gen4 NVMe SSD and still one of the fastest drives available today for under $500. Speaking of fast, sequential reads and writes are rated at 7450 MB/s and 6900 MB/s, respectively. The random throughputs for reads and writes are 1400K IOPS and 1550K IOPS, respectively. The 990 PRO is based on Samsung's 7th Gen V-NAND flash, and it too is TLC. It packs 2 gigs of LPDDR4 DRAM cache, which helps the random performance. The endurance rating for this is 1200 TBW (terabytes written), which should be sufficient for most users. The Samsung 990 PRO is compatible with the PlayStation 5, but if you are going to use the 990 PRO on a PC, check out the Samsung Magician app that lets you track your drive's health, update its firmware, customize various settings, and more. The tech specs are given below: Specification TeamGroup T-FORCE G50 2TB Samsung 990 PRO 2TB Interface PCIe 4.0 x4, NVMe 1.4 PCIe Gen 4.0 x4, NVMe 2.0 Form Factor M.2 2280 M.2 2280 Controller InnoGrit Controller Samsung In-house Controller NAND Flash 3D TLC 3D TLC DRAM Cache None (HMB supported) 2GB LPDDR4 Sequential Read (Max) 5,000 MB/s 7,450 MB/s Sequential Write (Max) 4,500 MB/s 6,900 MB/s Random Read (4K) Up to 600,000 IOPS Up to 1,400,000 IOPS Random Write (4K) Up to 700,000 IOPS Up to 1,550,000 IOPS TBW (Endurance) 1,300 TBW 1,200 TBW MTBF 3,000,000 hours 1,500,000 hours Operating Temperature 0°C to 70°C 0°C to 70°C Storage Temperature -40°C to 85°C -40°C to 85°C Shock Resistance 1,500G / 0.5ms 1,500G / 0.5ms Heatsink Patented Graphene Heat Spreader No Get them at the links below: Samsung 990 PRO SSD 2TB (MZ-V9P2T0B/AM): $369.99 (Sold and Shipped by Amazon US) TEAMGROUP T-Force G50 2TB SSD (TM8FFE002T0C129): $279.99 (Sold by TeamGroup, Shipped by Amazon US) Good to know This Amazon deal is U.S. specific, and not available in other regions unless specified. We only use first-party seller links (at the time of article publishing); ensure that you purchase from a first-party seller link only. Check out Today's Deals on Amazon | or our recent tech deals. Become a Prime member (for Students or SNAP) via Neowin Get Prime Access - Prime for half price (for qualifying Medicaid, EBT, SNAP) Subscribe to Prime Video, Audible Plus, Music Unlimited or Kindle Unlimited via Neowin As an Amazon Associate, we earn from qualifying purchases.
    • If you can't spell a simple word that 2nd graders learn, your entire argument is suspect.
    • And here goes the "Won't someone think of the children" brigade. Get stuffed mate. This has NOTHING to do with making the internet safe. It's about tracking adults, spying on your online activity, and sending the boys around when they don't like something you post. Also, again, parliament have voted TWICE against this, and Starmer is going ahead anyway. THAT is anti-democratic bullsh**. They will use this law to track you, they will use this law to control you, and they will use this law to punish you if they don't like what you do, even if it's legal. And your data? Say bye bye to that. It'll be on the darkweb in weeks. I'm not some rando online. I've been an IT professional for 40 years, many of it in security. I know exactly what this means and what will happen to your data. I do not consent and I will not comply.
    • "...but it may not be Microsoft's fault" seems like a reasonable way to tease what is going on without leaving the user with a false impression that an update is the problem. A title isn't a summery, it is meant to entice the user to read the article. It should not contain a misleading premise; which this title does not. You could maybe complain that the first paragraph should have included that detail. The writing style popularized over 100 years ago in newspapers will cover the most important information as soon as possible with details and nuance added later; the idea being that with each new paragraph you have less of the reader's focus.
  • Recent Achievements

    • First Post
      Jocimo earned a badge
      First Post
    • Week One Done
      suprememobiles48 earned a badge
      Week One Done
    • One Month Later
      Windows Guy earned a badge
      One Month Later
    • One Month Later
      Prasann earned a badge
      One Month Later
    • Week One Done
      Prasann earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      520
    2. 2
      +Edouard
      174
    3. 3
      PsYcHoKiLLa
      90
    4. 4
      Steven P.
      81
    5. 5
      ATLien_0
      70
  • Tell a friend

    Love Neowin? Tell a friend!